From 455c9a55d73de1b1842eb8fa3b4a47b17e1dead1 Mon Sep 17 00:00:00 2001 From: Augustin Degomme Date: Mon, 8 Mar 2021 09:10:07 +0100 Subject: [PATCH] generalize previous change to other MPI predefined globals. Except MPI_COMM_WORLD because of its specificities (has to be a variable) --- include/smpi/smpi.h | 56 ++++++++++++++++++++++---------- src/smpi/mpi/smpi_errhandler.cpp | 6 ++-- src/smpi/mpi/smpi_group.cpp | 3 +- src/smpi/mpi/smpi_op.cpp | 33 +++++++++---------- 4 files changed, 57 insertions(+), 41 deletions(-) diff --git a/include/smpi/smpi.h b/include/smpi/smpi.h index da78005458..d9dfe7deae 100644 --- a/include/smpi/smpi.h +++ b/include/smpi/smpi.h @@ -402,27 +402,45 @@ typedef void MPI_User_function(void *invec, void *inoutvec, int *len, MPI_Dataty typedef SMPI_Op *MPI_Op; #define MPI_OP_NULL ((MPI_Op)NULL) -XBT_PUBLIC_DATA MPI_Op MPI_MAX; -XBT_PUBLIC_DATA MPI_Op MPI_MIN; -XBT_PUBLIC_DATA MPI_Op MPI_MAXLOC; -XBT_PUBLIC_DATA MPI_Op MPI_MINLOC; -XBT_PUBLIC_DATA MPI_Op MPI_SUM; -XBT_PUBLIC_DATA MPI_Op MPI_PROD; -XBT_PUBLIC_DATA MPI_Op MPI_LAND; -XBT_PUBLIC_DATA MPI_Op MPI_LOR; -XBT_PUBLIC_DATA MPI_Op MPI_LXOR; -XBT_PUBLIC_DATA MPI_Op MPI_BAND; -XBT_PUBLIC_DATA MPI_Op MPI_BOR; -XBT_PUBLIC_DATA MPI_Op MPI_BXOR; +extern SMPI_Op smpi_MPI_MAX; +extern SMPI_Op smpi_MPI_MIN; +extern SMPI_Op smpi_MPI_MAXLOC; +extern SMPI_Op smpi_MPI_MINLOC; +extern SMPI_Op smpi_MPI_SUM; +extern SMPI_Op smpi_MPI_PROD; +extern SMPI_Op smpi_MPI_LAND; +extern SMPI_Op smpi_MPI_LOR; +extern SMPI_Op smpi_MPI_LXOR; +extern SMPI_Op smpi_MPI_BAND; +extern SMPI_Op smpi_MPI_BOR; +extern SMPI_Op smpi_MPI_BXOR; +extern SMPI_Op smpi_MPI_REPLACE; +extern SMPI_Op smpi_MPI_NO_OP; + +#define MPI_MAX SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MAX) +#define MPI_MIN SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MIN) +#define MPI_MAXLOC SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MAXLOC) +#define MPI_MINLOC SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_MINLOC) +#define MPI_SUM SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_SUM) +#define MPI_PROD SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_PROD) +#define MPI_LAND SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LAND) +#define MPI_LOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LOR) +#define MPI_LXOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_LXOR) +#define MPI_BAND SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BAND) +#define MPI_BOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BOR) +#define MPI_BXOR SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_BXOR) + //For accumulate -XBT_PUBLIC_DATA MPI_Op MPI_REPLACE; -XBT_PUBLIC_DATA MPI_Op MPI_NO_OP; +#define MPI_REPLACE SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_REPLACE) +#define MPI_NO_OP SMPI_PREDEFINED_POINTER(MPI_Op, smpi_MPI_NO_OP) + typedef SMPI_Group* MPI_Group; -#define MPI_GROUP_NULL ((MPI_Group)NULL) +extern SMPI_Group smpi_MPI_GROUP_EMPTY; +#define MPI_GROUP_EMPTY SMPI_PREDEFINED_POINTER(MPI_Group, smpi_MPI_GROUP_EMPTY) -XBT_PUBLIC_DATA MPI_Group MPI_GROUP_EMPTY; +#define MPI_GROUP_NULL ((MPI_Group)NULL) typedef SMPI_Comm* MPI_Comm; @@ -438,8 +456,10 @@ typedef SMPI_Request* MPI_Request; typedef SMPI_Errhandler* MPI_Errhandler; #define MPI_ERRHANDLER_NULL ((MPI_Errhandler)NULL) -XBT_PUBLIC_DATA MPI_Errhandler MPI_ERRORS_RETURN; -XBT_PUBLIC_DATA MPI_Errhandler MPI_ERRORS_ARE_FATAL; +extern SMPI_Errhandler smpi_MPI_ERRORS_RETURN; +#define MPI_ERRORS_RETURN SMPI_PREDEFINED_POINTER(MPI_Errhandler, smpi_MPI_ERRORS_RETURN) +extern SMPI_Errhandler smpi_MPI_ERRORS_ARE_FATAL; +#define MPI_ERRORS_ARE_FATAL SMPI_PREDEFINED_POINTER(MPI_Errhandler, smpi_MPI_ERRORS_ARE_FATAL) typedef enum SMPI_Combiner_enum{ MPI_COMBINER_NAMED, diff --git a/src/smpi/mpi/smpi_errhandler.cpp b/src/smpi/mpi/smpi_errhandler.cpp index 9e237d4257..c62d8449d5 100644 --- a/src/smpi/mpi/smpi_errhandler.cpp +++ b/src/smpi/mpi/smpi_errhandler.cpp @@ -8,10 +8,8 @@ #include -simgrid::smpi::Errhandler mpi_MPI_ERRORS_RETURN; -MPI_Errhandler MPI_ERRORS_RETURN=&mpi_MPI_ERRORS_RETURN; -simgrid::smpi::Errhandler mpi_MPI_ERRORS_ARE_FATAL; -MPI_Errhandler MPI_ERRORS_ARE_FATAL=&mpi_MPI_ERRORS_ARE_FATAL; +simgrid::smpi::Errhandler smpi_MPI_ERRORS_RETURN; +simgrid::smpi::Errhandler smpi_MPI_ERRORS_ARE_FATAL; namespace simgrid{ namespace smpi{ diff --git a/src/smpi/mpi/smpi_group.cpp b/src/smpi/mpi/smpi_group.cpp index b3916edc98..e01112f561 100644 --- a/src/smpi/mpi/smpi_group.cpp +++ b/src/smpi/mpi/smpi_group.cpp @@ -8,8 +8,7 @@ #include "smpi_comm.hpp" #include -simgrid::smpi::Group mpi_MPI_GROUP_EMPTY; -MPI_Group MPI_GROUP_EMPTY=&mpi_MPI_GROUP_EMPTY; +simgrid::smpi::Group smpi_MPI_GROUP_EMPTY; extern XBT_PRIVATE MPI_Comm MPI_COMM_UNINITIALIZED; namespace simgrid{ diff --git a/src/smpi/mpi/smpi_op.cpp b/src/smpi/mpi/smpi_op.cpp index b67f40f799..cda338776c 100644 --- a/src/smpi/mpi/smpi_op.cpp +++ b/src/smpi/mpi/smpi_op.cpp @@ -217,23 +217,22 @@ static void no_func(void*, void*, int*, MPI_Datatype*) } #define CREATE_MPI_OP(name, func) \ - static SMPI_Op _XBT_CONCAT(mpi_, name)(&(func) /* func */, true, true); \ - MPI_Op name = &_XBT_CONCAT(mpi_, name); - -CREATE_MPI_OP(MPI_MAX, max_func) -CREATE_MPI_OP(MPI_MIN, min_func) -CREATE_MPI_OP(MPI_SUM, sum_func) -CREATE_MPI_OP(MPI_PROD, prod_func) -CREATE_MPI_OP(MPI_LAND, land_func) -CREATE_MPI_OP(MPI_LOR, lor_func) -CREATE_MPI_OP(MPI_LXOR, lxor_func) -CREATE_MPI_OP(MPI_BAND, band_func) -CREATE_MPI_OP(MPI_BOR, bor_func) -CREATE_MPI_OP(MPI_BXOR, bxor_func) -CREATE_MPI_OP(MPI_MAXLOC, maxloc_func) -CREATE_MPI_OP(MPI_MINLOC, minloc_func) -CREATE_MPI_OP(MPI_REPLACE, replace_func) -CREATE_MPI_OP(MPI_NO_OP, no_func) + SMPI_Op _XBT_CONCAT(smpi_MPI_, name)(&(func) /* func */, true, true); \ + +CREATE_MPI_OP(MAX, max_func) +CREATE_MPI_OP(MIN, min_func) +CREATE_MPI_OP(SUM, sum_func) +CREATE_MPI_OP(PROD, prod_func) +CREATE_MPI_OP(LAND, land_func) +CREATE_MPI_OP(LOR, lor_func) +CREATE_MPI_OP(LXOR, lxor_func) +CREATE_MPI_OP(BAND, band_func) +CREATE_MPI_OP(BOR, bor_func) +CREATE_MPI_OP(BXOR, bxor_func) +CREATE_MPI_OP(MAXLOC, maxloc_func) +CREATE_MPI_OP(MINLOC, minloc_func) +CREATE_MPI_OP(REPLACE, replace_func) +CREATE_MPI_OP(NO_OP, no_func) namespace simgrid{ namespace smpi{ -- 2.20.1