Skip to content

Commit 0f55955

Browse files
committed
Return code checking of MPI_T_*() calls, and more slective usage of the
interface.
1 parent c8a4059 commit 0f55955

File tree

1 file changed

+44
-6
lines changed

1 file changed

+44
-6
lines changed

src/Infrastructure/VM/src/ESMCI_VMKernel.C

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3126,12 +3126,21 @@ void VMK::logSystem(std::string prefix, ESMC_LogMsgType_Flag msgType){
31263126
ESMC_LogDefault.Write(msg.str(), msgType);
31273127
msg.str(""); // clear
31283128
#ifdef MPICH_VERSION
3129-
msg << prefix << "MPICH_VERSION=" << XSTR(MPICH_VERSION);
3129+
std::string mpich_version(XSTR(MPICH_VERSION));
3130+
mpich_version.erase(
3131+
std::remove(mpich_version.begin(), mpich_version.end(),
3132+
'"'), mpich_version.end());
3133+
msg << prefix << "MPICH_VERSION=" << mpich_version;
31303134
ESMC_LogDefault.Write(msg.str(), msgType);
31313135
msg.str(""); // clear
3136+
if (mpich_version.rfind("3.3", 0) == 0) // broken mpi tools interface
3137+
mpi_t_okay = false;
31323138
#endif
31333139
#ifdef CRAY_MPICH_VERSION
31343140
std::string cray_mpich_version(XSTR(CRAY_MPICH_VERSION));
3141+
cray_mpich_version.erase(
3142+
std::remove(cray_mpich_version.begin(), cray_mpich_version.end(),
3143+
'"'), cray_mpich_version.end());
31353144
msg << prefix << "CRAY_MPICH_VERSION=" << cray_mpich_version;
31363145
ESMC_LogDefault.Write(msg.str(), msgType);
31373146
msg.str(""); // clear
@@ -3143,21 +3152,43 @@ void VMK::logSystem(std::string prefix, ESMC_LogMsgType_Flag msgType){
31433152
ESMC_LogDefault.Write(msg.str(), msgType);
31443153
msg.str(""); // clear
31453154
if (mpi_t_okay){
3155+
int mpi_rc;
31463156
int provided_thread_level;
3147-
MPI_T_init_thread(VM_MPI_THREAD_LEVEL, &provided_thread_level);
3157+
mpi_rc = MPI_T_init_thread(VM_MPI_THREAD_LEVEL, &provided_thread_level);
3158+
if (mpi_rc != MPI_SUCCESS){
3159+
int localrc;
3160+
ESMC_LogDefault.MsgFoundError(ESMC_RC_INTNRL_BAD,
3161+
"MPI_T_init_thread() did not return MPI_SUCCESS.",
3162+
ESMC_CONTEXT, &localrc);
3163+
throw localrc; // bail out with exception
3164+
}
31483165
msg << prefix << "--- VMK::logSystem() MPI Tool Interface Control Vars ---";
31493166
ESMC_LogDefault.Write(msg.str(), msgType);
31503167
int num_cvar;
3151-
MPI_T_cvar_get_num(&num_cvar);
3168+
mpi_rc = MPI_T_cvar_get_num(&num_cvar);
3169+
if (mpi_rc != MPI_SUCCESS){
3170+
int localrc;
3171+
ESMC_LogDefault.MsgFoundError(ESMC_RC_INTNRL_BAD,
3172+
"MPI_T_cvar_get_num() did not return MPI_SUCCESS.",
3173+
ESMC_CONTEXT, &localrc);
3174+
throw localrc; // bail out with exception
3175+
}
31523176
char name[128], desc[1024];
31533177
int nameLen, descLen, verbosity, binding, scope;
31543178
MPI_T_enum enumtype;
31553179
MPI_Datatype datatype;
31563180
for (int i=0; i<num_cvar; i++){
31573181
nameLen = sizeof(name);
31583182
descLen = sizeof(desc);
3159-
MPI_T_cvar_get_info(i, name, &nameLen, &verbosity, &datatype, &enumtype,
3160-
desc, &descLen, &binding, &scope);
3183+
mpi_rc = MPI_T_cvar_get_info(i, name, &nameLen, &verbosity, &datatype,
3184+
&enumtype, desc, &descLen, &binding, &scope);
3185+
if (mpi_rc != MPI_SUCCESS){
3186+
int localrc;
3187+
ESMC_LogDefault.MsgFoundError(ESMC_RC_INTNRL_BAD,
3188+
"MPI_T_cvar_get_info() did not return MPI_SUCCESS.",
3189+
ESMC_CONTEXT, &localrc);
3190+
throw localrc; // bail out with exception
3191+
}
31613192
msg.str(""); // clear
31623193
msg << prefix << "index=" << std::setw(4) << i << std::setw(60) << name
31633194
<< " : " << desc;
@@ -3180,7 +3211,14 @@ void VMK::logSystem(std::string prefix, ESMC_LogMsgType_Flag msgType){
31803211
msg << prefix << "new MPIR_CVAR_NEMESIS_SHM_EAGER_MAX_SZ=" << eagersize;
31813212
ESMC_LogDefault.Write(msg.str(), msgType);
31823213
#endif
3183-
MPI_T_finalize();
3214+
mpi_rc = MPI_T_finalize();
3215+
if (mpi_rc != MPI_SUCCESS){
3216+
int localrc;
3217+
ESMC_LogDefault.MsgFoundError(ESMC_RC_INTNRL_BAD,
3218+
"MPI_T_finalize() did not return MPI_SUCCESS.",
3219+
ESMC_CONTEXT, &localrc);
3220+
throw localrc; // bail out with exception
3221+
}
31843222
}
31853223
#endif
31863224
msg.str(""); // clear

0 commit comments

Comments
 (0)