Browse Source

port r18178 from 1.2: fix starpu mpi simgrid trace yet further

Samuel Thibault 9 years ago
parent
commit
ca54cc742b
1 changed files with 18 additions and 17 deletions
  1. 18 17
      mpi/src/starpu_mpi.c

+ 18 - 17
mpi/src/starpu_mpi.c

@@ -1286,6 +1286,23 @@ static void *_starpu_mpi_progress_thread_func(void *arg)
 	_mpi_world_rank = rank;
 #endif
 
+#ifdef STARPU_SIMGRID
+	/* Now that MPI is set up, let the rest of simgrid get initialized */
+	char ** argv_cpy = malloc(*(argc_argv->argc) * sizeof(char*));
+	int i;
+	for (i = 0; i < *(argc_argv->argc); i++)
+		argv_cpy[i] = strdup((*(argc_argv->argv))[i]);
+	MSG_process_create_with_arguments("main", smpi_simulated_main_, NULL, _starpu_simgrid_get_host_by_name("MAIN"), *(argc_argv->argc), argv_cpy);
+	/* And set TSD for us */
+#ifdef HAVE_SMPI_PROCESS_SET_USER_DATA
+	smpi_process_set_user_data(calloc(MAX_TSD, sizeof(void*)));
+#endif
+#endif
+	STARPU_PTHREAD_MUTEX_LOCK(&_starpu_fxt_started_mutex);
+	while (!_starpu_fxt_started)
+		STARPU_PTHREAD_COND_WAIT(&_starpu_fxt_started_cond, &_starpu_fxt_started_mutex);
+	STARPU_PTHREAD_MUTEX_UNLOCK(&_starpu_fxt_started_mutex);
+
 	{
 		_STARPU_MPI_TRACE_START(rank, worldsize);
 #ifdef STARPU_USE_FXT
@@ -1293,6 +1310,7 @@ static void *_starpu_mpi_progress_thread_func(void *arg)
 #endif //STARPU_USE_FXT
 	}
 
+	_starpu_mpi_add_sync_point_in_fxt();
 	_starpu_mpi_comm_amounts_init(argc_argv->comm);
 	_starpu_mpi_cache_init(argc_argv->comm);
 	_starpu_mpi_select_node_init();
@@ -1310,19 +1328,6 @@ static void *_starpu_mpi_progress_thread_func(void *arg)
 	STARPU_PTHREAD_COND_SIGNAL(&cond_progression);
 	STARPU_PTHREAD_MUTEX_UNLOCK(&mutex);
 
-#ifdef STARPU_SIMGRID
-	/* Now that MPI is set up, let the rest of simgrid get initialized */
-	char ** argv_cpy = malloc(*(argc_argv->argc) * sizeof(char*));
-	int i;
-	for (i = 0; i < *(argc_argv->argc); i++)
-		argv_cpy[i] = strdup((*(argc_argv->argv))[i]);
-	MSG_process_create_with_arguments("main", smpi_simulated_main_, NULL, _starpu_simgrid_get_host_by_name("MAIN"), *(argc_argv->argc), argv_cpy);
-	/* And set TSD for us */
-#ifdef HAVE_SMPI_PROCESS_SET_USER_DATA
-	smpi_process_set_user_data(calloc(MAX_TSD, sizeof(void*)));
-#endif
-#endif
-	_starpu_mpi_add_sync_point_in_fxt();
 
 	STARPU_PTHREAD_MUTEX_LOCK(&mutex);
 
@@ -1536,10 +1541,6 @@ static int hookid = - 1;
 static void _starpu_mpi_add_sync_point_in_fxt(void)
 {
 #ifdef STARPU_USE_FXT
-	STARPU_PTHREAD_MUTEX_LOCK(&_starpu_fxt_started_mutex);
-	while (!_starpu_fxt_started)
-		STARPU_PTHREAD_COND_WAIT(&_starpu_fxt_started_cond, &_starpu_fxt_started_mutex);
-	STARPU_PTHREAD_MUTEX_UNLOCK(&_starpu_fxt_started_mutex);
 	int rank;
 	int worldsize;
 	int ret;