Selaa lähdekoodia

Do not let an SMPI program run without smpi_process_set_user_data, we definitely need it

Samuel Thibault 8 vuotta sitten
vanhempi
commit
ad09c4c678
1 muutettua tiedostoa jossa 6 lisäystä ja 4 poistoa
  1. 6 4
      mpi/src/starpu_mpi.c

+ 6 - 4
mpi/src/starpu_mpi.c

@@ -94,11 +94,10 @@ static int posted_requests = 0, newer_requests, barrier_running = 0;
 #pragma weak smpi_simulated_main_
 extern int smpi_simulated_main_(int argc, char *argv[]);
 
-#ifdef HAVE_SMPI_PROCESS_SET_USER_DATA
+#pragma weak smpi_process_set_user_data
 #if !HAVE_DECL_SMPI_PROCESS_SET_USER_DATA
 extern void smpi_process_set_user_data(void *);
 #endif
-#endif
 
 static void _starpu_mpi_request_init(struct _starpu_mpi_req **req)
 {
@@ -1334,12 +1333,15 @@ static void *_starpu_mpi_progress_thread_func(void *arg)
 		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
 	void **tsd;
 	_STARPU_CALLOC(tsd, MAX_TSD + 1, sizeof(void*));
+	if (!smpi_process_set_user_data)
+	{
+		fprintf(stderr,"Your version of simgrid does not provide smpi_process_set_user_data, we can not continue without it\n");
+		exit(1);
+	}
 	smpi_process_set_user_data(tsd);
 #endif
-#endif
 
 #ifdef STARPU_USE_FXT
 	_starpu_fxt_wait_initialisation();