MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
mpioverride.cpp File Reference

Go to the source code of this file.

Functions

MInt getCommId (const MPI_Comm comm)
 Determine communicator ID. More...
 
MString return2string (const MInt returncode)
 Convert returncode to string. More...
 
void debugResult (const MInt result, const MInt returncodes[], const MInt len)
 Print debug output in m_log. More...
 
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. More...
 
MString mpiTypeName (MPI_Datatype datatype)
 Return the name of the given MPI datatype. More...
 
void startDlbIdleTimer (const MString &name)
 
void stopDlbIdleTimer (const MString &name)
 
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 More...
 
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 More...
 
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 More...
 
int MPI_Comm_group (MPI_Comm comm, MPI_Group *group, const MString &name, const MString &varname)
 same as MPI_Comm_group More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
int MPI_Wait (MPI_Request *request, MPI_Status *status, const MString &name)
 same as MPI_Wait More...
 
int MPI_Waitall (int count, MPI_Request *request, MPI_Status *status, const MString &name)
 same as MPI_Waitall More...
 
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 More...
 
int MPI_Test (MPI_Request *request, int *flag, MPI_Status *status, const MString &name)
 same as MPI_Test More...
 
int MPI_Barrier (MPI_Comm comm, const MString &name)
 same as MPI_Barrier More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
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 More...
 
int MPI_Type_commit (MPI_Datatype *datatype, const MString &name)
 same as MPI_Type_commit More...
 
int MPI_Type_free (MPI_Datatype *datatype, const MString &name)
 same as MPI_Type_free More...
 
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 More...
 
int MPI_Type_contiguous (int count, MPI_Datatype old_type, MPI_Datatype *new_type_p, const MString &name)
 same as MPI_Type_contiguous More...
 
int MPI_Group_incl (MPI_Group group, int n, const int ranks[], MPI_Group *newgroup, const MString &name)
 same as MPI_Group_incl More...
 
int MPI_Group_free (MPI_Group *group, const MString &name)
 same as MPI_Group_free More...
 
int MPI_Start (MPI_Request *request, const MString &name)
 same as MPI_Start More...
 
int MPI_Startall (int count, MPI_Request array_of_requests[], const MString &name)
 same as MPI_Startall More...
 
int MPI_Get_count (const MPI_Status *status, MPI_Datatype datatype, int *count, const MString &name)
 same as MPI_Get_count More...
 
int MPI_Get_address (const void *location, MPI_Aint *address, const MString &name)
 same as MPI_Get_address More...
 
int MPI_Abort (MPI_Comm comm, int errorcode, const MString &name)
 same as MPI_Abort More...
 
int MPI_Request_free (MPI_Request *request, const MString &name)
 same as MPI_Request_free More...
 
int MPI_Cancel (MPI_Request *request, const MString &name)
 same as MPI_cancel More...
 
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 More...
 
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. More...
 
int MPI_Info_create (MPI_Info *info, const MString &name)
 same as MPI_Info_create More...
 
int MPI_Info_free (MPI_Info *info, const MString &name)
 same as MPI_Info_free More...
 
int MPI_Info_get (MPI_Info info, const char *key, int valuelen, char *value, int *flag, const MString &name)
 same as MPI_Info_get More...
 
int MPI_Info_get_nthkey (MPI_Info info, int n, char *key, const MString &name)
 same as MPI_Info_get_nthkey More...
 
int MPI_Info_get_nkeys (MPI_Info info, int *nkeys, const MString &name)
 same as MPI_Info_get_nkeys More...
 
int MPI_Info_get_valuelen (MPI_Info info, const char *key, int *valuelen, int *flag, const MString &name)
 same as MPI_Info_get_valuelen More...
 
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 More...
 
int MPI_File_seek (MPI_File mpi_fh, MPI_Offset offset, int whence, const MString &name)
 same as MPI_File_seek More...
 
int MPI_File_close (MPI_File *mpi_fh, const MString &name)
 same as MPI_File_close More...
 
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 More...
 
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 More...
 

Variables

map< MPI_Comm, MIntmpi_dbg_lst {}
 
MInt mpi_dbg_cnt = 0
 

Function Documentation

◆ debugResult()

void debugResult ( const MInt  result,
const MInt  returncodes[],
const MInt  len 
)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]returncode
[in]listof admissible returncodes
[in]numberof admissible returncodes

Definition at line 148 of file mpioverride.cpp.

148 {
149 MBool found = false;
150
151 // If returncode in list of admissible returncodes, print it
152 for(MInt cnt = 0; cnt < len; cnt++) {
153 if(result == returncodes[cnt]) {
154 m_log << " - execution code: ";
155 m_log << return2string(result) << endl;
156 found = true;
157 }
158 }
159
160 // If returncode unknown or not in list of admissible returncodes,
161 // print unknown
162 if(!found) {
163 m_log << " - execution code: UNKNOWN" << endl;
164 }
165}
InfoOutFile m_log
int32_t MInt
Definition: maiatypes.h:62
bool MBool
Definition: maiatypes.h:58
MString return2string(const MInt returncode)
Convert returncode to string.
Definition: mpioverride.cpp:71

◆ getCommId()

MInt getCommId ( const MPI_Comm  comm)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]MPIcommunicator
Returns
communicator id

Definition at line 42 of file mpioverride.cpp.

42 {
43 // Check for nullptr-communicator
44 if(comm == MPI_COMM_NULL) {
45 return -1;
46 }
47
48 MInt id;
49 // search communicator in mapping
50 auto it = mpi_dbg_lst.find(comm);
51 // If communicator cannot be found, it is the world communicator
52 if(it == mpi_dbg_lst.end()) {
53 // mTerm (1, AT_, "Error: Communicator not found.");
54 id = 0;
55 } else {
56 id = it->second;
57 }
58
59 return id;
60}
MInt id
Definition: maiatypes.h:71
map< MPI_Comm, MInt > mpi_dbg_lst
Definition: mpioverride.cpp:24

◆ MPI_Abort()

int MPI_Abort ( MPI_Comm  comm,
int  errorcode,
const MString name 
)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1823 of file mpioverride.cpp.

1823 {
1824#ifdef MAIA_MPI_DEBUG
1825 m_log << " + MPI_Abort called from " << name << endl;
1826#endif
1827
1828 startDlbIdleTimer(name);
1829 int result = MPI_Abort(comm, errorcode);
1830 stopDlbIdleTimer(name);
1831
1832 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1833
1834#ifdef MAIA_MPI_DEBUG
1835 // Debug output
1836 debugResult(result, returncodes, 2);
1837#endif
1838
1839 // Check return code
1840 if(result != MPI_SUCCESS) {
1841 const MString customString;
1842 raiseMPIerror(result, "MPI_Abort", returncodes, 2, name, customString);
1843 }
1844
1845 return result;
1846}
std::basic_string< char > MString
Definition: maiatypes.h:55
int MPI_Abort(MPI_Comm comm, int errorcode, const MString &name)
same as MPI_Abort
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.
void debugResult(const MInt result, const MInt returncodes[], const MInt len)
Print debug output in m_log.
void startDlbIdleTimer(const MString &name)
void stopDlbIdleTimer(const MString &name)

◆ MPI_Allgather()

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 
)
Author
Philipp Schleich
Date
07.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1274 of file mpioverride.cpp.

1276 {
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;
1281 m_log << " - communicator id: " << getCommId(comm) << endl;
1282#endif
1283
1284 startDlbIdleTimer(name);
1285 int result = MPI_Allgather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
1286 stopDlbIdleTimer(name);
1287
1288 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1289
1290#ifdef MAIA_MPI_DEBUG
1291 // Debug output
1292 debugResult(result, returncodes, 5);
1293#endif
1294
1295 // Check return code
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);
1299 }
1300
1301 return result;
1302}
MInt getCommId(const MPI_Comm comm)
Determine communicator ID.
Definition: mpioverride.cpp:42
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

◆ MPI_Allgatherv()

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 
)
Author
Philipp Schleich
Date
07.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1315 of file mpioverride.cpp.

1317 {
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;
1322 m_log << " - communicator id: " << getCommId(comm) << endl;
1323#endif
1324
1325 startDlbIdleTimer(name);
1326 int result = MPI_Allgatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm);
1327 stopDlbIdleTimer(name);
1328
1329 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1330
1331#ifdef MAIA_MPI_DEBUG
1332 // Debug output
1333 debugResult(result, returncodes, 4);
1334#endif
1335
1336 // Check return code
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);
1340 }
1341
1342 return result;
1343}
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

◆ MPI_Allreduce()

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 
)
Author
Philipp Schleich
Date
06.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 952 of file mpioverride.cpp.

