18#pragma GCC diagnostic push
19#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
44 if(comm == MPI_COMM_NULL) {
75 returnString =
"MPI_SUCCESS";
78 returnString =
"MPI_ERR_COMM";
81 returnString =
"MPI_ERR_GROUP";
84 returnString =
"MPI_ERR_INTERN";
87 returnString =
"MPI_ERR_ARG";
90 returnString =
"MPI_ERR_COUNT";
93 returnString =
"MPI_ERR_TYPE";
96 returnString =
"MPI_ERR_TAG";
99 returnString =
"MPI_ERR_RANK";
101 case MPI_ERR_REQUEST:
102 returnString =
"MPI_ERR_REQUEST";
104 case MPI_ERR_IN_STATUS:
105 returnString =
"MPI_ERR_IN_STATUS";
108 returnString =
"MPI_ERR_BUFFER";
111 returnString =
"MPI_ERR_OP";
114 returnString =
"MPI_ERR_ROOT";
117 returnString =
"MPI_ERR_OTHER";
120 returnString =
"MPI_ERR_INFO";
122 case MPI_ERR_INFO_KEY:
123 returnString =
"MPI_ERR_INFO_KEY";
125 case MPI_ERR_INFO_VALUE:
126 returnString =
"MPI_ERR_INFO_VALUE";
128 case MPI_ERR_TRUNCATE:
129 returnString =
"MPI_ERR_TRUNCATE: Message truncated on receive. Receive buffer too small for message.";
132 returnString =
"UNKNOWN";
152 for(
MInt cnt = 0; cnt < len; cnt++) {
153 if(result == returncodes[cnt]) {
154 m_log <<
" - execution code: ";
163 m_log <<
" - execution code: UNKNOWN" << endl;
184 "MPI error: " + mpiFunction +
" called from '" + name + customString +
"' returned error code: ";
188 char error_string[256];
189 int length_of_error_string;
190 MPI_Error_string(result, error_string, &length_of_error_string);
191 std::cerr <<
"error string " << error_string << std::endl;
195 for(
MInt cnt = 1; cnt < len; cnt++) {
196 if(result == returncodes[cnt]) {
205 TERMM(1, errorMsg +
"UNKNOWN Error. MPI Error is " + error_string);
214 MPI_Type_get_name(datatype, name, &namelen);
215 return std::string(name);
251 m_log <<
" + MPI_Comm_create called from function " << name << endl;
252 m_log <<
" - variable name: " << varname << endl;
260 if(comm != MPI_COMM_NULL) {
262 MPI_Comm_set_errhandler(*newcomm, MPI_ERRORS_RETURN);
266 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_GROUP};
272 const MBool isNullComm = (*newcomm == MPI_COMM_NULL);
273 if(result == MPI_SUCCESS && !isNullComm) {
277 m_log <<
" - new communicator id: " <<
getCommId(*newcomm) << endl;
282 if(result != MPI_SUCCESS) {
283 const MString customString =
"' for variable '" + varname;
284 raiseMPIerror(result,
"MPI_Comm_create", returncodes, 3, name, customString);
309 m_log <<
" + MPI_Comm_split called from function " << name << endl;
310 m_log <<
" - variable name: " << varname << endl;
316 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_INTERN};
322 m_log <<
" - new communicator id: " <<
getCommId(*newcomm) << endl;
327 if(result != MPI_SUCCESS) {
328 const MString customString =
"' for variable '" + varname;
329 raiseMPIerror(result,
"MPI_Comm_split", returncodes, 3, name, customString);
351 m_log <<
" + MPI_Comm_free called from " << name << endl;
352 m_log <<
" - variable name: " << varname << endl;
355 map<MPI_Comm, MInt>::iterator it =
mpi_dbg_lst.find(*comm);
357 TERMM(1,
"Error: Communicator to free not found.");
360 MInt id = it->second;
363 m_log <<
" - communicator id: " <<
id << endl;
369 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
377 if(result != MPI_SUCCESS) {
378 const MString customString =
"' for variable '" + varname;
379 raiseMPIerror(result,
"MPI_Comm_free", returncodes, 3, name, customString);
400 m_log <<
" + MPI_Comm_group called from " << name << endl;
401 m_log <<
" - variable name: " << varname << endl;
407 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
415 if(result != MPI_SUCCESS) {
416 const MString customString =
"' for variable '" + varname;
417 raiseMPIerror(result,
"MPI_Comm_group", returncodes, 3, name, customString);
440int MPI_Send(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm,
const MString& name,
443 m_log <<
" + MPI_Send called from " << name << endl;
444 m_log <<
" - variable name / type: " << varname <<
" / " <<
mpiTypeName(datatype) << endl;
446 m_log <<
" - destination / tag: " << dest <<
" / " << tag << endl;
450 int result =
MPI_Send(buf, count, datatype, dest, tag, comm);
453 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_TAG, MPI_ERR_ARG};
461 if(result != MPI_SUCCESS) {
462 const MString customString =
"' for variable '" + varname;
463 raiseMPIerror(result,
"MPI_Send", returncodes, 6, name, customString);
481int MPI_Isend(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request* request,
484 m_log <<
" + MPI_Isend called from " << name << endl;
485 m_log <<
" - variable name / type: " << varname <<
" / " <<
mpiTypeName(datatype) << endl;
487 m_log <<
" - destination / tag: " << dest <<
" / " << tag << endl;
491 int result =
MPI_Isend(buf, count, datatype, dest, tag, comm, request);
494 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE,
495 MPI_ERR_TAG, MPI_ERR_RANK, MPI_ERR_INTERN};
503 if(result != MPI_SUCCESS) {
504 const MString customString =
"' for variable '" + varname;
505 raiseMPIerror(result,
"MPI_Isend", returncodes, 7, name, customString);
523int MPI_Issend(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm,
524 MPI_Request* request,
const MString& name,
const MString& varname) {
526 m_log <<
" + MPI_Issend called from " << name << endl;
527 m_log <<
" - variable name / type: " << varname <<
" / " <<
mpiTypeName(datatype) << endl;
529 m_log <<
" - destination / tag: " << dest <<
" / " << tag << endl;
533 int result =
MPI_Issend(buf, count, datatype, dest, tag, comm, request);
536 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE,
537 MPI_ERR_TAG, MPI_ERR_RANK, MPI_ERR_INTERN};
545 if(result != MPI_SUCCESS) {
546 const MString customString =
"' for variable '" + varname;
547 raiseMPIerror(result,
"MPI_Issend", returncodes, 7, name, customString);
565int MPI_Recv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag, MPI_Comm comm, MPI_Status* status,
568 m_log <<
" + MPI_Recv called from " << name << endl;
569 m_log <<
" - variable name / type: " << varname <<
" / " <<
mpiTypeName(datatype) << endl;
571 m_log <<
" - source / tag: " << source <<
" / " << tag << endl;
575 int result =
MPI_Recv(buf, count, datatype, source, tag, comm, status);
578 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_TAG, MPI_ERR_RANK};
586 if(result != MPI_SUCCESS) {
587 const MString customString =
"' for variable '" + varname;
588 raiseMPIerror(result,
"MPI_Recv", returncodes, 6, name, customString);
606int MPI_Irecv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag, MPI_Comm comm, MPI_Request* request,
609 m_log <<
" + MPI_Irecv called from " << name << endl;
610 m_log <<
" - variable name / type: " << varname <<
" / " <<
mpiTypeName(datatype) << endl;
612 m_log <<
" - source / tag: " << source <<
" / " << tag << endl;
616 int result =
MPI_Irecv(buf, count, datatype, source, tag, comm, request);
619 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE,
620 MPI_ERR_TAG, MPI_ERR_RANK, MPI_ERR_INTERN};
628 if(result != MPI_SUCCESS) {
629 const MString customString =
"' for variable '" + varname;
630 raiseMPIerror(result,
"MPI_Irecv", returncodes, 7, name, customString);
648int MPI_Send_init(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm,
649 MPI_Request* request,
const MString& name,
const MString& varname) {
651 m_log <<
" + MPI_Send_init called from " << name << endl;
652 m_log <<
" - variable name: " << varname << endl;
657 int result =
MPI_Send_init(buf, count, datatype, dest, tag, comm, request);
660 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE,
661 MPI_ERR_TAG, MPI_ERR_RANK, MPI_ERR_INTERN};
669 if(result != MPI_SUCCESS) {
670 const MString customString =
"' for variable '" + varname;
671 raiseMPIerror(result,
"MPI_Send_init", returncodes, 7, name, customString);
689int MPI_Recv_init(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request* request,
692 m_log <<
" + MPI_Recv_init called from " << name << endl;
693 m_log <<
" - variable name: " << varname << endl;
698 int result =
MPI_Recv_init(buf, count, datatype, dest, tag, comm, request);
701 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE,
702 MPI_ERR_TAG, MPI_ERR_RANK, MPI_ERR_INTERN};
710 if(result != MPI_SUCCESS) {
711 const MString customString =
"' for variable '" + varname;
712 raiseMPIerror(result,
"MPI_Recv_init", returncodes, 7, name, customString);
734 m_log <<
" + MPI_Wait called from " << name << endl;
738 int result =
MPI_Wait(request, status);
741 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
749 if(result != MPI_SUCCESS) {
751 raiseMPIerror(result,
"MPI_Wait", returncodes, 3, name, customString);
768 m_log <<
" + MPI_Waitall called from " << name << endl;
775 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG, MPI_ERR_IN_STATUS};
783 if(result != MPI_SUCCESS) {
785 raiseMPIerror(result,
"MPI_Waitall", returncodes, 4, name, customString);
801int MPI_Waitsome(
int incount, MPI_Request array_of_requests[],
int* outcount,
int array_of_indices[],
802 MPI_Status array_of_statuses[],
const MString& name) {
804 m_log <<
" + MPI_Waitsome called from " << name << endl;
808 int result =
MPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses);
811 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG, MPI_ERR_IN_STATUS};
819 if(result != MPI_SUCCESS) {
821 raiseMPIerror(result,
"MPI_Waitsome", returncodes, 4, name, customString);
836int MPI_Test(MPI_Request* request,
int* flag, MPI_Status* status,
const MString& name) {
838 m_log <<
" + MPI_Test called from " << name << endl;
842 int result =
MPI_Test(request, flag, status);
845 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
853 if(result != MPI_SUCCESS) {
855 raiseMPIerror(result,
"MPI_Test", returncodes, 3, name, customString);
876 m_log <<
" + MPI_Barrier called from " << name << endl;
884 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM};
892 if(result != MPI_SUCCESS) {
894 raiseMPIerror(result,
"MPI_Barrier", returncodes, 2, name, customString);
912int MPI_Reduce(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype, MPI_Op op,
int root, MPI_Comm comm,
915 m_log <<
" + MPI_Reduce called from " << name << endl;
916 m_log <<
" - snd variable name: " << sndvarname << endl;
917 m_log <<
" - rcv variable name: " << rcvvarname << endl;
922 int result =
MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm);
925 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
933 if(result != MPI_SUCCESS) {
934 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
935 raiseMPIerror(result,
"MPI_Reduce", returncodes, 5, name, customString);
952int MPI_Allreduce(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
955 m_log <<
" + MPI_Allreduce called from " << name << endl;
956 m_log <<
" - snd variable name: " << sndvarname << endl;
957 m_log <<
" - rcv variable name: " << rcvvarname << endl;
962 int result =
MPI_Allreduce(sendbuf, recvbuf, count, datatype, op, comm);
965 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_OP};
973 if(result != MPI_SUCCESS) {
974 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
975 raiseMPIerror(result,
"MPI_Allreduce", returncodes, 6, name, customString);
993int MPI_Iallreduce(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
996 m_log <<
" + MPI_Iallreduce called from " << name << endl;
997 m_log <<
" - snd variable name: " << sndvarname << endl;
998 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1003 int result =
MPI_Iallreduce(sendbuf, recvbuf, count, datatype, op, comm, request);
1006 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_OP};
1008#ifdef MAIA_MPI_DEBUG
1014 if(result != MPI_SUCCESS) {
1015 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1016 raiseMPIerror(result,
"MPI_Iallreduce", returncodes, 6, name, customString);
1033int MPI_Scatter(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
int recvcount,
1034 MPI_Datatype recvtype,
int root, MPI_Comm comm,
const MString& name,
const MString& sndvarname,
1036#ifdef MAIA_MPI_DEBUG
1037 m_log <<
" + MPI_Scatter called from " << name << endl;
1038 m_log <<
" - snd variable name: " << sndvarname << endl;
1039 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1044 int result =
MPI_Scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm);
1047 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1049#ifdef MAIA_MPI_DEBUG
1055 if(result != MPI_SUCCESS) {
1056 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1057 raiseMPIerror(result,
"MPI_Scatter", returncodes, 5, name, customString);
1074int MPI_Scatterv(
const void* sendbuf,
const int sendcount[],
const int displs[], MPI_Datatype sendtype,
void* recvbuf,
1075 int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm,
const MString& name,
1077#ifdef MAIA_MPI_DEBUG
1078 m_log <<
" + MPI_Scatter called from " << name << endl;
1079 m_log <<
" - snd variable name: " << sndvarname << endl;
1080 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1085 int result =
MPI_Scatterv(sendbuf, sendcount, displs, sendtype, recvbuf, recvcount, recvtype, root, comm);
1088 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1090#ifdef MAIA_MPI_DEBUG
1096 if(result != MPI_SUCCESS) {
1097 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1098 raiseMPIerror(result,
"MPI_Scatter", returncodes, 5, name, customString);
1114int MPI_Bcast(
void* buffer,
int count, MPI_Datatype datatype,
int root, MPI_Comm comm,
const MString& name,
1116#ifdef MAIA_MPI_DEBUG
1117 m_log <<
" + MPI_Bcast called from " << name << endl;
1118 m_log <<
" - variable name: " << varname << endl;
1123 int result =
MPI_Bcast(buffer, count, datatype, root, comm);
1126 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_ROOT};
1128#ifdef MAIA_MPI_DEBUG
1134 if(result != MPI_SUCCESS) {
1135 const MString customString =
"' for variable '" + varname;
1136 raiseMPIerror(result,
"MPI_Bcast", returncodes, 6, name, customString);
1152int MPI_Ibcast(
void* buffer,
int count, MPI_Datatype datatype,
int root, MPI_Comm comm, MPI_Request* request,
1154#ifdef MAIA_MPI_DEBUG
1155 m_log <<
" + MPI_Ibcast called from " << name << endl;
1156 m_log <<
" - variable name: " << varname << endl;
1161 int result =
MPI_Ibcast(buffer, count, datatype, root, comm, request);
1164 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_ROOT};
1166#ifdef MAIA_MPI_DEBUG
1172 if(result != MPI_SUCCESS) {
1173 const MString customString =
"' for variable '" + varname;
1174 raiseMPIerror(result,
"MPI_Ibcast", returncodes, 6, name, customString);
1191int MPI_Gather(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
int recvcount,
1192 MPI_Datatype recvtype,
int root, MPI_Comm comm,
const MString& name,
const MString& sndvarname,
1194#ifdef MAIA_MPI_DEBUG
1195 m_log <<
" + MPI_Gather called from " << name << endl;
1196 m_log <<
" - snd variable name: " << sndvarname << endl;
1197 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1202 int result =
MPI_Gather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm);
1205 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1207#ifdef MAIA_MPI_DEBUG
1213 if(result != MPI_SUCCESS) {
1214 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1215 raiseMPIerror(result,
"MPI_Gather", returncodes, 5, name, customString);
1232int MPI_Gatherv(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
const int recvcounts[],
1233 const int displs[], MPI_Datatype recvtype,
int root, MPI_Comm comm,
const MString& name,
1235#ifdef MAIA_MPI_DEBUG
1236 m_log <<
" + MPI_Gatherv called from " << name << endl;
1237 m_log <<
" - snd variable name: " << sndvarname << endl;
1238 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1243 int result =
MPI_Gatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm);
1246 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1248#ifdef MAIA_MPI_DEBUG
1254 if(result != MPI_SUCCESS) {
1255 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1256 raiseMPIerror(result,
"MPI_Gatherv", returncodes, 4, name, customString);
1274int MPI_Allgather(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
int recvcount,
1275 MPI_Datatype recvtype, MPI_Comm comm,
const MString& name,
const MString& sndvarname,
1277#ifdef MAIA_MPI_DEBUG
1278 m_log <<
" + MPI_Allgather called from " << name << endl;
1279 m_log <<
" - snd variable name: " << sndvarname << endl;
1280 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1285 int result =
MPI_Allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
1288 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1290#ifdef MAIA_MPI_DEBUG
1296 if(result != MPI_SUCCESS) {
1297 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1298 raiseMPIerror(result,
"MPI_Allgather", returncodes, 5, name, customString);
1315int MPI_Allgatherv(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
const int recvcounts[],
1316 const int displs[], MPI_Datatype recvtype, MPI_Comm comm,
const MString& name,
1318#ifdef MAIA_MPI_DEBUG
1319 m_log <<
" + MPI_Allgatherv called from " << name << endl;
1320 m_log <<
" - snd variable name: " << sndvarname << endl;
1321 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1326 int result =
MPI_Allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm);
1329 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1331#ifdef MAIA_MPI_DEBUG
1337 if(result != MPI_SUCCESS) {
1338 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1339 raiseMPIerror(result,
"MPI_Allgatherv", returncodes, 4, name, customString);
1356int MPI_Alltoall(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
int recvcount,
1357 MPI_Datatype recvtype, MPI_Comm comm,
const MString& name,
const MString& sndvarname,
1359#ifdef MAIA_MPI_DEBUG
1360 m_log <<
" + MPI_Alltoall called from " << name << endl;
1361 m_log <<
" - snd variable name: " << sndvarname << endl;
1362 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1367 int result =
MPI_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
1370 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1372#ifdef MAIA_MPI_DEBUG
1378 if(result != MPI_SUCCESS) {
1379 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1380 raiseMPIerror(result,
"MPI_Alltoall", returncodes, 5, name, customString);
1397int MPI_Alltoallv(
const void* sendbuf,
const int sendcounts[],
const int sdispls[], MPI_Datatype sendtype,
1398 void* recvbuf,
const int recvcounts[],
const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm,
1400#ifdef MAIA_MPI_DEBUG
1401 m_log <<
" + MPI_Alltoallv called from " << name << endl;
1402 m_log <<
" - snd variable name: " << sndvarname << endl;
1403 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1408 int result =
MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm);
1411 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1413#ifdef MAIA_MPI_DEBUG
1419 if(result != MPI_SUCCESS) {
1420 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1421 raiseMPIerror(result,
"MPI_Alltoallv", returncodes, 5, name, customString);
1439int MPI_Exscan(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm,
1441#ifdef MAIA_MPI_DEBUG
1442 m_log <<
" + MPI_Exscan called from " << name << endl;
1443 m_log <<
" - snd variable name: " << sndvarname << endl;
1444 m_log <<
" - rcv variable name: " << rcvvarname << endl;
1449 int result =
MPI_Exscan(sendbuf, recvbuf, count, datatype, op, comm);
1452 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1454#ifdef MAIA_MPI_DEBUG
1460 if(result != MPI_SUCCESS) {
1461 const MString customString =
"' for sent variable '" + sndvarname +
"' for received variable '" + rcvvarname;
1462 raiseMPIerror(result,
"MPI_Exscan", returncodes, 5, name, customString);
1482#ifdef MAIA_MPI_DEBUG
1483 m_log <<
" + MPI_Type_commit called from " << name << endl;
1488 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1490#ifdef MAIA_MPI_DEBUG
1496 if(result != MPI_SUCCESS) {
1498 raiseMPIerror(result,
"MPI_Type_commit", returncodes, 2, name, customString);
1514#ifdef MAIA_MPI_DEBUG
1515 m_log <<
" + MPI_Type_free called from " << name << endl;
1520 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_ARG};
1522#ifdef MAIA_MPI_DEBUG
1528 if(result != MPI_SUCCESS) {
1530 raiseMPIerror(result,
"MPI_Type_free", returncodes, 3, name, customString);
1546 MPI_Datatype oldtype, MPI_Datatype* newtype,
const MString& name) {
1547#ifdef MAIA_MPI_DEBUG
1548 m_log <<
" + MPI_Type_create_hindexed called from " << name << endl;
1553 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_ARG};
1555#ifdef MAIA_MPI_DEBUG
1561 if(result != MPI_SUCCESS) {
1563 raiseMPIerror(result,
"MPI_Type_create_hindexed", returncodes, 3, name, customString);
1579#ifdef MAIA_MPI_DEBUG
1580 m_log <<
" + MPI_Type_contiguous from " << name << endl;
1585 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_COUNT, MPI_ERR_INTERN};
1587#ifdef MAIA_MPI_DEBUG
1593 if(result != MPI_SUCCESS) {
1595 raiseMPIerror(result,
"MPI_Type_contiguous", returncodes, 4, name, customString);
1616#ifdef MAIA_MPI_DEBUG
1617 m_log <<
" + MPI_Group_incl called from " << name << endl;
1624 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_GROUP, MPI_ERR_ARG, MPI_ERR_INTERN, MPI_ERR_RANK};
1626#ifdef MAIA_MPI_DEBUG
1632 if(result != MPI_SUCCESS) {
1634 raiseMPIerror(result,
"MPI_Group_incl", returncodes, 5, name, customString);
1650#ifdef MAIA_MPI_DEBUG
1651 m_log <<
" + MPI_Group_free called from " << name << endl;
1658 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_ARG};
1660#ifdef MAIA_MPI_DEBUG
1666 if(result != MPI_SUCCESS) {
1668 raiseMPIerror(result,
"MPI_Group_free", returncodes, 2, name, customString);
1688#ifdef MAIA_MPI_DEBUG
1689 m_log <<
" + MPI_Start called from " << name << endl;
1696 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST};
1698#ifdef MAIA_MPI_DEBUG
1704 if(result != MPI_SUCCESS) {
1706 raiseMPIerror(result,
"MPI_Start", returncodes, 2, name, customString);
1722#ifdef MAIA_MPI_DEBUG
1723 m_log <<
" + MPI_Startall called from " << name << endl;
1730 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
1732#ifdef MAIA_MPI_DEBUG
1738 if(result != MPI_SUCCESS) {
1740 raiseMPIerror(result,
"MPI_Startall", returncodes, 3, name, customString);
1756#ifdef MAIA_MPI_DEBUG
1757 m_log <<
" + MPI_Get_count called from " << name << endl;
1764 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1766#ifdef MAIA_MPI_DEBUG
1772 if(result != MPI_SUCCESS) {
1774 raiseMPIerror(result,
"MPI_Get_count", returncodes, 2, name, customString);
1790#ifdef MAIA_MPI_DEBUG
1791 m_log <<
" + MPI_Get_address called from " << name << endl;
1798 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1800#ifdef MAIA_MPI_DEBUG
1806 if(result != MPI_SUCCESS) {
1808 raiseMPIerror(result,
"MPI_Get_address", returncodes, 2, name, customString);
1824#ifdef MAIA_MPI_DEBUG
1825 m_log <<
" + MPI_Abort called from " << name << endl;
1829 int result =
MPI_Abort(comm, errorcode);
1832 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1834#ifdef MAIA_MPI_DEBUG
1840 if(result != MPI_SUCCESS) {
1842 raiseMPIerror(result,
"MPI_Abort", returncodes, 2, name, customString);
1858#ifdef MAIA_MPI_DEBUG
1859 m_log <<
" + MPI_Request_free called from " << name << endl;
1866 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1868#ifdef MAIA_MPI_DEBUG
1874 if(result != MPI_SUCCESS) {
1876 raiseMPIerror(result,
"MPI_Request_free", returncodes, 2, name, customString);
1892#ifdef MAIA_MPI_DEBUG
1893 m_log <<
" + MPI_Cancel called from " << name << endl;
1900 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1902#ifdef MAIA_MPI_DEBUG
1908 if(result != MPI_SUCCESS) {
1910 raiseMPIerror(result,
"MPI_Cancel", returncodes, 2, name, customString);
1926#ifdef MAIA_MPI_DEBUG
1927 m_log <<
" + MPI_Get_count called from " << name << endl;
1931 int result =
MPI_Probe(source, tag, comm, status);
1934 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1936#ifdef MAIA_MPI_DEBUG
1942 if(result != MPI_SUCCESS) {
1944 raiseMPIerror(result,
"MPI_Probe", returncodes, 2, name, customString);
1959int MPI_Iprobe(
int source,
int tag, MPI_Comm comm,
int* flag, MPI_Status* status,
const MString& name) {
1960#ifdef MAIA_MPI_DEBUG
1961 m_log <<
" + MPI_Get_count called from " << name << endl;
1965 int result =
MPI_Iprobe(source, tag, comm, flag, status);
1968 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1970#ifdef MAIA_MPI_DEBUG
1976 if(result != MPI_SUCCESS) {
1978 raiseMPIerror(result,
"MPI_Iprobe", returncodes, 2, name, customString);
1997#ifdef MAIA_MPI_DEBUG
1998 m_log <<
" + MPI_Info_create called from " << name << endl;
2005 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
2007#ifdef MAIA_MPI_DEBUG
2013 if(result != MPI_SUCCESS) {
2015 raiseMPIerror(result,
"MPI_Info_create", returncodes, 2, name, customString);
2031#ifdef MAIA_MPI_DEBUG
2032 m_log <<
" + MPI_Info_free called from " << name << endl;
2039 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO};
2041#ifdef MAIA_MPI_DEBUG
2047 if(result != MPI_SUCCESS) {
2049 raiseMPIerror(result,
"MPI_Info_free", returncodes, 3, name, customString);
2065#ifdef MAIA_MPI_DEBUG
2066 m_log <<
" + MPI_Info_get called from " << name << endl;
2070 int result =
MPI_Info_get(info, key, valuelen, value, flag);
2073 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO_KEY, MPI_ERR_ARG, MPI_ERR_INFO_VALUE};
2075#ifdef MAIA_MPI_DEBUG
2081 if(result != MPI_SUCCESS) {
2083 raiseMPIerror(result,
"MPI_Info_get", returncodes, 5, name, customString);
2099#ifdef MAIA_MPI_DEBUG
2100 m_log <<
" + MPI_Info_get_nthkey called from " << name << endl;
2107 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_ARG};
2109#ifdef MAIA_MPI_DEBUG
2115 if(result != MPI_SUCCESS) {
2117 raiseMPIerror(result,
"MPI_Info_get_nthkey", returncodes, 3, name, customString);
2133#ifdef MAIA_MPI_DEBUG
2134 m_log <<
" + MPI_Info_get_nkeys called from " << name << endl;
2141 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
2143#ifdef MAIA_MPI_DEBUG
2149 if(result != MPI_SUCCESS) {
2151 raiseMPIerror(result,
"MPI_Info_get_nkeys", returncodes, 2, name, customString);
2167#ifdef MAIA_MPI_DEBUG
2168 m_log <<
" + MPI_Info_get_valuelen called from " << name << endl;
2175 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO_KEY};
2177#ifdef MAIA_MPI_DEBUG
2183 if(result != MPI_SUCCESS) {
2185 raiseMPIerror(result,
"MPI_Info_get_valuelen", returncodes, 3, name, customString);
2203int MPI_File_open(MPI_Comm comm,
const char* filename,
int amode, MPI_Info info, MPI_File* mpi_fh,
2205#ifdef MAIA_MPI_DEBUG
2206 m_log <<
" + MPI_File_open called from " << name << endl;
2211 int result =
MPI_File_open(comm, filename, amode, info, mpi_fh);
2214 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2216#ifdef MAIA_MPI_DEBUG
2222 if(result != MPI_SUCCESS) {
2224 raiseMPIerror(result,
"MPI_File_open", returncodes, 3, name, customString);
2240#ifdef MAIA_MPI_DEBUG
2241 m_log <<
" + MPI_File_seek called from " << name << endl;
2248 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2250#ifdef MAIA_MPI_DEBUG
2256 if(result != MPI_SUCCESS) {
2258 raiseMPIerror(result,
"MPI_File_seek", returncodes, 3, name, customString);
2274#ifdef MAIA_MPI_DEBUG
2275 m_log <<
" + MPI_File_close called from " << name << endl;
2282 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2284#ifdef MAIA_MPI_DEBUG
2290 if(result != MPI_SUCCESS) {
2292 raiseMPIerror(result,
"MPI_File_close", returncodes, 3, name, customString);
2309#ifdef MAIA_MPI_DEBUG
2310 m_log <<
" + MPI_File_write_shared called from " << name << endl;
2317 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2319#ifdef MAIA_MPI_DEBUG
2325 if(result != MPI_SUCCESS) {
2327 raiseMPIerror(result,
"MPI_File_write_shared", returncodes, 3, name, customString);
2344#ifdef MAIA_MPI_DEBUG
2345 m_log <<
" + MPI_File_iwrite_shared called from " << name << endl;
2352 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2354#ifdef MAIA_MPI_DEBUG
2360 if(result != MPI_SUCCESS) {
2362 raiseMPIerror(result,
"MPI_File_iwrite_shared", returncodes, 3, name, customString);
2369#pragma GCC diagnostic pop
void stopIdleStartLoadTimer(const MString &name)
Stop the currently running idle timer and start the corresponding load timer.
void stopLoadStartIdleTimer(const MString &name)
Stop the currently running load timer and start the corresponding idle timer.
std::basic_string< char > MString
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status, const MString &name, const MString &varname)
same as MPI_Recv
int MPI_File_iwrite_shared(MPI_File mpi_fh, const void *buf, int count, MPI_Datatype datatype, MPI_Request *request, const MString &name)
same as MPI_File_iwrite_shared
int MPI_Isend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Isend
int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag, const MString &name)
same as MPI_Info_get
int MPI_Send_init(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Send_init
int MPI_Barrier(MPI_Comm comm, const MString &name)
same as MPI_Barrier
int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allgatherv
int MPI_File_seek(MPI_File mpi_fh, MPI_Offset offset, int whence, const MString &name)
same as MPI_File_seek
int MPI_Scatterv(const void *sendbuf, const int sendcount[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Scatterv
int MPI_Waitsome(int incount, MPI_Request array_of_requests[], int *outcount, int array_of_indices[], MPI_Status array_of_statuses[], const MString &name)
same as MPI_Waitsome
int MPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count, const MString &name)
same as MPI_Get_count
int MPI_Info_free(MPI_Info *info, const MString &name)
same as MPI_Info_free
int MPI_Type_commit(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_commit
MInt getCommId(const MPI_Comm comm)
Determine communicator ID.
int MPI_Comm_free(MPI_Comm *comm, const MString &name, const MString &varname)
same as MPI_Comm_free, but updates the number of MPI communicators
int MPI_Irecv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Irecv
int MPI_Recv_init(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Recv_init
int MPI_Comm_create(MPI_Comm comm, MPI_Group group, MPI_Comm *newcomm, const MString &name, const MString &varname)
same as MPI_Comm_create, but updates the number of MPI communicators
int MPI_Abort(MPI_Comm comm, int errorcode, const MString &name)
same as MPI_Abort
int MPI_Issend(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Issend
int MPI_File_open(MPI_Comm comm, const char *filename, int amode, MPI_Info info, MPI_File *mpi_fh, const MString &name)
same as MPI_File_open
int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup, const MString &name)
same as MPI_Group_incl
MString return2string(const MInt returncode)
Convert returncode to string.
int MPI_Type_free(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_free
void raiseMPIerror(const MInt result, const MString &mpiFunction, const MInt returncodes[], const MInt len, const MString &name, const MString &customString)
Raise and error and terminate if MPI returns an errorcode.
int MPI_Comm_group(MPI_Comm comm, MPI_Group *group, const MString &name, const MString &varname)
same as MPI_Comm_group
int MPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag, const MString &name)
same as MPI_Info_get_valuelen
void debugResult(const MInt result, const MInt returncodes[], const MInt len)
Print debug output in m_log.
int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &varname)
same as MPI_Ibcast
int MPI_Scatter(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Scatter
int MPI_Cancel(MPI_Request *request, const MString &name)
same as MPI_cancel
int MPI_Wait(MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Wait
int MPI_Gatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gatherv
int MPI_Exscan(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Exscan
map< MPI_Comm, MInt > mpi_dbg_lst
int MPI_Waitall(int count, MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Waitall
int MPI_Type_contiguous(int count, MPI_Datatype old_type, MPI_Datatype *new_type_p, const MString &name)
same as MPI_Type_contiguous
int MPI_Start(MPI_Request *request, const MString &name)
same as MPI_Start
int MPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Iallreduce
int MPI_Type_create_hindexed(int count, const int array_of_solverlengths[], const MPI_Aint array_of_displacements[], MPI_Datatype oldtype, MPI_Datatype *newtype, const MString &name)
same as MPI_Type_create_hindexed
int MPI_Reduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Reduce
int MPI_File_close(MPI_File *mpi_fh, const MString &name)
same as MPI_File_close
int MPI_Info_create(MPI_Info *info, const MString &name)
same as MPI_Info_create
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status, const MString &name)
same as MPI_Test
int MPI_Get_address(const void *location, MPI_Aint *address, const MString &name)
same as MPI_Get_address
int MPI_Allreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allreduce
int MPI_Info_get_nthkey(MPI_Info info, int n, char *key, const MString &name)
same as MPI_Info_get_nthkey
int MPI_Alltoall(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Alltoall
int MPI_Request_free(MPI_Request *request, const MString &name)
same as MPI_Request_free
int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *newcomm, const MString &name, const MString &varname)
same as MPI_Comm_split, but updates the number of MPI communicators
void startDlbIdleTimer(const MString &name)
MString mpiTypeName(MPI_Datatype datatype)
Return the name of the given MPI datatype.
int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag, MPI_Status *status, const MString &name)
Iprobe MPI to get status without actually receiving the message.
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, const MString &name, const MString &varname)
same as MPI_Bcast
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status, const MString &name)
probe MPI to get status without actually receiving the message
void stopDlbIdleTimer(const MString &name)
int MPI_Gather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Gather
int MPI_Allgather(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Allgather
int MPI_File_write_shared(MPI_File mpi_fh, const void *buf, int count, MPI_Datatype datatype, MPI_Status *status, const MString &name)
same as MPI_File_write_shared
int MPI_Info_get_nkeys(MPI_Info info, int *nkeys, const MString &name)
same as MPI_Info_get_nkeys
int MPI_Group_free(MPI_Group *group, const MString &name)
same as MPI_Group_free
int MPI_Alltoallv(const void *sendbuf, const int sendcounts[], const int sdispls[], MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int rdispls[], MPI_Datatype recvtype, MPI_Comm comm, const MString &name, const MString &sndvarname, const MString &rcvvarname)
same as MPI_Alltoallv
int MPI_Startall(int count, MPI_Request array_of_requests[], const MString &name)
same as MPI_Startall
int MPI_Send(const void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, const MString &name, const MString &varname)
same as MPI_Send
DlbTimerController g_dlbTimerController