@@ -736,15 +736,14 @@ PREFIX (init) (int *argc, char ***argv)
736
736
if (caf_num_images == 0 )
737
737
{
738
738
int ierr = 0 , i = 0 , j = 0 , rc ;
739
-
740
- int is_init = 0 , prior_thread_level = MPI_THREAD_SINGLE ;
739
+ int prov_lev = 0 ;
740
+ int is_init = 0 , prior_thread_level = MPI_THREAD_FUNNELED ;
741
741
MPI_Initialized (& is_init );
742
742
743
743
if (is_init ) {
744
744
MPI_Query_thread (& prior_thread_level );
745
745
}
746
746
#ifdef HELPER
747
- int prov_lev = 0 ;
748
747
if (is_init ) {
749
748
prov_lev = prior_thread_level ;
750
749
caf_owns_mpi = false;
@@ -757,10 +756,12 @@ PREFIX (init) (int *argc, char ***argv)
757
756
caf_runtime_error ("MPI_THREAD_MULTIPLE is not supported: %d" , prov_lev );
758
757
#else
759
758
if (is_init ) {
760
- caf_owns_mpi = false;
759
+ caf_owns_mpi = false;
761
760
} else {
762
- MPI_Init (argc , argv );
763
- caf_owns_mpi = true;
761
+ MPI_Init_thread (argc , argv , prior_thread_level , & prov_lev );
762
+ caf_owns_mpi = true;
763
+ if (caf_this_image == 0 && MPI_THREAD_FUNNELED != prov_lev )
764
+ caf_runtime_error ("MPI_THREAD_FUNNELED is not supported: %d" , prov_lev );
764
765
}
765
766
#endif
766
767
if (unlikely ((ierr != MPI_SUCCESS )))
@@ -6630,13 +6631,13 @@ GEN_REDUCTION (do_max_int1, int8_t,
6630
6631
inoutvec [i ] = invec [i ] <= inoutvec [i ] ? inoutvec [i ] : invec [i ])
6631
6632
#endif
6632
6633
6633
- #ifndef MPI_INTEGER2
6634
- GEN_REDUCTION (do_sum_int1 , int16_t , inoutvec [i ] += invec [i ])
6635
- GEN_REDUCTION (do_min_int1 , int16_t ,
6636
- inoutvec [i ] = invec [i ] >= inoutvec [i ] ? inoutvec [i ] : invec [i ])
6637
- GEN_REDUCTION (do_max_int1 , int16_t ,
6638
- inoutvec [i ] = invec [i ] <= inoutvec [i ] ? inoutvec [i ] : invec [i ])
6639
- #endif
6634
+ /* #ifndef MPI_INTEGER2 */
6635
+ /* GEN_REDUCTION (do_sum_int1, int16_t, inoutvec[i] += invec[i]) */
6636
+ /* GEN_REDUCTION (do_min_int1, int16_t, */
6637
+ /* inoutvec[i] = invec[i] >= inoutvec[i] ? inoutvec[i] : invec[i]) */
6638
+ /* GEN_REDUCTION (do_max_int1, int16_t, */
6639
+ /* inoutvec[i] = invec[i] <= inoutvec[i] ? inoutvec[i] : invec[i]) */
6640
+ /* #endif */
6640
6641
6641
6642
#if defined(MPI_INTEGER16 ) && defined(GFC_INTEGER_16 )
6642
6643
GEN_REDUCTION (do_sum_int1 , GFC_INTEGER_16 , inoutvec [i ] += invec [i ])
0 commit comments