@@ -737,15 +737,14 @@ PREFIX (init) (int *argc, char ***argv)
737
737
if (caf_num_images == 0 )
738
738
{
739
739
int ierr = 0 , i = 0 , j = 0 , rc ;
740
-
741
- int is_init = 0 , prior_thread_level = MPI_THREAD_SINGLE ;
740
+ int prov_lev = 0 ;
741
+ int is_init = 0 , prior_thread_level = MPI_THREAD_FUNNELED ;
742
742
MPI_Initialized (& is_init );
743
743
744
744
if (is_init ) {
745
745
MPI_Query_thread (& prior_thread_level );
746
746
}
747
747
#ifdef HELPER
748
- int prov_lev = 0 ;
749
748
if (is_init ) {
750
749
prov_lev = prior_thread_level ;
751
750
caf_owns_mpi = false;
@@ -758,10 +757,12 @@ PREFIX (init) (int *argc, char ***argv)
758
757
caf_runtime_error ("MPI_THREAD_MULTIPLE is not supported: %d" , prov_lev );
759
758
#else
760
759
if (is_init ) {
761
- caf_owns_mpi = false;
760
+ caf_owns_mpi = false;
762
761
} else {
763
- MPI_Init (argc , argv );
764
- caf_owns_mpi = true;
762
+ MPI_Init_thread (argc , argv , prior_thread_level , & prov_lev );
763
+ caf_owns_mpi = true;
764
+ if (caf_this_image == 0 && MPI_THREAD_FUNNELED != prov_lev )
765
+ caf_runtime_error ("MPI_THREAD_FUNNELED is not supported: %d" , prov_lev );
765
766
}
766
767
#endif
767
768
if (unlikely ((ierr != MPI_SUCCESS )))
@@ -5313,13 +5314,13 @@ GEN_REDUCTION (do_max_int1, int8_t,
5313
5314
inoutvec [i ] = invec [i ] <= inoutvec [i ] ? inoutvec [i ] : invec [i ])
5314
5315
#endif
5315
5316
5316
- #ifndef MPI_INTEGER2
5317
- GEN_REDUCTION (do_sum_int1 , int16_t , inoutvec [i ] += invec [i ])
5318
- GEN_REDUCTION (do_min_int1 , int16_t ,
5319
- inoutvec [i ] = invec [i ] >= inoutvec [i ] ? inoutvec [i ] : invec [i ])
5320
- GEN_REDUCTION (do_max_int1 , int16_t ,
5321
- inoutvec [i ] = invec [i ] <= inoutvec [i ] ? inoutvec [i ] : invec [i ])
5322
- #endif
5317
+ /* #ifndef MPI_INTEGER2 */
5318
+ /* GEN_REDUCTION (do_sum_int1, int16_t, inoutvec[i] += invec[i]) */
5319
+ /* GEN_REDUCTION (do_min_int1, int16_t, */
5320
+ /* inoutvec[i] = invec[i] >= inoutvec[i] ? inoutvec[i] : invec[i]) */
5321
+ /* GEN_REDUCTION (do_max_int1, int16_t, */
5322
+ /* inoutvec[i] = invec[i] <= inoutvec[i] ? inoutvec[i] : invec[i]) */
5323
+ /* #endif */
5323
5324
5324
5325
#if defined(MPI_INTEGER16 ) && defined(GFC_INTEGER_16 )
5325
5326
GEN_REDUCTION (do_sum_int1 , GFC_INTEGER_16 , inoutvec [i ] += invec [i ])
0 commit comments