Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add smpi_execute_flops_benched call
[simgrid.git] / src / smpi / include / private.hpp
index 0ccdc7f..b991c40 100644 (file)
@@ -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