@@ -459,7 +459,7 @@ static void MPI_Barrier_fortran_wrapper(MPI_Fint *comm, MPI_Fint *ierr) {
459
459
int _wrap_py_return_val = 0 ;
460
460
461
461
Tsc const tsc = rdtsc ();
462
-
462
+
463
463
#if (!defined(MPICH_HAS_C2F ) && defined(MPICH_NAME ) && (MPICH_NAME == 1 )) /* MPICH test */
464
464
_wrap_py_return_val = PMPI_Barrier ((MPI_Comm )(* comm ));
465
465
#else /* MPI-2 safe call */
@@ -505,4 +505,60 @@ _EXTERN_C_ void mpi_barrier_(MPI_Fint *comm, MPI_Fint *ierr) {
505
505
506
506
_EXTERN_C_ void mpi_barrier__ (MPI_Fint * comm , MPI_Fint * ierr ) {
507
507
MPI_Barrier_fortran_wrapper (comm , ierr );
508
+ }
509
+
510
+
511
+ static void MPI_Ibarrier_fortran_wrapper (MPI_Fint * comm , MPI_Fint * request , MPI_Fint * ierr ) {
512
+ int _wrap_py_return_val = 0 ;
513
+
514
+ Tsc const tsc = rdtsc ();
515
+
516
+ #if (!defined(MPICH_HAS_C2F ) && defined(MPICH_NAME ) && (MPICH_NAME == 1 )) /* MPICH test */
517
+ _wrap_py_return_val = PMPI_Ibarrier ((MPI_Comm )(* comm ), (MPI_Request * )request );
518
+ #else /* MPI-2 safe call */
519
+ MPI_Request temp_request ;
520
+ temp_request = MPI_Request_f2c (* request );
521
+ _wrap_py_return_val = PMPI_Ibarrier (MPI_Comm_f2c (* comm ), & temp_request );
522
+ * request = MPI_Request_c2f (temp_request );
523
+ #endif /* MPICH test */
524
+
525
+ Tsc const duration = rdtsc () - tsc ;
526
+
527
+ MpiCall const ibarrier = {
528
+ .kind = Ibarrier ,
529
+ .time = -1.0 ,
530
+ .tsc = tsc ,
531
+ .duration = duration ,
532
+ .current_rank = current_rank ,
533
+ .partner_rank = -1 ,
534
+ .nb_bytes_s = 0 ,
535
+ .nb_bytes_r = 0 ,
536
+ .comm = PMPI_Comm_c2f ((MPI_Comm )comm ),
537
+ .req = * request ,
538
+ .tag = -1 ,
539
+ .required_thread_lvl = -1 ,
540
+ .provided_thread_lvl = -1 ,
541
+ .op_type = -1 ,
542
+ .finished = false,
543
+ };
544
+
545
+ register_mpi_call (ibarrier );
546
+
547
+ * ierr = _wrap_py_return_val ;
548
+ }
549
+
550
+ _EXTERN_C_ void MPI_IBARRIER (MPI_Fint * comm , MPI_Fint * request , MPI_Fint * ierr ) {
551
+ MPI_Ibarrier_fortran_wrapper (comm , request , ierr );
552
+ }
553
+
554
+ _EXTERN_C_ void mpi_ibarrier (MPI_Fint * comm , MPI_Fint * request , MPI_Fint * ierr ) {
555
+ MPI_Ibarrier_fortran_wrapper (comm , request , ierr );
556
+ }
557
+
558
+ _EXTERN_C_ void mpi_ibarrier_ (MPI_Fint * comm , MPI_Fint * request , MPI_Fint * ierr ) {
559
+ MPI_Ibarrier_fortran_wrapper (comm , request , ierr );
560
+ }
561
+
562
+ _EXTERN_C_ void mpi_ibarrier__ (MPI_Fint * comm , MPI_Fint * request , MPI_Fint * ierr ) {
563
+ MPI_Ibarrier_fortran_wrapper (comm , request , ierr );
508
564
}
0 commit comments