Skip to content

Commit f824986

Browse files
authored
Merge pull request #476 from sourceryinstitute/bugfix-multithread
Merge bugfix-multithread into master
2 parents f4b32f9 + 318bc60 commit f824986

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

src/mpi/mpi_caf.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -737,15 +737,14 @@ PREFIX (init) (int *argc, char ***argv)
737737
if (caf_num_images == 0)
738738
{
739739
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;
742742
MPI_Initialized (&is_init);
743743

744744
if (is_init) {
745745
MPI_Query_thread (&prior_thread_level);
746746
}
747747
#ifdef HELPER
748-
int prov_lev=0;
749748
if (is_init) {
750749
prov_lev = prior_thread_level;
751750
caf_owns_mpi = false;
@@ -758,10 +757,12 @@ PREFIX (init) (int *argc, char ***argv)
758757
caf_runtime_error ("MPI_THREAD_MULTIPLE is not supported: %d", prov_lev);
759758
#else
760759
if (is_init) {
761-
caf_owns_mpi = false;
760+
caf_owns_mpi = false;
762761
} 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);
765766
}
766767
#endif
767768
if (unlikely ((ierr != MPI_SUCCESS)))
@@ -5313,13 +5314,13 @@ GEN_REDUCTION (do_max_int1, int8_t,
53135314
inoutvec[i] = invec[i] <= inoutvec[i] ? inoutvec[i] : invec[i])
53145315
#endif
53155316

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 */
53235324

53245325
#if defined(MPI_INTEGER16) && defined(GFC_INTEGER_16)
53255326
GEN_REDUCTION (do_sum_int1, GFC_INTEGER_16, inoutvec[i] += invec[i])

0 commit comments

Comments
 (0)