From ea60acc4b622a65c8290638a986196857036751c Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Thu, 9 Sep 2021 16:42:20 -0500 Subject: [PATCH] provide copy function for MPI_Comm_create_keyval for OpenMPI (#10) --- src/libmisc.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/libmisc.cpp b/src/libmisc.cpp index 6114e44d08..b5362ef4dc 100644 --- a/src/libmisc.cpp +++ b/src/libmisc.cpp @@ -15,7 +15,10 @@ void hosttrace_mpi_set_attr() { #if defined(TIMEMORY_USE_MPI) - static auto _mpi_finalize = [](MPI_Comm, int, void*, void*) { + static auto _mpi_copy = [](MPI_Comm, int, void*, void*, void*, int*) { + return MPI_SUCCESS; + }; + static auto _mpi_fini = [](MPI_Comm, int, void*, void*) { if(mpip_index != std::numeric_limits::max()) comp::deactivate_mpip, hosttrace>( mpip_index); @@ -23,9 +26,11 @@ hosttrace_mpi_set_attr() hosttrace_trace_finalize(); return MPI_SUCCESS; }; - using func_t = int (*)(MPI_Comm, int, void*, void*); - int _comm_key = -1; - if(PMPI_Comm_create_keyval(nullptr, static_cast(_mpi_finalize), &_comm_key, + using copy_func_t = int (*)(MPI_Comm, int, void*, void*, void*, int*); + using fini_func_t = int (*)(MPI_Comm, int, void*, void*); + int _comm_key = -1; + if(PMPI_Comm_create_keyval(static_cast(_mpi_copy), + static_cast(_mpi_fini), &_comm_key, nullptr) == MPI_SUCCESS) PMPI_Comm_set_attr(MPI_COMM_SELF, _comm_key, nullptr); #endif