45#if defined(MPIDEBUGGING_DELAY_US) && MPIDEBUGGING_DELAY_US > 0
49#define MPIDBG_LINESIZE 1024
50#define MPIDBG_BUFSIZE 128
58static inline int MPIDBG_Get_rank(
void) {
61#define MPIDBG_RANK MPIDBG_Get_rank()
68static inline void MPIDBG_Out(
const char *file,
int line,
const char *func,
const char *fmt, ...) {
69 char buf[MPIDBG_LINESIZE];
72 snprintf(buf,MPIDBG_LINESIZE,
"*** [%d] %10s %4d @ %-16s: ", MPIDBG_RANK, file, line, func);
73 vsnprintf(buf + strlen(buf),MPIDBG_LINESIZE-strlen(buf), fmt, ap);
76 fprintf(stderr,
"%s\n", buf);
78#define MPIDBG_Out(...) MPIDBG_Out(file, line, func, __VA_ARGS__)
85static inline void MPIDBG_insert_delay(
void)
87#if defined(MPIDEBUGGING_DELAY_US) && MPIDEBUGGING_DELAY_US > 0
88 usleep(MPIDEBUGGING_DELAY_US);
97static inline void MPIDBG_sprint_requests(
char *buf,
int count,
const MPI_Request *requests)
100 buf += sprintf(buf,
"(");
102 for ( i = 0; i < count; i++ ) {
107 buf += sprintf(buf,
",");
109 if ( requests[i] != MPI_REQUEST_NULL ) {
110 buf += sprintf(buf,
"%d", i);
113 buf += sprintf(buf,
"*");
116 buf += sprintf(buf,
")");
124static inline void MPIDBG_sprint_statuses(
char *buf,
int count,
const MPI_Request *old_requests,
const MPI_Request *new_requests,
const MPI_Status *statuses)
127 buf += sprintf(buf,
"(");
129 for ( i = 0; i < count; i++ ) {
134 buf += sprintf(buf,
",");
136 if ( old_requests[i] != MPI_REQUEST_NULL && new_requests[i] == MPI_REQUEST_NULL ) {
138 MPI_Get_count((MPI_Status *)&statuses[i], MPI_BYTE, &ret_size);
139 buf += sprintf(buf,
"(source=%d,tag=%d,size=%d)", statuses[i].MPI_SOURCE, statuses[i].MPI_TAG, ret_size);
141 buf += sprintf(buf,
"*");
144 buf += sprintf(buf,
")");
157#define MPIDBG_EXTARG const char *file, int line, const char *func
163static inline int MPIDBG_Init(
int* argc,
char*** argv, MPIDBG_EXTARG)
165 int ret = MPI_Init(argc, argv);
166 if ( ret == MPI_SUCCESS ) {
167 MPIDBG_Out(
"MPI_Init: OK");
170 MPIDBG_Out(
"MPI_Init: Failed");
174#define MPI_Init(...) MPIDBG_Init(__VA_ARGS__, __FILE__, __LINE__, __func__)
181static inline int MPIDBG_Finalize(MPIDBG_EXTARG)
183 MPIDBG_Out(
"MPI_Finalize");
184 int ret = MPI_Finalize();
185 if ( ret == MPI_SUCCESS ) {
186 MPIDBG_Out(
"MPI_Finalize: OK");
189 MPIDBG_Out(
"MPI_Finalize: Failed");
193#define MPI_Finalize() MPIDBG_Finalize(__FILE__, __LINE__, __func__)
200static inline int MPIDBG_Send(
void *buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPIDBG_EXTARG)
202 MPIDBG_Out(
"MPI_Send: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
203 int ret = MPI_Send(buf, count, datatype, dest, tag, comm);
204 if ( ret == MPI_SUCCESS ) {
205 MPIDBG_Out(
"MPI_Send: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
208 MPIDBG_Out(
"MPI_Send: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
212#define MPI_Send(...) MPIDBG_Send(__VA_ARGS__, __FILE__, __LINE__, __func__)
219static inline int MPIDBG_Recv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag, MPI_Comm comm, MPI_Status *status, MPIDBG_EXTARG)
222 if ( status == MPI_STATUS_IGNORE ) status = &st;
223 MPIDBG_Out(
"MPI_Recv: src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
224 int ret = MPI_Recv(buf, count, datatype, source, tag, comm, status);
225 if ( ret == MPI_SUCCESS ) {
227 MPI_Get_count(status, datatype, &ret_count);
228 MPIDBG_Out(
"MPI_Recv: OK src=%d dest=%d tag=%d count=%d", status->MPI_SOURCE, MPIDBG_RANK, status->MPI_TAG, ret_count);
231 MPIDBG_Out(
"MPI_Recv: Failed src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
235#define MPI_Recv(...) MPIDBG_Recv(__VA_ARGS__, __FILE__, __LINE__, __func__)
242static inline int MPIDBG_Bsend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPIDBG_EXTARG)
244 MPIDBG_Out(
"MPI_Bsend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
245 int ret = MPI_Bsend(buf, count, datatype, dest, tag, comm);
246 if ( ret == MPI_SUCCESS ) {
247 MPIDBG_Out(
"MPI_Bsend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
250 MPIDBG_Out(
"MPI_Bsend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
254#define MPI_Bsend(...) MPIDBG_Bsend(__VA_ARGS__, __FILE__, __LINE__, __func__)
261static inline int MPIDBG_Ssend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPIDBG_EXTARG)
263 MPIDBG_Out(
"MPI_Ssend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
264 int ret = MPI_Ssend(buf, count, datatype, dest, tag, comm);
265 if ( ret == MPI_SUCCESS ) {
266 MPIDBG_Out(
"MPI_Ssend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
269 MPIDBG_Out(
"MPI_Ssend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
273#define MPI_Ssend(...) MPIDBG_Ssend(__VA_ARGS__, __FILE__, __LINE__, __func__)
280static inline int MPIDBG_Rsend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPIDBG_EXTARG)
282 MPIDBG_Out(
"MPI_Rsend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
283 int ret = MPI_Rsend(buf, count, datatype, dest, tag, comm);
284 if ( ret == MPI_SUCCESS ) {
285 MPIDBG_Out(
"MPI_Rsend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
288 MPIDBG_Out(
"MPI_Rsend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
292#define MPI_Rsend(...) MPIDBG_Rsend(__VA_ARGS__, __FILE__, __LINE__, __func__)
299static inline int MPIDBG_Isend(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request *request, MPIDBG_EXTARG)
301 MPIDBG_Out(
"MPI_Isend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
302 int ret = MPI_Isend(buf, count, datatype, dest, tag, comm, request);
303 if ( ret == MPI_SUCCESS ) {
304 MPIDBG_Out(
"MPI_Isend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
307 MPIDBG_Out(
"MPI_Isend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
311#define MPI_Isend(...) MPIDBG_Isend(__VA_ARGS__, __FILE__, __LINE__, __func__)
318static inline int MPIDBG_Ibsend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request *request, MPIDBG_EXTARG)
320 MPIDBG_Out(
"MPI_Ibsend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
321 int ret = MPI_Ibsend(buf, count, datatype, dest, tag, comm, request);
322 if ( ret == MPI_SUCCESS ) {
323 MPIDBG_Out(
"MPI_Ibsend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
326 MPIDBG_Out(
"MPI_Ibsend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
330#define MPI_Ibsend(...) MPIDBG_Ibsend(__VA_ARGS__, __FILE__, __LINE__, __func__)
337static inline int MPIDBG_Issend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request *request, MPIDBG_EXTARG)
339 MPIDBG_Out(
"MPI_Issend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
340 int ret = MPI_Issend(buf, count, datatype, dest, tag, comm, request);
341 if ( ret == MPI_SUCCESS ) {
342 MPIDBG_Out(
"MPI_Issend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
345 MPIDBG_Out(
"MPI_Issend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
349#define MPI_Issend(...) MPIDBG_Issend(__VA_ARGS__, __FILE__, __LINE__, __func__)
356static inline int MPIDBG_Irsend(
void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm, MPI_Request *request, MPIDBG_EXTARG)
358 MPIDBG_Out(
"MPI_Irsend: src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
359 int ret = MPI_Irsend(buf, count, datatype, dest, tag, comm, request);
360 if ( ret == MPI_SUCCESS ) {
361 MPIDBG_Out(
"MPI_Irsend: OK src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
364 MPIDBG_Out(
"MPI_Irsend: Failed src=%d dest=%d tag=%d count=%d", MPIDBG_RANK, dest, tag, count);
368#define MPI_Irsend(...) MPIDBG_Irsend(__VA_ARGS__, __FILE__, __LINE__, __func__)
375static inline int MPIDBG_Irecv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag, MPI_Comm comm, MPI_Request *request, MPIDBG_EXTARG)
377 MPIDBG_Out(
"MPI_Irecv: src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
378 int ret = MPI_Irecv(buf, count, datatype, source, tag, comm, request);
379 if ( ret == MPI_SUCCESS ) {
380 MPIDBG_Out(
"MPI_Irecv: OK src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
383 MPIDBG_Out(
"MPI_Irecv: Failed src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
387#define MPI_Irecv(...) MPIDBG_Irecv(__VA_ARGS__, __FILE__, __LINE__, __func__)
394static inline int MPIDBG_Wait(MPI_Request *request, MPI_Status *status, MPIDBG_EXTARG)
397 if ( status == MPI_STATUS_IGNORE ) status = &st;
398 char buf1[MPIDBG_BUFSIZE * 1], buf2[MPIDBG_BUFSIZE * 1];
399 MPI_Request old_request = *request;
400 MPIDBG_sprint_requests(buf1, 1, request);
401 MPIDBG_Out(
"MPI_Wait: rank=%d request=%s", MPIDBG_RANK, buf1);
402 int ret = MPI_Wait(request, status);
403 if ( ret == MPI_SUCCESS ) {
404 MPIDBG_sprint_statuses(buf2, 1, request, &old_request, status);
405 MPIDBG_Out(
"MPI_Wait: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
408 MPIDBG_Out(
"MPI_Wait: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
412#define MPI_Wait(...) MPIDBG_Wait(__VA_ARGS__, __FILE__, __LINE__, __func__)
419static inline int MPIDBG_Test(MPI_Request *request,
int *flag, MPI_Status *status, MPIDBG_EXTARG)
422 if ( status == MPI_STATUS_IGNORE ) status = &st;
423 char buf1[MPIDBG_BUFSIZE * 1], buf2[MPIDBG_BUFSIZE * 1];
424 MPI_Request old_request = *request;
425 MPIDBG_sprint_requests(buf1, 1, request);
426 MPIDBG_Out(
"MPI_Test: rank=%d request=%s", MPIDBG_RANK, buf1);
427 int ret = MPI_Test(request, flag, status);
428 if ( ret == MPI_SUCCESS ) {
430 MPIDBG_sprint_statuses(buf2, 1, request, &old_request, status);
431 MPIDBG_Out(
"MPI_Test: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
434 MPIDBG_Out(
"MPI_Test: OK rank=%d request=%s flag=false", MPIDBG_RANK, buf1);
438 MPIDBG_Out(
"MPI_Test: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
442#define MPI_Test(...) MPIDBG_Test(__VA_ARGS__, __FILE__, __LINE__, __func__)
449static inline int MPIDBG_Waitany(
int count, MPI_Request *array_of_requests,
int *index, MPI_Status *status, MPIDBG_EXTARG)
452 if ( status == MPI_STATUS_IGNORE ) status = &st;
453 char buf1[MPIDBG_BUFSIZE * 1], buf2[MPIDBG_BUFSIZE * 1];
454 MPI_Request old_requests[count];
455 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * count);
456 MPIDBG_sprint_requests(buf1, count, array_of_requests);
457 MPIDBG_Out(
"MPI_Waitany: rank=%d request=%s", MPIDBG_RANK, buf1);
458 int ret = MPI_Waitany(count, array_of_requests, index, status);
459 if ( ret == MPI_SUCCESS ) {
460 MPI_Status statuses[count];
461 statuses[*index] = *status;
462 MPIDBG_sprint_statuses(buf2, count, old_requests, array_of_requests, statuses);
463 MPIDBG_Out(
"MPI_Waitany: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
466 MPIDBG_Out(
"MPI_Waitany: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
470#define MPI_Waitany(...) MPIDBG_Waitany(__VA_ARGS__, __FILE__, __LINE__, __func__)
477static inline int MPIDBG_Testany(
int count, MPI_Request *array_of_requests,
int *index,
int *flag, MPI_Status *status, MPIDBG_EXTARG)
480 if ( status == MPI_STATUS_IGNORE ) status = &st;
481 char buf1[MPIDBG_BUFSIZE * 1], buf2[MPIDBG_BUFSIZE * 1];
482 MPI_Request old_requests[count];
483 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * count);
484 MPIDBG_sprint_requests(buf1, count, array_of_requests);
485 MPIDBG_Out(
"MPI_Testany: rank=%d request=%s", MPIDBG_RANK, buf1);
486 int ret = MPI_Testany(count, array_of_requests, index, flag, status);
487 if ( ret == MPI_SUCCESS ) {
489 MPI_Status statuses[count];
490 statuses[*index] = *status;
491 MPIDBG_sprint_statuses(buf2, count, old_requests, array_of_requests, statuses);
492 MPIDBG_Out(
"MPI_Testany: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
495 MPIDBG_Out(
"MPI_Testany: OK rank=%d request=%s flag=false", MPIDBG_RANK, buf1);
499 MPIDBG_Out(
"MPI_Testany: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
503#define MPI_Testany(...) MPIDBG_Testany(__VA_ARGS__, __FILE__, __LINE__, __func__)
510static inline int MPIDBG_Waitall(
int count, MPI_Request *array_of_requests, MPI_Status *array_of_statuses, MPIDBG_EXTARG)
512 MPI_Status st[count];
513 if ( array_of_statuses == MPI_STATUSES_IGNORE ) array_of_statuses = st;
514 char buf1[MPIDBG_BUFSIZE * count], buf2[MPIDBG_BUFSIZE * count];
515 MPI_Request old_requests[count];
516 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * count);
517 MPIDBG_sprint_requests(buf1, count, array_of_requests);
518 MPIDBG_Out(
"MPI_Waitall: rank=%d request=%s", MPIDBG_RANK, buf1);
519 int ret = MPI_Waitall(count, array_of_requests, array_of_statuses);
520 if ( ret == MPI_SUCCESS ) {
521 MPIDBG_sprint_statuses(buf2, count, old_requests, array_of_requests, array_of_statuses);
522 MPIDBG_Out(
"MPI_Waitall: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
525 MPIDBG_Out(
"MPI_Waitall: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
529#define MPI_Waitall(...) MPIDBG_Waitall(__VA_ARGS__, __FILE__, __LINE__, __func__)
536static inline int MPIDBG_Testall(
int count, MPI_Request *array_of_requests,
int *flag, MPI_Status *array_of_statuses, MPIDBG_EXTARG)
538 MPI_Status st[count];
539 if ( array_of_statuses == MPI_STATUSES_IGNORE ) array_of_statuses = st;
540 char buf1[MPIDBG_BUFSIZE * count], buf2[MPIDBG_BUFSIZE * count];
541 MPI_Request old_requests[count];
542 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * count);
543 MPIDBG_sprint_requests(buf1, count, array_of_requests);
544 MPIDBG_Out(
"MPI_Testall: rank=%d request=%s", MPIDBG_RANK, buf1);
545 int ret = MPI_Testall(count, array_of_requests, flag, array_of_statuses);
546 if ( ret == MPI_SUCCESS ) {
548 MPIDBG_sprint_statuses(buf2, count, old_requests, array_of_requests, array_of_statuses);
549 MPIDBG_Out(
"MPI_Testall: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
552 MPIDBG_Out(
"MPI_Testall: OK rank=%d request=%s flag=false", MPIDBG_RANK, buf1);
556 MPIDBG_Out(
"MPI_Testall: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
560#define MPI_Testall(...) MPIDBG_Testall(__VA_ARGS__, __FILE__, __LINE__, __func__)
567static inline int MPIDBG_Waitsome(
int incount, MPI_Request *array_of_requests,
int *outcount,
int *array_of_indices, MPI_Status *array_of_statuses, MPIDBG_EXTARG)
569 MPI_Status st[incount];
570 if ( array_of_statuses == MPI_STATUSES_IGNORE ) array_of_statuses = st;
571 char buf1[MPIDBG_BUFSIZE * incount], buf2[MPIDBG_BUFSIZE * incount];
572 MPI_Request old_requests[incount];
573 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * incount);
574 MPIDBG_sprint_requests(buf1, incount, array_of_requests);
575 MPIDBG_Out(
"MPI_Waitsome: rank=%d request=%s", MPIDBG_RANK, buf1);
576 int ret = MPI_Waitsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses);
577 if ( ret == MPI_SUCCESS ) {
578 MPIDBG_sprint_statuses(buf2, incount, old_requests, array_of_requests, array_of_statuses);
579 MPIDBG_Out(
"MPI_Waitsome: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
582 MPIDBG_Out(
"MPI_Waitsome: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
586#define MPI_Waitsome(...) MPIDBG_Waitsome(__VA_ARGS__, __FILE__, __LINE__, __func__)
593static inline int MPIDBG_Testsome(
int incount, MPI_Request *array_of_requests,
int *outcount,
int *array_of_indices, MPI_Status *array_of_statuses, MPIDBG_EXTARG)
595 MPI_Status st[incount];
596 if ( array_of_statuses == MPI_STATUSES_IGNORE ) array_of_statuses = st;
597 char buf1[MPIDBG_BUFSIZE * incount], buf2[MPIDBG_BUFSIZE * incount];
598 MPI_Request old_requests[incount];
599 memcpy(old_requests, array_of_requests,
sizeof(MPI_Request) * incount);
600 MPIDBG_sprint_requests(buf1, incount, array_of_requests);
601 MPIDBG_Out(
"MPI_Testsome: rank=%d request=%s", MPIDBG_RANK, buf1);
602 int ret = MPI_Testsome(incount, array_of_requests, outcount, array_of_indices, array_of_statuses);
603 if ( ret == MPI_SUCCESS ) {
604 MPIDBG_sprint_statuses(buf2, incount, old_requests, array_of_requests, array_of_statuses);
605 MPIDBG_Out(
"MPI_Testsome: OK rank=%d request=%s result=%s", MPIDBG_RANK, buf1, buf2);
608 MPIDBG_Out(
"MPI_Testsome: Failed rank=%d request=%s", MPIDBG_RANK, buf1);
612#define MPI_Testsome(...) MPIDBG_Testsome(__VA_ARGS__, __FILE__, __LINE__, __func__)
619static inline int MPIDBG_Iprobe(
int source,
int tag, MPI_Comm comm,
int *flag, MPI_Status *status, MPIDBG_EXTARG)
622 if ( status == MPI_STATUS_IGNORE ) status = &st;
623 MPIDBG_Out(
"MPI_Iprobe: src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
624 MPIDBG_insert_delay();
625 int ret = MPI_Iprobe(source, tag, comm, flag, status);
626 if ( ret == MPI_SUCCESS ) {
629 MPI_Get_count(status, MPI_BYTE, &ret_size);
630 MPIDBG_Out(
"MPI_Iprobe: OK src=%d dest=%d tag=%d size=%d", status->MPI_SOURCE, MPIDBG_RANK, status->MPI_TAG, ret_size);
633 MPIDBG_Out(
"MPI_Iprobe: OK src=%d dest=%d tag=%d flag=false", source, MPIDBG_RANK, tag);
637 MPIDBG_Out(
"MPI_Iprobe: Failed src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
641#define MPI_Iprobe(...) MPIDBG_Iprobe(__VA_ARGS__, __FILE__, __LINE__, __func__)
648static inline int MPIDBG_Probe(
int source,
int tag, MPI_Comm comm, MPI_Status *status, MPIDBG_EXTARG)
651 if ( status == MPI_STATUS_IGNORE ) status = &st;
652 MPIDBG_Out(
"MPI_Probe: src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
653 int ret = MPI_Probe(source, tag, comm, status);
654 if ( ret == MPI_SUCCESS ) {
656 MPI_Get_count(status, MPI_BYTE, &ret_size);
657 MPIDBG_Out(
"MPI_Probe: OK src=%d dest=%d tag=%d size=%d", status->MPI_SOURCE, MPIDBG_RANK, status->MPI_TAG, ret_size);
660 MPIDBG_Out(
"MPI_Probe: Failed src=%d dest=%d tag=%d", source, MPIDBG_RANK, tag);
664#define MPI_Probe(...) MPIDBG_Probe(__VA_ARGS__, __FILE__, __LINE__, __func__)
671static inline int MPIDBG_Cancel(MPI_Request *request, MPIDBG_EXTARG)
673 MPIDBG_Out(
"MPI_Cancel", MPIDBG_RANK);
674 int ret = MPI_Cancel(request);
675 if ( ret == MPI_SUCCESS ) {
676 MPIDBG_Out(
"MPI_Cancel: OK");
679 MPIDBG_Out(
"MPI_Cancel: Failed");
683#define MPI_Cancel(...) MPIDBG_Cancel(__VA_ARGS__, __FILE__, __LINE__, __func__)
690static inline int MPIDBG_Test_cancelled(MPI_Status *status,
int *flag, MPIDBG_EXTARG)
692 MPIDBG_Out(
"MPI_Test_cancelled", MPIDBG_RANK);
693 int ret = MPI_Test_cancelled(status, flag);
694 if ( ret == MPI_SUCCESS ) {
696 MPIDBG_Out(
"MPI_Test_cancelled: OK flag=true");
699 MPIDBG_Out(
"MPI_Test_cancelled: OK flag=false");
703 MPIDBG_Out(
"MPI_Test_cancelled: Failed");
707#define MPI_Test_cancelled(...) MPIDBG_Test_cancelled(__VA_ARGS__, __FILE__, __LINE__, __func__)
714static inline int MPIDBG_Barrier(MPI_Comm comm, MPIDBG_EXTARG)
716 MPIDBG_Out(
"MPI_Barrier");
717 int ret = MPI_Barrier(comm);
718 if ( ret == MPI_SUCCESS ) {
719 MPIDBG_Out(
"MPI_Barrier: OK");
722 MPIDBG_Out(
"MPI_Barrier: Failed");
726#define MPI_Barrier(...) MPIDBG_Barrier(__VA_ARGS__, __FILE__, __LINE__, __func__)
733static inline int MPIDBG_Bcast(
void* buffer,
int count, MPI_Datatype datatype,
int root, MPI_Comm comm, MPIDBG_EXTARG)
735 MPIDBG_Out(
"MPI_Bcast: root=%d count=%d", root, count);
736 int ret = MPI_Bcast(buffer, count, datatype, root, comm);
737 if ( ret == MPI_SUCCESS ) {
738 MPIDBG_Out(
"MPI_Bcast: OK root=%d count=%d", root, count);
741 MPIDBG_Out(
"MPI_Bcast: Failed root=%d count=%d", root, count);
745#define MPI_Bcast(...) MPIDBG_Bcast(__VA_ARGS__, __FILE__, __LINE__, __func__)
752static inline int MPIDBG_Reduce(
const void *sendbuf,
void *recvbuf,
int count, MPI_Datatype datatype, MPI_Op op,
int root, MPI_Comm comm, MPIDBG_EXTARG)
754 MPIDBG_Out(
"MPI_Reduce: root=%d count=%d", root, count);
755 int ret = MPI_Reduce(sendbuf, recvbuf, count, datatype, op, root, comm);
756 if ( ret == MPI_SUCCESS ) {
757 MPIDBG_Out(
"MPI_Reduce: OK root=%d count=%d", root, count);
760 MPIDBG_Out(
"MPI_Reduce: Failed root=%d count=%d", root, count);
764#define MPI_Reduce(...) MPIDBG_Reduce(__VA_ARGS__, __FILE__, __LINE__, __func__)