953 {
954#ifdef MAIA_MPI_DEBUG
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;
958 m_log << " - communicator id: " << getCommId(comm) << endl;
959#endif
960
961 startDlbIdleTimer(name);
962 int result = MPI_Allreduce(sendbuf, recvbuf, count, datatype, op, comm);
963 stopDlbIdleTimer(name);
964
965 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_OP};
966
967#ifdef MAIA_MPI_DEBUG
968 // Debug output
969 debugResult(result, returncodes, 6);
970#endif
971
972 // Check return code
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);
976 }
977
978 return result;
979}
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

◆ MPI_Alltoall()

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 
)
Author
Philipp Schleich
Date
17.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1356 of file mpioverride.cpp.

1358 {
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;
1363 m_log << " - communicator id: " << getCommId(comm) << endl;
1364#endif
1365
1366 startDlbIdleTimer(name);
1367 int result = MPI_Alltoall(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm);
1368 stopDlbIdleTimer(name);
1369
1370 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1371
1372#ifdef MAIA_MPI_DEBUG
1373 // Debug output
1374 debugResult(result, returncodes, 5);
1375#endif
1376
1377 // Check return code
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);
1381 }
1382
1383 return result;
1384}
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

◆ MPI_Alltoallv()

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 
)
Author
Philipp Schleich
Date
17.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1397 of file mpioverride.cpp.

1399 {
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;
1404 m_log << " - communicator id: " << getCommId(comm) << endl;
1405#endif
1406
1407 startDlbIdleTimer(name);
1408 int result = MPI_Alltoallv(sendbuf, sendcounts, sdispls, sendtype, recvbuf, recvcounts, rdispls, recvtype, comm);
1409 stopDlbIdleTimer(name);
1410
1411 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1412
1413#ifdef MAIA_MPI_DEBUG
1414 // Debug output
1415 debugResult(result, returncodes, 5);
1416#endif
1417
1418 // Check return code
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);
1422 }
1423
1424 return result;
1425}
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

◆ MPI_Barrier()

int MPI_Barrier ( MPI_Comm  comm,
const MString name 
)
Author
Philipp Schleich
Date
05.07.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 874 of file mpioverride.cpp.

874 {
875#ifdef MAIA_MPI_DEBUG
876 m_log << " + MPI_Barrier called from " << name << endl;
877 m_log << " - communicator id: " << getCommId(comm) << endl;
878#endif
879
880 startDlbIdleTimer(name);
881 int result = MPI_Barrier(comm);
882 stopDlbIdleTimer(name);
883
884 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM};
885
886#ifdef MAIA_MPI_DEBUG
887 // Debug output
888 debugResult(result, returncodes, 2);
889#endif
890
891 // Check return code
892 if(result != MPI_SUCCESS) {
893 const MString customString;
894 raiseMPIerror(result, "MPI_Barrier", returncodes, 2, name, customString);
895 }
896
897 return result;
898}
int MPI_Barrier(MPI_Comm comm, const MString &name)
same as MPI_Barrier

◆ MPI_Bcast()

int MPI_Bcast ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  root,
MPI_Comm  comm,
const MString name,
const MString varname 
)
Author
Philipp Schleich
Date
07.06.2019
Parameters
[in]namethe name of the calling function
[in]varnamename of the variable
Returns
the return status of the MPI call

Definition at line 1114 of file mpioverride.cpp.

1115 {
1116#ifdef MAIA_MPI_DEBUG
1117 m_log << " + MPI_Bcast called from " << name << endl;
1118 m_log << " - variable name: " << varname << endl;
1119 m_log << " - communicator id: " << getCommId(comm) << endl;
1120#endif
1121
1122 startDlbIdleTimer(name);
1123 int result = MPI_Bcast(buffer, count, datatype, root, comm);
1124 stopDlbIdleTimer(name);
1125
1126 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_ROOT};
1127
1128#ifdef MAIA_MPI_DEBUG
1129 // Debug output
1130 debugResult(result, returncodes, 6);
1131#endif
1132
1133 // Check return code
1134 if(result != MPI_SUCCESS) {
1135 const MString customString = "' for variable '" + varname;
1136 raiseMPIerror(result, "MPI_Bcast", returncodes, 6, name, customString);
1137 }
1138
1139 return result;
1140}
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

◆ MPI_Cancel()

int MPI_Cancel ( MPI_Request *  request,
const MString name 
)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1891 of file mpioverride.cpp.

1891 {
1892#ifdef MAIA_MPI_DEBUG
1893 m_log << " + MPI_Cancel called from " << name << endl;
1894#endif
1895
1896 startDlbIdleTimer(name);
1897 int result = MPI_Cancel(request);
1898 stopDlbIdleTimer(name);
1899
1900 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1901
1902#ifdef MAIA_MPI_DEBUG
1903 // Debug output
1904 debugResult(result, returncodes, 2);
1905#endif
1906
1907 // Check return code
1908 if(result != MPI_SUCCESS) {
1909 const MString customString;
1910 raiseMPIerror(result, "MPI_Cancel", returncodes, 2, name, customString);
1911 }
1912
1913 return result;
1914}
int MPI_Cancel(MPI_Request *request, const MString &name)
same as MPI_cancel

◆ MPI_Comm_create()

int MPI_Comm_create ( MPI_Comm  comm,
MPI_Group  group,
MPI_Comm *  newcomm,
const MString name,
const MString varname 
)
Author
Andreas Lintermann
Date
07.05.2019

Also delivers output to m_log on the execution status of MPI_Comm_create.

Parameters
[in]commthe parent communicator
[in]groupMPI group
[in]newcommthe new MPI communicator
[in]namethe name of the calling function
[in]varnamename of the variable
Returns
the return status of the MPI call

Definition at line 249 of file mpioverride.cpp.

249 {
250#ifdef MAIA_MPI_DEBUG
251 m_log << " + MPI_Comm_create called from function " << name << endl;
252 m_log << " - variable name: " << varname << endl;
253 m_log << " - communicator id: " << getCommId(comm) << endl;
254#endif
255
256 int result = MPI_Comm_create(comm, group, newcomm);
257 // Note: do not change error handling for Paraview, at the moment this results in "MPI_ERR_COMM:
258 // invalid communicator" erros when loading multisolver grids (with inactive ranks for a solver)
259#ifndef PVPLUGIN
260 if(comm != MPI_COMM_NULL) {
261 // Set error handling for new communicator
262 MPI_Comm_set_errhandler(*newcomm, MPI_ERRORS_RETURN);
263 }
264#endif
265
266 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_GROUP};
267
268#ifdef MAIA_MPI_DEBUG
269 // Debug output
270 debugResult(result, returncodes, 3);
271
272 const MBool isNullComm = (*newcomm == MPI_COMM_NULL);
273 if(result == MPI_SUCCESS && !isNullComm) {
274 mpi_dbg_lst.insert(pair<MPI_Comm, MInt>(*newcomm, ++mpi_dbg_cnt));
275 }
276
277 m_log << " - new communicator id: " << getCommId(*newcomm) << endl;
278 m_log << " - total number of comms.: " << mpi_dbg_lst.size() << endl;
279#endif
280
281 // Check return code
282 if(result != MPI_SUCCESS) {
283 const MString customString = "' for variable '" + varname;
284 raiseMPIerror(result, "MPI_Comm_create", returncodes, 3, name, customString);
285 }
286
287 return result;
288}
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
MInt mpi_dbg_cnt
Definition: mpioverride.cpp:25

◆ MPI_Comm_free()

int MPI_Comm_free ( MPI_Comm *  comm,
const MString name,
const MString varname 
)
Author
Andreas Lintermann
Date
07.05.2019

Also delivers output to m_log on the execution status of MPI_Comm_split.

Parameters
[in]commthe MPI communicator to free
[in]namethe name of the calling function
[in]varnamename of the variable
Returns
the return status of the MPI call

Definition at line 349 of file mpioverride.cpp.

349 {
350#ifdef MAIA_MPI_DEBUG
351 m_log << " + MPI_Comm_free called from " << name << endl;
352 m_log << " - variable name: " << varname << endl;
353
354 // search communicator in mapping
355 map<MPI_Comm, MInt>::iterator it = mpi_dbg_lst.find(*comm);
356 if(it == mpi_dbg_lst.end()) {
357 TERMM(1, "Error: Communicator to free not found.");
358 }
359
360 MInt id = it->second;
361 mpi_dbg_lst.erase(it);
362
363 m_log << " - communicator id: " << id << endl;
364 m_log << " - total number of comms.: " << mpi_dbg_lst.size() << endl;
365#endif
366
367 int result = MPI_Comm_free(comm);
368
369 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
370
371#ifdef MAIA_MPI_DEBUG
372 // Debug output
373 debugResult(result, returncodes, 3);
374#endif
375
376 // Check return code
377 if(result != MPI_SUCCESS) {
378 const MString customString = "' for variable '" + varname;
379 raiseMPIerror(result, "MPI_Comm_free", returncodes, 3, name, customString);
380 }
381
382 return result;
383}
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

