X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8ca88f5944989c937734b5c28bfdd074aa990367..b6dde5ff6f208b83545a4b4e9e81712d0d8617a1:/src/smpi/include/private.hpp diff --git a/src/smpi/include/private.hpp b/src/smpi/include/private.hpp index 0ccdc7f35e..b991c406da 100644 --- a/src/smpi/include/private.hpp +++ b/src/smpi/include/private.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2019. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2020. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -461,6 +461,10 @@ void mpi_file_set_view_(int* fh, long long int* offset, int* etype, int* filetyp void mpi_file_read_(int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr); void mpi_file_write_(int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr); void smpi_init_fortran_types(); +void smpi_execute_flops_(double* flops); +void smpi_execute_flops_benched_(double* flops); +void smpi_execute_(double* duration); +void smpi_execute_benched_(double* duration); } // extern "C" XBT_PRIVATE int smpi_temp_shm_get(); @@ -501,57 +505,58 @@ XBT_PRIVATE void private_execute_flops(double flops); #define CHECK_ARGS(test, errcode, ...) \ if (test) { \ - if(errcode != MPI_SUCCESS) \ + if((errcode) != MPI_SUCCESS) \ XBT_WARN(__VA_ARGS__); \ return (errcode); \ } #define CHECK_MPI_NULL(num, val, err, ptr) \ - CHECK_ARGS(ptr == val, err, \ - "%s: param %d %s cannot be %s", __func__, num, #ptr, #val); + CHECK_ARGS((ptr) == (val), (err), \ + "%s: param %d %s cannot be %s", __func__, (num), _XBT_STRINGIFY(ptr), _XBT_STRINGIFY(val)); #define CHECK_NULL(num,err,buf) \ - CHECK_ARGS(buf == nullptr, err, \ - "%s: param %d %s cannot be NULL", __func__, num, #buf); + CHECK_ARGS((buf) == nullptr, (err), \ + "%s: param %d %s cannot be NULL", __func__, (num), _XBT_STRINGIFY(buf)); #define CHECK_NEGATIVE(num, err, val) \ - CHECK_ARGS(val < 0, err, \ - "%s: param %d %s cannot be negative", __func__, num, #val); + CHECK_ARGS((val) < 0, (err), \ + "%s: param %d %s cannot be negative", __func__, (num), _XBT_STRINGIFY(val)); #define CHECK_COMM2(num, comm) \ - CHECK_MPI_NULL(num, MPI_COMM_NULL, MPI_ERR_COMM, comm) + CHECK_MPI_NULL((num), MPI_COMM_NULL, MPI_ERR_COMM, (comm)) #define CHECK_COMM(num) \ - CHECK_COMM2(num, comm) + CHECK_COMM2((num), comm) #define CHECK_REQUEST(num) \ CHECK_ARGS(request == nullptr, MPI_ERR_REQUEST, \ - "%s: param %d request cannot be NULL",__func__, num); + "%s: param %d request cannot be NULL",__func__, (num)); #define CHECK_BUFFER(num,buf,count) \ - CHECK_ARGS(buf == nullptr && count > 0, MPI_ERR_BUFFER, \ - "%s: param %d %s cannot be NULL if %s > 0",__func__, num, #buf, #count); -#define CHECK_COUNT(num, count) \ - CHECK_NEGATIVE(num, MPI_ERR_COUNT, count) + CHECK_ARGS((buf) == nullptr && (count) > 0, MPI_ERR_BUFFER, \ + "%s: param %d %s cannot be NULL if %s > 0",__func__, (num), _XBT_STRINGIFY(buf), _XBT_STRINGIFY(count)); +#define CHECK_COUNT(num, count) \ + CHECK_NEGATIVE((num), MPI_ERR_COUNT, (count)) #define CHECK_TYPE(num, datatype) \ - CHECK_ARGS((datatype == MPI_DATATYPE_NULL|| not datatype->is_valid()), MPI_ERR_TYPE, \ - "%s: param %d %s cannot be MPI_DATATYPE_NULL or invalid", __func__, num, #datatype); + CHECK_ARGS(((datatype) == MPI_DATATYPE_NULL|| not (datatype)->is_valid()), MPI_ERR_TYPE, \ + "%s: param %d %s cannot be MPI_DATATYPE_NULL or invalid", __func__, (num), _XBT_STRINGIFY(datatype)); #define CHECK_OP(num) \ - CHECK_MPI_NULL(num, MPI_OP_NULL, MPI_ERR_OP, op) + CHECK_MPI_NULL((num), MPI_OP_NULL, MPI_ERR_OP, op) #define CHECK_ROOT(num)\ CHECK_ARGS((root < 0 || root >= comm->size()), MPI_ERR_ROOT, \ - "%s: param %d root (=%d) cannot be negative or larger than communicator size (=%d)", __func__, num, root, \ - comm->size()); + "%s: param %d root (=%d) cannot be negative or larger than communicator size (=%d)", __func__, (num), \ + root, comm->size()); #define CHECK_PROC(num,proc) \ - CHECK_MPI_NULL(num, MPI_PROC_NULL, MPI_SUCCESS, proc) + CHECK_MPI_NULL((num), MPI_PROC_NULL, MPI_SUCCESS, (proc)) #define CHECK_INFO(num,info) \ - CHECK_MPI_NULL(num, MPI_INFO_NULL, MPI_ERR_INFO, info) + CHECK_MPI_NULL((num), MPI_INFO_NULL, MPI_ERR_INFO, (info)) #define CHECK_TAG(num,tag) \ - CHECK_ARGS((tag < 0 && tag != MPI_ANY_TAG), MPI_ERR_TAG, \ - "%s: param %d %s (=%d) cannot be negative", __func__, num, #tag, tag); + CHECK_ARGS(((tag) < 0 && (tag) != MPI_ANY_TAG), MPI_ERR_TAG, \ + "%s: param %d %s (=%d) cannot be negative", __func__, (num), _XBT_STRINGIFY(tag), (tag)); #define CHECK_FILE(num, fh) \ - CHECK_MPI_NULL(num, MPI_FILE_NULL, MPI_ERR_FILE, fh) + CHECK_MPI_NULL((num), MPI_FILE_NULL, MPI_ERR_FILE, (fh)) #define CHECK_OFFSET(num, offset) \ - CHECK_NEGATIVE(num, MPI_ERR_DISP, offset) + CHECK_NEGATIVE((num), MPI_ERR_DISP, (offset)) #define CHECK_GROUP(num, group) \ - CHECK_MPI_NULL(num, MPI_GROUP_NULL, MPI_ERR_GROUP, group) -#define CHECK_WIN(num, group) \ - CHECK_MPI_NULL(num, MPI_WIN_NULL, MPI_ERR_WIN, group) + CHECK_MPI_NULL((num), MPI_GROUP_NULL, MPI_ERR_GROUP, (group)) +#define CHECK_WIN(num, win) \ + CHECK_MPI_NULL((num), MPI_WIN_NULL, MPI_ERR_WIN, (win)) #define CHECK_RANK(num, rank, comm) \ - CHECK_ARGS((rank >= comm->group()->size() || rank <0), MPI_ERR_RANK, \ - "%s: param %d %s (=%d) cannot be < 0 or > %d", __func__, num, #rank, rank, comm->group()->size() ); + CHECK_ARGS(((rank) >= (comm)->group()->size() || (rank) <0), MPI_ERR_RANK, \ + "%s: param %d %s (=%d) cannot be < 0 or > %d", __func__, (num), _XBT_STRINGIFY(rank), \ + (rank), (comm)->group()->size() ); #endif