@@ -620,4 +620,63 @@ _EXTERN_C_ void mpi_test_(MPI_Fint *request, MPI_Fint *flag, MPI_Fint *status, M
620
620
621
621
_EXTERN_C_ void mpi_test__ (MPI_Fint * request , MPI_Fint * flag , MPI_Fint * status , MPI_Fint * ierr ) {
622
622
MPI_Test_fortran_wrapper (request , flag , status , ierr );
623
+ }
624
+
625
+
626
+ static void MPI_Wait_fortran_wrapper (MPI_Fint * request , MPI_Fint * status , MPI_Fint * ierr ) {
627
+ int _wrap_py_return_val = 0 ;
628
+
629
+ Tsc const tsc = rdtsc ();
630
+
631
+ #if (!defined(MPICH_HAS_C2F ) && defined(MPICH_NAME ) && (MPICH_NAME == 1 )) /* MPICH test */
632
+ _wrap_py_return_val = PMPI_Wait ((MPI_Request * )request , (MPI_Status * )status );
633
+ #else /* MPI-2 safe call */
634
+ MPI_Request temp_request ;
635
+ MPI_Status temp_status ;
636
+ temp_request = MPI_Request_f2c (* request );
637
+ MPI_Status_f2c (status , & temp_status );
638
+ _wrap_py_return_val = PMPI_Wait (& temp_request , & temp_status );
639
+ * request = MPI_Request_c2f (temp_request );
640
+ MPI_Status_c2f (& temp_status , status );
641
+ #endif /* MPICH test */
642
+
643
+ Tsc const duration = rdtsc () - tsc ;
644
+
645
+ MpiCall const wait = {
646
+ .kind = Wait ,
647
+ .time = -1.0 ,
648
+ .tsc = tsc ,
649
+ .duration = duration ,
650
+ .current_rank = current_rank ,
651
+ .partner_rank = -1 ,
652
+ .nb_bytes_s = 0 ,
653
+ .nb_bytes_r = 0 ,
654
+ .comm = -1 ,
655
+ .req = * request ,
656
+ .tag = -1 ,
657
+ .required_thread_lvl = -1 ,
658
+ .provided_thread_lvl = -1 ,
659
+ .op_type = -1 ,
660
+ .finished = false,
661
+ };
662
+
663
+ register_mpi_call (wait );
664
+
665
+ * ierr = _wrap_py_return_val ;
666
+ }
667
+
668
+ _EXTERN_C_ void MPI_WAIT (MPI_Fint * request , MPI_Fint * status , MPI_Fint * ierr ) {
669
+ MPI_Wait_fortran_wrapper (request , status , ierr );
670
+ }
671
+
672
+ _EXTERN_C_ void mpi_wait (MPI_Fint * request , MPI_Fint * status , MPI_Fint * ierr ) {
673
+ MPI_Wait_fortran_wrapper (request , status , ierr );
674
+ }
675
+
676
+ _EXTERN_C_ void mpi_wait_ (MPI_Fint * request , MPI_Fint * status , MPI_Fint * ierr ) {
677
+ MPI_Wait_fortran_wrapper (request , status , ierr );
678
+ }
679
+
680
+ _EXTERN_C_ void mpi_wait__ (MPI_Fint * request , MPI_Fint * status , MPI_Fint * ierr ) {
681
+ MPI_Wait_fortran_wrapper (request , status , ierr );
623
682
}
0 commit comments