◆ MPI_Comm_group()

int MPI_Comm_group ( MPI_Comm  comm,
MPI_Group *  group,
const MString name,
const MString varname 
)
Author
Philipp Schleich
Date
23.09.2019

Also delivers output to m_log on the execution status of MPI_Comm_split.

Parameters
[in]commthe MPI communicator to free
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 398 of file mpioverride.cpp.

398 {
399#ifdef MAIA_MPI_DEBUG
400 m_log << " + MPI_Comm_group called from " << name << endl;
401 m_log << " - variable name: " << varname << endl;
402 m_log << " - communicator id: " << getCommId(comm) << endl;
403#endif
404
405 int result = MPI_Comm_group(comm, group);
406
407 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
408
409#ifdef MAIA_MPI_DEBUG
410 // Debug output
411 debugResult(result, returncodes, 3);
412#endif
413
414 // Check return code
415 if(result != MPI_SUCCESS) {
416 const MString customString = "' for variable '" + varname;
417 raiseMPIerror(result, "MPI_Comm_group", returncodes, 3, name, customString);
418 }
419
420 return result;
421}
int MPI_Comm_group(MPI_Comm comm, MPI_Group *group, const MString &name, const MString &varname)
same as MPI_Comm_group

◆ MPI_Comm_split()

int MPI_Comm_split ( MPI_Comm  comm,
int  color,
int  key,
MPI_Comm *  newcomm,
const MString name,
const MString varname 
)
Author
Andreas Lintermann
Date
07.05.2019

Also delivers output to m_log on the execution status of MPI_Comm_split.

Parameters
[in]commthe parent communicator
[in]colorcontrol of subset assignment
[in]keycontrol of rank assignment
[in]newcommthe new MPI communicator
[in]namethe name of the calling function
[in]varnamename of the variable
Returns
the return status of the MPI call

Definition at line 307 of file mpioverride.cpp.

307 {
308#ifdef MAIA_MPI_DEBUG
309 m_log << " + MPI_Comm_split called from function " << name << endl;
310 m_log << " - variable name: " << varname << endl;
311 m_log << " - communicator id: " << getCommId(comm) << endl;
312#endif
313
314 int result = MPI_Comm_split(comm, color, key, newcomm);
315
316 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_INTERN};
317
318#ifdef MAIA_MPI_DEBUG
319 // Debug output
320 debugResult(result, returncodes, 3);
321
322 m_log << " - new communicator id: " << getCommId(*newcomm) << endl;
323 m_log << " - total number of comms.: " << mpi_dbg_lst.size() << endl;
324#endif
325
326 // Check return code
327 if(result != MPI_SUCCESS) {
328 const MString customString = "' for variable '" + varname;
329 raiseMPIerror(result, "MPI_Comm_split", returncodes, 3, name, customString);
330 }
331
332 return result;
333}
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

◆ MPI_Exscan()

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 
)
Author
Philipp Schleich
Date
04.07.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1439 of file mpioverride.cpp.

1440 {
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;
1445 m_log << " - communicator id: " << getCommId(comm) << endl;
1446#endif
1447
1448 startDlbIdleTimer(name);
1449 int result = MPI_Exscan(sendbuf, recvbuf, count, datatype, op, comm);
1450 stopDlbIdleTimer(name);
1451
1452 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1453
1454#ifdef MAIA_MPI_DEBUG
1455 // Debug output
1456 debugResult(result, returncodes, 5);
1457#endif
1458
1459 // Check return code
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);
1463 }
1464
1465 return result;
1466}
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

◆ MPI_File_close()

int MPI_File_close ( MPI_File *  mpi_fh,
const MString name 
)
Author
Philipp Schleich
Date
27.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2273 of file mpioverride.cpp.

2273 {
2274#ifdef MAIA_MPI_DEBUG
2275 m_log << " + MPI_File_close called from " << name << endl;
2276#endif
2277
2278 startDlbIdleTimer(name);
2279 int result = MPI_File_close(mpi_fh);
2280 stopDlbIdleTimer(name);
2281
2282 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2283
2284#ifdef MAIA_MPI_DEBUG
2285 // Debug output
2286 debugResult(result, returncodes, 3);
2287#endif
2288
2289 // Check return code
2290 if(result != MPI_SUCCESS) {
2291 const MString customString;
2292 raiseMPIerror(result, "MPI_File_close", returncodes, 3, name, customString);
2293 }
2294
2295 return result;
2296}
int MPI_File_close(MPI_File *mpi_fh, const MString &name)
same as MPI_File_close

◆ MPI_File_iwrite_shared()

int MPI_File_iwrite_shared ( MPI_File  mpi_fh,
const void *  buf,
int  count,
MPI_Datatype  datatype,
MPI_Request *  request,
const MString name 
)
Author
Philipp Schleich
Date
27.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2342 of file mpioverride.cpp.

2343 {
2344#ifdef MAIA_MPI_DEBUG
2345 m_log << " + MPI_File_iwrite_shared called from " << name << endl;
2346#endif
2347
2348 startDlbIdleTimer(name);
2349 int result = MPI_File_iwrite_shared(mpi_fh, buf, count, datatype, request);
2350 stopDlbIdleTimer(name);
2351
2352 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2353
2354#ifdef MAIA_MPI_DEBUG
2355 // Debug output
2356 debugResult(result, returncodes, 3);
2357#endif
2358
2359 // Check return code
2360 if(result != MPI_SUCCESS) {
2361 const MString customString;
2362 raiseMPIerror(result, "MPI_File_iwrite_shared", returncodes, 3, name, customString);
2363 }
2364
2365 return result;
2366}
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

◆ MPI_File_open()

int MPI_File_open ( MPI_Comm  comm,
const char *  filename,
int  amode,
MPI_Info  info,
MPI_File *  mpi_fh,
const MString name 
)
Author
Philipp Schleich
Date
27.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2203 of file mpioverride.cpp.

2204 {
2205#ifdef MAIA_MPI_DEBUG
2206 m_log << " + MPI_File_open called from " << name << endl;
2207 m_log << " - communicator id: " << getCommId(comm) << endl;
2208#endif
2209
2210 startDlbIdleTimer(name);
2211 int result = MPI_File_open(comm, filename, amode, info, mpi_fh);
2212 stopDlbIdleTimer(name);
2213
2214 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2215
2216#ifdef MAIA_MPI_DEBUG
2217 // Debug output
2218 debugResult(result, returncodes, 3);
2219#endif
2220
2221 // Check return code
2222 if(result != MPI_SUCCESS) {
2223 const MString customString;
2224 raiseMPIerror(result, "MPI_File_open", returncodes, 3, name, customString);
2225 }
2226
2227 return result;
2228}
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

◆ MPI_File_seek()

int MPI_File_seek ( MPI_File  mpi_fh,
MPI_Offset  offset,
int  whence,
const MString name 
)
Author
Philipp Schleich
Date
27.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2239 of file mpioverride.cpp.

2239 {
2240#ifdef MAIA_MPI_DEBUG
2241 m_log << " + MPI_File_seek called from " << name << endl;
2242#endif
2243
2244 startDlbIdleTimer(name);
2245 int result = MPI_File_seek(mpi_fh, offset, whence);
2246 stopDlbIdleTimer(name);
2247
2248 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2249
2250#ifdef MAIA_MPI_DEBUG
2251 // Debug output
2252 debugResult(result, returncodes, 3);
2253#endif
2254
2255 // Check return code
2256 if(result != MPI_SUCCESS) {
2257 const MString customString;
2258 raiseMPIerror(result, "MPI_File_seek", returncodes, 3, name, customString);
2259 }
2260
2261 return result;
2262}
int MPI_File_seek(MPI_File mpi_fh, MPI_Offset offset, int whence, const MString &name)
same as MPI_File_seek

◆ MPI_File_write_shared()

int MPI_File_write_shared ( MPI_File  mpi_fh,
const void *  buf,
int  count,
MPI_Datatype  datatype,
MPI_Status *  status,
const MString name 
)
Author
Philipp Schleich
Date
27.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2307 of file mpioverride.cpp.

