@@ -342,11 +342,6 @@ static int ompi_mpi_instance_init_common (int argc, char **argv)
342
342
opal_pmix_lock_t mylock ;
343
343
OMPI_TIMING_INIT (64 );
344
344
345
- ret = ompi_mpi_instance_retain ();
346
- if (OPAL_UNLIKELY (OMPI_SUCCESS != ret )) {
347
- return ret ;
348
- }
349
-
350
345
OBJ_CONSTRUCT (& ompi_instance_common_domain , opal_finalize_domain_t );
351
346
opal_finalize_domain_init (& ompi_instance_common_domain , "ompi_mpi_instance_init_common" );
352
347
opal_finalize_set_domain (& ompi_instance_common_domain );
@@ -796,12 +791,17 @@ int ompi_mpi_instance_init (int ts_level, opal_info_t *info, ompi_errhandler_t
796
791
if (ts_level == MPI_THREAD_MULTIPLE ) {
797
792
opal_set_using_threads (true);
798
793
}
799
-
794
+
795
+ ret = ompi_mpi_instance_retain ();
796
+ if (OPAL_UNLIKELY (OMPI_SUCCESS != ret )) {
797
+ return ret ;
798
+ }
799
+
800
800
opal_mutex_lock (& instance_lock );
801
+
801
802
if (0 == opal_atomic_fetch_add_32 (& ompi_instance_count , 1 )) {
802
803
ret = ompi_mpi_instance_init_common (argc , argv );
803
804
if (OPAL_UNLIKELY (OPAL_SUCCESS != ret )) {
804
- opal_mutex_unlock (& instance_lock );
805
805
return ret ;
806
806
}
807
807
}
@@ -1046,7 +1046,7 @@ static void ompi_instance_refresh_pmix_psets (const char *key)
1046
1046
if (PMIX_SUCCESS != (rc = PMIx_Query_info_nb (& query , 1 ,
1047
1047
ompi_instance_get_num_psets_complete ,
1048
1048
(void * )& lock ))) {
1049
- opal_mutex_unlock (& instance_lock );
1049
+ opal_mutex_unlock (& instance_lock );
1050
1050
}
1051
1051
1052
1052
OPAL_PMIX_WAIT_THREAD (& lock );
0 commit comments