2308 {
2309#ifdef MAIA_MPI_DEBUG
2310 m_log << " + MPI_File_write_shared called from " << name << endl;
2311#endif
2312
2313 startDlbIdleTimer(name);
2314 int result = MPI_File_write_shared(mpi_fh, buf, count, datatype, status);
2315 stopDlbIdleTimer(name);
2316
2317 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_ARG};
2318
2319#ifdef MAIA_MPI_DEBUG
2320 // Debug output
2321 debugResult(result, returncodes, 3);
2322#endif
2323
2324 // Check return code
2325 if(result != MPI_SUCCESS) {
2326 const MString customString;
2327 raiseMPIerror(result, "MPI_File_write_shared", returncodes, 3, name, customString);
2328 }
2329
2330 return result;
2331}
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

◆ MPI_Gather()

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 
)
Author
Philipp Schleich
Date
07.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1191 of file mpioverride.cpp.

1193 {
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;
1198 m_log << " - communicator id: " << getCommId(comm) << endl;
1199#endif
1200
1201 startDlbIdleTimer(name);
1202 int result = MPI_Gather(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm);
1203 stopDlbIdleTimer(name);
1204
1205 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1206
1207#ifdef MAIA_MPI_DEBUG
1208 // Debug output
1209 debugResult(result, returncodes, 5);
1210#endif
1211
1212 // Check return code
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);
1216 }
1217
1218 return result;
1219}
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

◆ MPI_Gatherv()

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 
)
Author
Philipp Schleich
Date
17.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1232 of file mpioverride.cpp.

1234 {
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;
1239 m_log << " - communicator id: " << getCommId(comm) << endl;
1240#endif
1241
1242 startDlbIdleTimer(name);
1243 int result = MPI_Gatherv(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, root, comm);
1244 stopDlbIdleTimer(name);
1245
1246 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1247
1248#ifdef MAIA_MPI_DEBUG
1249 // Debug output
1250 debugResult(result, returncodes, 4);
1251#endif
1252
1253 // Check return code
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);
1257 }
1258
1259
1260 return result;
1261}
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

◆ MPI_Get_address()

int MPI_Get_address ( const void *  location,
MPI_Aint *  address,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1789 of file mpioverride.cpp.

1789 {
1790#ifdef MAIA_MPI_DEBUG
1791 m_log << " + MPI_Get_address called from " << name << endl;
1792#endif
1793
1794 startDlbIdleTimer(name);
1795 int result = MPI_Get_address(location, address);
1796 stopDlbIdleTimer(name);
1797
1798 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1799
1800#ifdef MAIA_MPI_DEBUG
1801 // Debug output
1802 debugResult(result, returncodes, 2);
1803#endif
1804
1805 // Check return code
1806 if(result != MPI_SUCCESS) {
1807 const MString customString;
1808 raiseMPIerror(result, "MPI_Get_address", returncodes, 2, name, customString);
1809 }
1810
1811 return result;
1812}
const MString & location
Definition: functions.h:37
int MPI_Get_address(const void *location, MPI_Aint *address, const MString &name)
same as MPI_Get_address

◆ MPI_Get_count()

int MPI_Get_count ( const MPI_Status *  status,
MPI_Datatype  datatype,
int *  count,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1755 of file mpioverride.cpp.

1755 {
1756#ifdef MAIA_MPI_DEBUG
1757 m_log << " + MPI_Get_count called from " << name << endl;
1758#endif
1759
1760 startDlbIdleTimer(name);
1761 int result = MPI_Get_count(status, datatype, count);
1762 stopDlbIdleTimer(name);
1763
1764 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1765
1766#ifdef MAIA_MPI_DEBUG
1767 // Debug output
1768 debugResult(result, returncodes, 2);
1769#endif
1770
1771 // Check return code
1772 if(result != MPI_SUCCESS) {
1773 const MString customString;
1774 raiseMPIerror(result, "MPI_Get_count", returncodes, 2, name, customString);
1775 }
1776
1777 return result;
1778}
int MPI_Get_count(const MPI_Status *status, MPI_Datatype datatype, int *count, const MString &name)
same as MPI_Get_count

◆ MPI_Group_free()

int MPI_Group_free ( MPI_Group *  group,
const MString name 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1649 of file mpioverride.cpp.

1649 {
1650#ifdef MAIA_MPI_DEBUG
1651 m_log << " + MPI_Group_free called from " << name << endl;
1652#endif
1653
1654 startDlbIdleTimer(name);
1655 int result = MPI_Group_free(group);
1656 stopDlbIdleTimer(name);
1657
1658 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_ARG};
1659
1660#ifdef MAIA_MPI_DEBUG
1661 // Debug output
1662 debugResult(result, returncodes, 2);
1663#endif
1664
1665 // Check return code
1666 if(result != MPI_SUCCESS) {
1667 const MString customString;
1668 raiseMPIerror(result, "MPI_Group_free", returncodes, 2, name, customString);
1669 }
1670
1671 return result;
1672}
int MPI_Group_free(MPI_Group *group, const MString &name)
same as MPI_Group_free

◆ MPI_Group_incl()

int MPI_Group_incl ( MPI_Group  group,
int  n,
const int  ranks[],
MPI_Group *  newgroup,
const MString name 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1615 of file mpioverride.cpp.

1615 {
1616#ifdef MAIA_MPI_DEBUG
1617 m_log << " + MPI_Group_incl called from " << name << endl;
1618#endif
1619
1620 startDlbIdleTimer(name);
1621 int result = MPI_Group_incl(group, n, ranks, newgroup);
1622 stopDlbIdleTimer(name);
1623
1624 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_GROUP, MPI_ERR_ARG, MPI_ERR_INTERN, MPI_ERR_RANK};
1625
1626#ifdef MAIA_MPI_DEBUG
1627 // Debug output
1628 debugResult(result, returncodes, 5);
1629#endif
1630
1631 // Check return code
1632 if(result != MPI_SUCCESS) {
1633 const MString customString;
1634 raiseMPIerror(result, "MPI_Group_incl", returncodes, 5, name, customString);
1635 }
1636
1637 return result;
1638}
int MPI_Group_incl(MPI_Group group, int n, const int ranks[], MPI_Group *newgroup, const MString &name)
same as MPI_Group_incl

◆ MPI_Iallreduce()

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 
)
Author
Philipp Schleich
Date
23.09.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 993 of file mpioverride.cpp.

994 {
995#ifdef MAIA_MPI_DEBUG
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;
999 m_log << " - communicator id: " << getCommId(comm) << endl;
1000#endif
1001
1002 startDlbIdleTimer(name);
1003 int result = MPI_Iallreduce(sendbuf, recvbuf, count, datatype, op, comm, request);
1004 stopDlbIdleTimer(name);
1005
1006 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_OP};
1007
1008#ifdef MAIA_MPI_DEBUG
1009 // Debug output
1010 debugResult(result, returncodes, 6);
1011#endif
1012
1013 // Check return code
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);
1017 }
1018
1019 return result;
1020}
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

◆ MPI_Ibcast()

int MPI_Ibcast ( void *  buffer,
int  count,
MPI_Datatype  datatype,
int  root,
MPI_Comm  comm,
MPI_Request *  request,
const MString name,
const MString varname 
)
Author
Sven Berger
Date
30.09.2019
Parameters
[in]namethe name of the calling function
[in]varnamename of the variable
Returns
the return status of the MPI call

Definition at line 1152 of file mpioverride.cpp.

1153 {
1154#ifdef MAIA_MPI_DEBUG
1155 m_log << " + MPI_Ibcast called from " << name << endl;
1156 m_log << " - variable name: " << varname << endl;
1157 m_log << " - communicator id: " << getCommId(comm) << endl;
1158#endif
1159
1160 startDlbIdleTimer(name);
1161 int result = MPI_Ibcast(buffer, count, datatype, root, comm, request);
1162 stopDlbIdleTimer(name);
1163
1164 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER, MPI_ERR_ROOT};
1165
1166#ifdef MAIA_MPI_DEBUG
1167 // Debug output
1168 debugResult(result, returncodes, 6);
1169#endif
1170
1171 // Check return code
1172 if(result != MPI_SUCCESS) {
1173 const MString customString = "' for variable '" + varname;
1174 raiseMPIerror(result, "MPI_Ibcast", returncodes, 6, name, customString);
1175 }
1176
1177 return result;
1178}
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

◆ MPI_Info_create()

int MPI_Info_create ( MPI_Info *  info,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1996 of file mpioverride.cpp.

1996 {
1997#ifdef MAIA_MPI_DEBUG
1998 m_log << " + MPI_Info_create called from " << name << endl;
1999#endif
2000
2001 startDlbIdleTimer(name);
2002 int result = MPI_Info_create(info);
2003 stopDlbIdleTimer(name);
2004
2005 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
2006
2007#ifdef MAIA_MPI_DEBUG
2008 // Debug output
2009 debugResult(result, returncodes, 2);
2010#endif
2011
2012 // Check return code
2013 if(result != MPI_SUCCESS) {
2014 const MString customString;
2015 raiseMPIerror(result, "MPI_Info_create", returncodes, 2, name, customString);
2016 }
2017
2018 return result;
2019}
int MPI_Info_create(MPI_Info *info, const MString &name)
same as MPI_Info_create

◆ MPI_Info_free()

int MPI_Info_free ( MPI_Info *  info,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2030 of file mpioverride.cpp.

2030 {
2031#ifdef MAIA_MPI_DEBUG
2032 m_log << " + MPI_Info_free called from " << name << endl;
2033#endif
2034
2035 startDlbIdleTimer(name);
2036 int result = MPI_Info_free(info);
2037 stopDlbIdleTimer(name);
2038
2039 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO};
2040
2041#ifdef MAIA_MPI_DEBUG
2042 // Debug output
2043 debugResult(result, returncodes, 3);
2044#endif
2045
2046 // Check return code
2047 if(result != MPI_SUCCESS) {
2048 const MString customString;
2049 raiseMPIerror(result, "MPI_Info_free", returncodes, 3, name, customString);
2050 }
2051
2052 return result;
2053}
int MPI_Info_free(MPI_Info *info, const MString &name)
same as MPI_Info_free

◆ MPI_Info_get()

int MPI_Info_get ( MPI_Info  info,
const char *  key,
int  valuelen,
char *  value,
int *  flag,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2064 of file mpioverride.cpp.

2064 {
2065#ifdef MAIA_MPI_DEBUG
2066 m_log << " + MPI_Info_get called from " << name << endl;
2067#endif
2068
2069 startDlbIdleTimer(name);
2070 int result = MPI_Info_get(info, key, valuelen, value, flag);
2071 stopDlbIdleTimer(name);
2072
2073 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO_KEY, MPI_ERR_ARG, MPI_ERR_INFO_VALUE};
2074
2075#ifdef MAIA_MPI_DEBUG
2076 // Debug output
2077 debugResult(result, returncodes, 5);
2078#endif
2079
2080 // Check return code
2081 if(result != MPI_SUCCESS) {
2082 const MString customString;
2083 raiseMPIerror(result, "MPI_Info_get", returncodes, 5, name, customString);
2084 }
2085
2086 return result;
2087}
int MPI_Info_get(MPI_Info info, const char *key, int valuelen, char *value, int *flag, const MString &name)
same as MPI_Info_get

◆ MPI_Info_get_nkeys()

int MPI_Info_get_nkeys ( MPI_Info  info,
int *  nkeys,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2132 of file mpioverride.cpp.

2132 {
2133#ifdef MAIA_MPI_DEBUG
2134 m_log << " + MPI_Info_get_nkeys called from " << name << endl;
2135#endif
2136
2137 startDlbIdleTimer(name);
2138 int result = MPI_Info_get_nkeys(info, nkeys);
2139 stopDlbIdleTimer(name);
2140
2141 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
2142
2143#ifdef MAIA_MPI_DEBUG
2144 // Debug output
2145 debugResult(result, returncodes, 2);
2146#endif
2147
2148 // Check return code
2149 if(result != MPI_SUCCESS) {
2150 const MString customString;
2151 raiseMPIerror(result, "MPI_Info_get_nkeys", returncodes, 2, name, customString);
2152 }
2153
2154 return result;
2155}
int MPI_Info_get_nkeys(MPI_Info info, int *nkeys, const MString &name)
same as MPI_Info_get_nkeys

◆ MPI_Info_get_nthkey()

int MPI_Info_get_nthkey ( MPI_Info  info,
int  n,
char *  key,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2098 of file mpioverride.cpp.

2098 {
2099#ifdef MAIA_MPI_DEBUG
2100 m_log << " + MPI_Info_get_nthkey called from " << name << endl;
2101#endif
2102
2103 startDlbIdleTimer(name);
2104 int result = MPI_Info_get_nthkey(info, n, key);
2105 stopDlbIdleTimer(name);
2106
2107 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_ARG};
2108
2109#ifdef MAIA_MPI_DEBUG
2110 // Debug output
2111 debugResult(result, returncodes, 3);
2112#endif
2113
2114 // Check return code
2115 if(result != MPI_SUCCESS) {
2116 const MString customString;
2117 raiseMPIerror(result, "MPI_Info_get_nthkey", returncodes, 3, name, customString);
2118 }
2119
2120 return result;
2121}
int MPI_Info_get_nthkey(MPI_Info info, int n, char *key, const MString &name)
same as MPI_Info_get_nthkey

◆ MPI_Info_get_valuelen()

int MPI_Info_get_valuelen ( MPI_Info  info,
const char *  key,
int *  valuelen,
int *  flag,
const MString name 
)
Author
Philipp Schleich
Date
26.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 2166 of file mpioverride.cpp.

2166 {
2167#ifdef MAIA_MPI_DEBUG
2168 m_log << " + MPI_Info_get_valuelen called from " << name << endl;
2169#endif
2170
2171 startDlbIdleTimer(name);
2172 int result = MPI_Info_get_valuelen(info, key, valuelen, flag);
2173 stopDlbIdleTimer(name);
2174
2175 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER, MPI_ERR_INFO_KEY};
2176
2177#ifdef MAIA_MPI_DEBUG
2178 // Debug output
2179 debugResult(result, returncodes, 3);
2180#endif
2181
2182 // Check return code
2183 if(result != MPI_SUCCESS) {
2184 const MString customString;
2185 raiseMPIerror(result, "MPI_Info_get_valuelen", returncodes, 3, name, customString);
2186 }
2187
2188 return result;
2189}
int MPI_Info_get_valuelen(MPI_Info info, const char *key, int *valuelen, int *flag, const MString &name)
same as MPI_Info_get_valuelen

◆ MPI_Iprobe()

int MPI_Iprobe ( int  source,
int  tag,
MPI_Comm  comm,
int *  flag,
MPI_Status *  status,
const MString name 
)
Author
Tim Wegmann
Date
23.12.2021
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1959 of file mpioverride.cpp.

1959 {
1960#ifdef MAIA_MPI_DEBUG
1961 m_log << " + MPI_Get_count called from " << name << endl;
1962#endif
1963
1964 startDlbIdleTimer(name);
1965 int result = MPI_Iprobe(source, tag, comm, flag, status);
1966 stopDlbIdleTimer(name);
1967
1968 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1969
1970#ifdef MAIA_MPI_DEBUG
1971 // Debug output
1972 debugResult(result, returncodes, 2);
1973#endif
1974
1975 // Check return code
1976 if(result != MPI_SUCCESS) {
1977 const MString customString;
1978 raiseMPIerror(result, "MPI_Iprobe", returncodes, 2, name, customString);
1979 }
1980
1981 return result;
1982}
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.

◆ MPI_Irecv()

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 
)
Author
Philipp Schleich
Date
04.06.2019

Also delivers output to m_log on the execution status of MPI_Irecv.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 606 of file mpioverride.cpp.

607 {
608#ifdef MAIA_MPI_DEBUG
609 m_log << " + MPI_Irecv called from " << name << endl;
610 m_log << " - variable name / type: " << varname << " / " << mpiTypeName(datatype) << endl;
611 m_log << " - communicator id: " << getCommId(comm) << endl;
612 m_log << " - source / tag: " << source << " / " << tag << endl;
613#endif
614
615 startDlbIdleTimer(name);
616 int result = MPI_Irecv(buf, count, datatype, source, tag, comm, request);
617 stopDlbIdleTimer(name);
618
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};
621
622#ifdef MAIA_MPI_DEBUG
623 // Debug output
624 debugResult(result, returncodes, 7);
625#endif
626
627 // Check return code
628 if(result != MPI_SUCCESS) {
629 const MString customString = "' for variable '" + varname;
630 raiseMPIerror(result, "MPI_Irecv", returncodes, 7, name, customString);
631 }
632
633 return result;
634}
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
MString mpiTypeName(MPI_Datatype datatype)
Return the name of the given MPI datatype.

◆ MPI_Isend()

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 
)
Author
Philipp Schleich
Date
03.06.2019

Also delivers output to m_log on the execution status of MPI_Isend.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 481 of file mpioverride.cpp.

482 {
483#ifdef MAIA_MPI_DEBUG
484 m_log << " + MPI_Isend called from " << name << endl;
485 m_log << " - variable name / type: " << varname << " / " << mpiTypeName(datatype) << endl;
486 m_log << " - communicator id: " << getCommId(comm) << endl;
487 m_log << " - destination / tag: " << dest << " / " << tag << endl;
488#endif
489
490 startDlbIdleTimer(name);
491 int result = MPI_Isend(buf, count, datatype, dest, tag, comm, request);
492 stopDlbIdleTimer(name);
493
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};
496
497#ifdef MAIA_MPI_DEBUG
498 // Debug output
499 debugResult(result, returncodes, 7);
500#endif
501
502 // Check return code
503 if(result != MPI_SUCCESS) {
504 const MString customString = "' for variable '" + varname;
505 raiseMPIerror(result, "MPI_Isend", returncodes, 7, name, customString);
506 }
507
508 return result;
509}
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

◆ MPI_Issend()

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 
)
Author
Philipp Schleich
Date
03.06.2019

Also delivers output to m_log on the execution status of MPI_Issend.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 523 of file mpioverride.cpp.

524 {
525#ifdef MAIA_MPI_DEBUG
526 m_log << " + MPI_Issend called from " << name << endl;
527 m_log << " - variable name / type: " << varname << " / " << mpiTypeName(datatype) << endl;
528 m_log << " - communicator id: " << getCommId(comm) << endl;
529 m_log << " - destination / tag: " << dest << " / " << tag << endl;
530#endif
531
532 startDlbIdleTimer(name);
533 int result = MPI_Issend(buf, count, datatype, dest, tag, comm, request);
534 stopDlbIdleTimer(name);
535
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};
538
539#ifdef MAIA_MPI_DEBUG
540 // Debug output
541 debugResult(result, returncodes, 7);
542#endif
543
544 // Check return code
545 if(result != MPI_SUCCESS) {
546 const MString customString = "' for variable '" + varname;
547 raiseMPIerror(result, "MPI_Issend", returncodes, 7, name, customString);
548 }
549
550 return result;
551}
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

◆ MPI_Probe()

int MPI_Probe ( int  source,
int  tag,
MPI_Comm  comm,
MPI_Status *  status,
const MString name 
)
Author
Tim Wegmann
Date
23.12.2021
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1925 of file mpioverride.cpp.

1925 {
1926#ifdef MAIA_MPI_DEBUG
1927 m_log << " + MPI_Get_count called from " << name << endl;
1928#endif
1929
1930 startDlbIdleTimer(name);
1931 int result = MPI_Probe(source, tag, comm, status);
1932 stopDlbIdleTimer(name);
1933
1934 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1935
1936#ifdef MAIA_MPI_DEBUG
1937 // Debug output
1938 debugResult(result, returncodes, 2);
1939#endif
1940
1941 // Check return code
1942 if(result != MPI_SUCCESS) {
1943 const MString customString;
1944 raiseMPIerror(result, "MPI_Probe", returncodes, 2, name, customString);
1945 }
1946
1947 return result;
1948}
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

◆ MPI_Recv()

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 
)
Author
Philipp Schleich
Date
04.06.2019

Also delivers output to m_log on the execution status of MPI_Recv.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 565 of file mpioverride.cpp.

566 {
567#ifdef MAIA_MPI_DEBUG
568 m_log << " + MPI_Recv called from " << name << endl;
569 m_log << " - variable name / type: " << varname << " / " << mpiTypeName(datatype) << endl;
570 m_log << " - communicator id: " << getCommId(comm) << endl;
571 m_log << " - source / tag: " << source << " / " << tag << endl;
572#endif
573
574 startDlbIdleTimer(name);
575 int result = MPI_Recv(buf, count, datatype, source, tag, comm, status);
576 stopDlbIdleTimer(name);
577
578 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_TAG, MPI_ERR_RANK};
579
580#ifdef MAIA_MPI_DEBUG
581 // Debug output
582 debugResult(result, returncodes, 6);
583#endif
584
585 // Check return code
586 if(result != MPI_SUCCESS) {
587 const MString customString = "' for variable '" + varname;
588 raiseMPIerror(result, "MPI_Recv", returncodes, 6, name, customString);
589 }
590
591 return result;
592}
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

◆ MPI_Recv_init()

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 
)
Author
Philipp Schleich
Date
06.06.2019

Also delivers output to m_log on the execution status of MPI_Recv_init.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 689 of file mpioverride.cpp.

690 {
691#ifdef MAIA_MPI_DEBUG
692 m_log << " + MPI_Recv_init called from " << name << endl;
693 m_log << " - variable name: " << varname << endl;
694 m_log << " - communicator id: " << getCommId(comm) << endl;
695#endif
696
697 startDlbIdleTimer(name);
698 int result = MPI_Recv_init(buf, count, datatype, dest, tag, comm, request);
699 stopDlbIdleTimer(name);
700
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};
703
704#ifdef MAIA_MPI_DEBUG
705 // Debug output
706 debugResult(result, returncodes, 7);
707#endif
708
709 // Check return code
710 if(result != MPI_SUCCESS) {
711 const MString customString = "' for variable '" + varname;
712 raiseMPIerror(result, "MPI_Recv_init", returncodes, 7, name, customString);
713 }
714
715 return result;
716}
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

◆ MPI_Reduce()

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 
)
Author
Philipp Schleich
Date
06.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 912 of file mpioverride.cpp.

913 {
914#ifdef MAIA_MPI_DEBUG
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;
918 m_log << " - communicator id: " << getCommId(comm) << endl;
919#endif
920
921 startDlbIdleTimer(name);
922 int result = MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm);
923 stopDlbIdleTimer(name);
924
925 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
926
927#ifdef MAIA_MPI_DEBUG
928 // Debug output
929 debugResult(result, returncodes, 5);
930#endif
931
932 // Check return code
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);
936 }
937
938 return result;
939}
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

◆ MPI_Request_free()

int MPI_Request_free ( MPI_Request *  request,
const MString name 
)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1857 of file mpioverride.cpp.

1857 {
1858#ifdef MAIA_MPI_DEBUG
1859 m_log << " + MPI_Request_free called from " << name << endl;
1860#endif
1861
1862 startDlbIdleTimer(name);
1863 int result = MPI_Request_free(request);
1864 stopDlbIdleTimer(name);
1865
1866 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_OTHER};
1867
1868#ifdef MAIA_MPI_DEBUG
1869 // Debug output
1870 debugResult(result, returncodes, 2);
1871#endif
1872
1873 // Check return code
1874 if(result != MPI_SUCCESS) {
1875 const MString customString;
1876 raiseMPIerror(result, "MPI_Request_free", returncodes, 2, name, customString);
1877 }
1878
1879 return result;
1880}
int MPI_Request_free(MPI_Request *request, const MString &name)
same as MPI_Request_free

◆ MPI_Scatter()

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 
)
Author
Philipp Schleich
Date
07.06.2019
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1033 of file mpioverride.cpp.

1035 {
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;
1040 m_log << " - communicator id: " << getCommId(comm) << endl;
1041#endif
1042
1043 startDlbIdleTimer(name);
1044 int result = MPI_Scatter(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, root, comm);
1045 stopDlbIdleTimer(name);
1046
1047 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1048
1049#ifdef MAIA_MPI_DEBUG
1050 // Debug output
1051 debugResult(result, returncodes, 5);
1052#endif
1053
1054 // Check return code
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);
1058 }
1059
1060 return result;
1061}
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

◆ MPI_Scatterv()

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 
)
Author
Miro Gondrum
Date
10.01.2022
Parameters
[in]namethe name of the calling function
[in]sndvarnamename of the sendbuf
[in]rcvvarnamename of the recvbuf
Returns
the return status of the MPI call

Definition at line 1074 of file mpioverride.cpp.

1076 {
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;
1081 m_log << " - communicator id: " << getCommId(comm) << endl;
1082#endif
1083
1084 startDlbIdleTimer(name);
1085 int result = MPI_Scatterv(sendbuf, sendcount, displs, sendtype, recvbuf, recvcount, recvtype, root, comm);
1086 stopDlbIdleTimer(name);
1087
1088 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_BUFFER};
1089
1090#ifdef MAIA_MPI_DEBUG
1091 // Debug output
1092 debugResult(result, returncodes, 5);
1093#endif
1094
1095 // Check return code
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);
1099 }
1100
1101 return result;
1102}
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

◆ MPI_Send()

int MPI_Send ( const void *  buf,
int  count,
MPI_Datatype  datatype,
int  dest,
int  tag,
MPI_Comm  comm,
const MString name,
const MString varname 
)
Author
Philipp Schleich
Date
03.06.2019

Also delivers output to m_log on the execution status of MPI_Send.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 440 of file mpioverride.cpp.

441 {
442#ifdef MAIA_MPI_DEBUG
443 m_log << " + MPI_Send called from " << name << endl;
444 m_log << " - variable name / type: " << varname << " / " << mpiTypeName(datatype) << endl;
445 m_log << " - communicator id: " << getCommId(comm) << endl;
446 m_log << " - destination / tag: " << dest << " / " << tag << endl;
447#endif
448
449 startDlbIdleTimer(name);
450 int result = MPI_Send(buf, count, datatype, dest, tag, comm);
451 stopDlbIdleTimer(name);
452
453 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_COMM, MPI_ERR_COUNT, MPI_ERR_TYPE, MPI_ERR_TAG, MPI_ERR_ARG};
454
455#ifdef MAIA_MPI_DEBUG
456 // Debug output
457 debugResult(result, returncodes, 6);
458#endif
459
460 // Check return code
461 if(result != MPI_SUCCESS) {
462 const MString customString = "' for variable '" + varname;
463 raiseMPIerror(result, "MPI_Send", returncodes, 6, name, customString);
464 }
465
466 return result;
467}
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

◆ MPI_Send_init()

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 
)
Author
Philipp Schleich
Date
06.06.2019

Also delivers output to m_log on the execution status of MPI_Send_init.

\additional param[in] name of the calling function

Returns
the return status of the MPI call

Definition at line 648 of file mpioverride.cpp.

649 {
650#ifdef MAIA_MPI_DEBUG
651 m_log << " + MPI_Send_init called from " << name << endl;
652 m_log << " - variable name: " << varname << endl;
653 m_log << " - communicator id: " << getCommId(comm) << endl;
654#endif
655
656 startDlbIdleTimer(name);
657 int result = MPI_Send_init(buf, count, datatype, dest, tag, comm, request);
658 stopDlbIdleTimer(name);
659
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};
662
663#ifdef MAIA_MPI_DEBUG
664 // Debug output
665 debugResult(result, returncodes, 7);
666#endif
667
668 // Check return code
669 if(result != MPI_SUCCESS) {
670 const MString customString = "' for variable '" + varname;
671 raiseMPIerror(result, "MPI_Send_init", returncodes, 7, name, customString);
672 }
673
674 return result;
675}
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

◆ MPI_Start()

int MPI_Start ( MPI_Request *  request,
const MString name 
)
Author
Philipp Schleich
Date
05.07.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1687 of file mpioverride.cpp.

1687 {
1688#ifdef MAIA_MPI_DEBUG
1689 m_log << " + MPI_Start called from " << name << endl;
1690#endif
1691
1692 startDlbIdleTimer(name);
1693 int result = MPI_Start(request);
1694 stopDlbIdleTimer(name);
1695
1696 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST};
1697
1698#ifdef MAIA_MPI_DEBUG
1699 // Debug output
1700 debugResult(result, returncodes, 2);
1701#endif
1702
1703 // Check return code
1704 if(result != MPI_SUCCESS) {
1705 const MString customString;
1706 raiseMPIerror(result, "MPI_Start", returncodes, 2, name, customString);
1707 }
1708
1709 return result;
1710}
int MPI_Start(MPI_Request *request, const MString &name)
same as MPI_Start

◆ MPI_Startall()

int MPI_Startall ( int  count,
MPI_Request  array_of_requests[],
const MString name 
)
Author
Philipp Schleich
Date
05.07.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1721 of file mpioverride.cpp.

1721 {
1722#ifdef MAIA_MPI_DEBUG
1723 m_log << " + MPI_Startall called from " << name << endl;
1724#endif
1725
1726 startDlbIdleTimer(name);
1727 int result = MPI_Startall(count, array_of_requests);
1728 stopDlbIdleTimer(name);
1729
1730 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
1731
1732#ifdef MAIA_MPI_DEBUG
1733 // Debug output
1734 debugResult(result, returncodes, 3);
1735#endif
1736
1737 // Check return code
1738 if(result != MPI_SUCCESS) {
1739 const MString customString;
1740 raiseMPIerror(result, "MPI_Startall", returncodes, 3, name, customString);
1741 }
1742
1743 return result;
1744}
int MPI_Startall(int count, MPI_Request array_of_requests[], const MString &name)
same as MPI_Startall

◆ MPI_Test()

int MPI_Test ( MPI_Request *  request,
int *  flag,
MPI_Status *  status,
const MString name 
)
Author
Philipp Schleich
Date
18.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 836 of file mpioverride.cpp.

836 {
837#ifdef MAIA_MPI_DEBUG
838 m_log << " + MPI_Test called from " << name << endl;
839#endif
840
841 startDlbIdleTimer(name);
842 int result = MPI_Test(request, flag, status);
843 stopDlbIdleTimer(name);
844
845 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
846
847#ifdef MAIA_MPI_DEBUG
848 // Debug output
849 debugResult(result, returncodes, 3);
850#endif
851
852 // Check return code
853 if(result != MPI_SUCCESS) {
854 const MString customString;
855 raiseMPIerror(result, "MPI_Test", returncodes, 3, name, customString);
856 }
857
858 return result;
859}
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status, const MString &name)
same as MPI_Test

◆ MPI_Type_commit()

int MPI_Type_commit ( MPI_Datatype *  datatype,
const MString name 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1481 of file mpioverride.cpp.

1481 {
1482#ifdef MAIA_MPI_DEBUG
1483 m_log << " + MPI_Type_commit called from " << name << endl;
1484#endif
1485
1486 int result = MPI_Type_commit(datatype);
1487
1488 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE};
1489
1490#ifdef MAIA_MPI_DEBUG
1491 // Debug output
1492 debugResult(result, returncodes, 2);
1493#endif
1494
1495 // Check return code
1496 if(result != MPI_SUCCESS) {
1497 const MString customString;
1498 raiseMPIerror(result, "MPI_Type_commit", returncodes, 2, name, customString);
1499 }
1500
1501 return result;
1502}
int MPI_Type_commit(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_commit

◆ MPI_Type_contiguous()

int MPI_Type_contiguous ( int  count,
MPI_Datatype  old_type,
MPI_Datatype *  new_type_p,
const MString name 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1578 of file mpioverride.cpp.

1578 {
1579#ifdef MAIA_MPI_DEBUG
1580 m_log << " + MPI_Type_contiguous from " << name << endl;
1581#endif
1582
1583 int result = MPI_Type_contiguous(count, old_type, new_type_p);
1584
1585 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_COUNT, MPI_ERR_INTERN};
1586
1587#ifdef MAIA_MPI_DEBUG
1588 // Debug output
1589 debugResult(result, returncodes, 4);
1590#endif
1591
1592 // Check return code
1593 if(result != MPI_SUCCESS) {
1594 const MString customString;
1595 raiseMPIerror(result, "MPI_Type_contiguous", returncodes, 4, name, customString);
1596 }
1597
1598 return result;
1599}
int MPI_Type_contiguous(int count, MPI_Datatype old_type, MPI_Datatype *new_type_p, const MString &name)
same as MPI_Type_contiguous

◆ MPI_Type_create_hindexed()

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 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1545 of file mpioverride.cpp.

1546 {
1547#ifdef MAIA_MPI_DEBUG
1548 m_log << " + MPI_Type_create_hindexed called from " << name << endl;
1549#endif
1550
1551 int result = MPI_Type_create_hindexed(count, array_of_solverlengths, array_of_displacements, oldtype, newtype);
1552
1553 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_ARG};
1554
1555#ifdef MAIA_MPI_DEBUG
1556 // Debug output
1557 debugResult(result, returncodes, 3);
1558#endif
1559
1560 // Check return code
1561 if(result != MPI_SUCCESS) {
1562 const MString customString;
1563 raiseMPIerror(result, "MPI_Type_create_hindexed", returncodes, 3, name, customString);
1564 }
1565
1566 return result;
1567}
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

◆ MPI_Type_free()

int MPI_Type_free ( MPI_Datatype *  datatype,
const MString name 
)
Author
Philipp Schleich
Date
19.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 1513 of file mpioverride.cpp.

1513 {
1514#ifdef MAIA_MPI_DEBUG
1515 m_log << " + MPI_Type_free called from " << name << endl;
1516#endif
1517
1518 int result = MPI_Type_free(datatype);
1519
1520 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_TYPE, MPI_ERR_ARG};
1521
1522#ifdef MAIA_MPI_DEBUG
1523 // Debug output
1524 debugResult(result, returncodes, 3);
1525#endif
1526
1527 // Check return code
1528 if(result != MPI_SUCCESS) {
1529 const MString customString;
1530 raiseMPIerror(result, "MPI_Type_free", returncodes, 3, name, customString);
1531 }
1532
1533 return result;
1534}
int MPI_Type_free(MPI_Datatype *datatype, const MString &name)
same as MPI_Type_free

◆ MPI_Wait()

int MPI_Wait ( MPI_Request *  request,
MPI_Status *  status,
const MString name 
)
Author
Philipp Schleich
Date
18.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 732 of file mpioverride.cpp.

732 {
733#ifdef MAIA_MPI_DEBUG
734 m_log << " + MPI_Wait called from " << name << endl;
735#endif
736
737 startDlbIdleTimer(name);
738 int result = MPI_Wait(request, status);
739 stopDlbIdleTimer(name);
740
741 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG};
742
743#ifdef MAIA_MPI_DEBUG
744 // Debug output
745 debugResult(result, returncodes, 3);
746#endif
747
748 // Check return code
749 if(result != MPI_SUCCESS) {
750 const MString customString;
751 raiseMPIerror(result, "MPI_Wait", returncodes, 3, name, customString);
752 }
753
754 return result;
755}
int MPI_Wait(MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Wait

◆ MPI_Waitall()

int MPI_Waitall ( int  count,
MPI_Request *  request,
MPI_Status *  status,
const MString name 
)
Author
Philipp Schleich
Date
18.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 766 of file mpioverride.cpp.

766 {
767#ifdef MAIA_MPI_DEBUG
768 m_log << " + MPI_Waitall called from " << name << endl;
769#endif
770
771 startDlbIdleTimer(name);
772 int result = MPI_Waitall(count, request, status);
773 stopDlbIdleTimer(name);
774
775 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG, MPI_ERR_IN_STATUS};
776
777#ifdef MAIA_MPI_DEBUG
778 // Debug output
779 debugResult(result, returncodes, 4);
780#endif
781
782 // Check return code
783 if(result != MPI_SUCCESS) {
784 const MString customString;
785 raiseMPIerror(result, "MPI_Waitall", returncodes, 4, name, customString);
786 }
787
788 return result;
789}
int MPI_Waitall(int count, MPI_Request *request, MPI_Status *status, const MString &name)
same as MPI_Waitall

◆ MPI_Waitsome()

int MPI_Waitsome ( int  incount,
MPI_Request  array_of_requests[],
int *  outcount,
int  array_of_indices[],
MPI_Status  array_of_statuses[],
const MString name 
)
Author
Philipp Schleich
Date
18.06.2019
Parameters
[in]namethe name of the calling function
Returns
the return status of the MPI call

Definition at line 801 of file mpioverride.cpp.

802 {
803#ifdef MAIA_MPI_DEBUG
804 m_log << " + MPI_Waitsome called from " << name << endl;
805#endif
806
807 startDlbIdleTimer(name);
808 int result = MPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses);
809 stopDlbIdleTimer(name);
810
811 const MInt returncodes[] = {MPI_SUCCESS, MPI_ERR_REQUEST, MPI_ERR_ARG, MPI_ERR_IN_STATUS};
812
813#ifdef MAIA_MPI_DEBUG
814 // Debug output
815 debugResult(result, returncodes, 4);
816#endif
817
818 // Check return code
819 if(result != MPI_SUCCESS) {
820 const MString customString;
821 raiseMPIerror(result, "MPI_Waitsome", returncodes, 4, name, customString);
822 }
823
824 return result;
825}
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

◆ mpiTypeName()

MString mpiTypeName ( MPI_Datatype  datatype)

Definition at line 211 of file mpioverride.cpp.

211 {
212 char name[128];
213 int namelen;
214 MPI_Type_get_name(datatype, name, &namelen);
215 return std::string(name);
216}

◆ raiseMPIerror()

void raiseMPIerror ( const MInt  result,
const MString mpiFunction,
const MInt  returncodes[],
const MInt  len,
const MString name,
const MString customString 
)
Author
Philipp Schleich
Date
24.09.2019
Parameters
[in]returncode
[in]nameof the MPI function
[in]listof admissible returncodes
[in]numberof admissible mpi functions
[in]locationof function (name)
[in]function-specificadditional output (e.g. name of sent or received variable, size, ...)

Definition at line 181 of file mpioverride.cpp.

182 {
183 const MString errorMsg =
184 "MPI error: " + mpiFunction + " called from '" + name + customString + "' returned error code: ";
185 // MInt cnt = 1; // MPI_SUCCESS always first one, check only unsuccessful ones
186 MBool found = false;
187
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;
192
193 // If returncode in list of admissible returncodes, terminate with
194 // the corresponding error
195 for(MInt cnt = 1; cnt < len; cnt++) {
196 if(result == returncodes[cnt]) {
197 TERMM(1, errorMsg + return2string(result));
198 found = true;
199 }
200 }
201
202 // If returncode unknown or not in list of admissible returncodes,
203 // terminate with error unknown
204 if(!found) {
205 TERMM(1, errorMsg + "UNKNOWN Error. MPI Error is " + error_string);
206 }
207}

◆ return2string()

MString return2string ( const MInt  returncode)
Author
Philipp Schleich
Date
25.09.2019
Parameters
[in]returncodeas int
Returns
returncode as a string

Definition at line 71 of file mpioverride.cpp.

71 {
72 MString returnString;
73 switch(returncode) {
74 case MPI_SUCCESS:
75 returnString = "MPI_SUCCESS";
76 break;
77 case MPI_ERR_COMM:
78 returnString = "MPI_ERR_COMM";
79 break;
80 case MPI_ERR_GROUP:
81 returnString = "MPI_ERR_GROUP";
82 break;
83 case MPI_ERR_INTERN:
84 returnString = "MPI_ERR_INTERN";
85 break;
86 case MPI_ERR_ARG:
87 returnString = "MPI_ERR_ARG";
88 break;
89 case MPI_ERR_COUNT:
90 returnString = "MPI_ERR_COUNT";
91 break;
92 case MPI_ERR_TYPE:
93 returnString = "MPI_ERR_TYPE";
94 break;
95 case MPI_ERR_TAG:
96 returnString = "MPI_ERR_TAG";
97 break;
98 case MPI_ERR_RANK:
99 returnString = "MPI_ERR_RANK";
100 break;
101 case MPI_ERR_REQUEST:
102 returnString = "MPI_ERR_REQUEST";
103 break;
104 case MPI_ERR_IN_STATUS:
105 returnString = "MPI_ERR_IN_STATUS";
106 break;
107 case MPI_ERR_BUFFER:
108 returnString = "MPI_ERR_BUFFER";
109 break;
110 case MPI_ERR_OP:
111 returnString = "MPI_ERR_OP";
112 break;
113 case MPI_ERR_ROOT:
114 returnString = "MPI_ERR_ROOT";
115 break;
116 case MPI_ERR_OTHER:
117 returnString = "MPI_ERR_OTHER";
118 break;
119 case MPI_ERR_INFO:
120 returnString = "MPI_ERR_INFO";
121 break;
122 case MPI_ERR_INFO_KEY:
123 returnString = "MPI_ERR_INFO_KEY";
124 break;
125 case MPI_ERR_INFO_VALUE:
126 returnString = "MPI_ERR_INFO_VALUE";
127 break;
128 case MPI_ERR_TRUNCATE:
129 returnString = "MPI_ERR_TRUNCATE: Message truncated on receive. Receive buffer too small for message.";
130 break;
131 default:
132 returnString = "UNKNOWN";
133 }
134
135 return returnString;
136}

◆ startDlbIdleTimer()

void startDlbIdleTimer ( const MString name)
inline

Definition at line 225 of file mpioverride.cpp.

void stopLoadStartIdleTimer(const MString &name)
Stop the currently running load timer and start the corresponding idle timer.
Definition: dlbtimer.h:408
DlbTimerController g_dlbTimerController

◆ stopDlbIdleTimer()

void stopDlbIdleTimer ( const MString name)
inline

Definition at line 227 of file mpioverride.cpp.

void stopIdleStartLoadTimer(const MString &name)
Stop the currently running idle timer and start the corresponding load timer.
Definition: dlbtimer.h:423

Variable Documentation

◆ mpi_dbg_cnt

MInt mpi_dbg_cnt = 0

Definition at line 25 of file mpioverride.cpp.

◆ mpi_dbg_lst

map<MPI_Comm, MInt> mpi_dbg_lst {}

Definition at line 24 of file mpioverride.cpp.