Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DOC] Fixed even more errors.
[simgrid.git] / src / smpi / smpi_pmpi.c
index fae3690..09bb17c 100644 (file)
@@ -25,16 +25,21 @@ void TRACE_smpi_set_category(const char *category)
 
 int PMPI_Init(int *argc, char ***argv)
 {
-  smpi_process_init(argc, argv);
-  smpi_process_mark_as_initialized();
-  int rank = smpi_process_index();
-  TRACE_smpi_init(rank);
-  TRACE_smpi_computing_init(rank);
-  instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
-  extra->type = TRACING_INIT;
-  TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
-  TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
-  smpi_bench_begin();
+  // PMPI_Init is call only one time by only by SMPI process
+  int already_init;
+  MPI_Initialized(&already_init);
+  if(!(already_init)){
+    smpi_process_init(argc, argv);
+    smpi_process_mark_as_initialized();
+    int rank = smpi_process_index();
+    TRACE_smpi_init(rank);
+    TRACE_smpi_computing_init(rank);
+    instr_extra_data extra = xbt_new0(s_instr_extra_data_t,1);
+    extra->type = TRACING_INIT;
+    TRACE_smpi_collective_in(rank, -1, __FUNCTION__, extra);
+    TRACE_smpi_collective_out(rank, -1, __FUNCTION__);
+    smpi_bench_begin();
+  }
   return MPI_SUCCESS;
 }
 
@@ -79,7 +84,7 @@ int PMPI_Get_library_version (char *version,int *len){
 int PMPI_Init_thread(int *argc, char ***argv, int required, int *provided)
 {
   if (provided != NULL) {
-    *provided = MPI_THREAD_MULTIPLE;
+    *provided = MPI_THREAD_SINGLE;
   }
   return MPI_Init(argc, argv);
 }
@@ -91,7 +96,7 @@ int PMPI_Query_thread(int *provided)
   if (provided == NULL) {
     retval = MPI_ERR_ARG;
   } else {
-    *provided = MPI_THREAD_MULTIPLE;
+    *provided = MPI_THREAD_SINGLE;
     retval = MPI_SUCCESS;
   }
   return retval;
@@ -2405,9 +2410,9 @@ int PMPI_Get_processor_name(char *name, int *resultlen)
 {
   int retval = MPI_SUCCESS;
 
-  strncpy(name, SIMIX_host_get_name(SIMIX_host_self()),
-          strlen(SIMIX_host_get_name(SIMIX_host_self())) < MPI_MAX_PROCESSOR_NAME - 1 ?
-          strlen(SIMIX_host_get_name(SIMIX_host_self())) +1 :
+  strncpy(name, sg_host_get_name(SIMIX_host_self()),
+          strlen(sg_host_get_name(SIMIX_host_self())) < MPI_MAX_PROCESSOR_NAME - 1 ?
+          strlen(sg_host_get_name(SIMIX_host_self())) +1 :
           MPI_MAX_PROCESSOR_NAME - 1 );
   *resultlen =
       strlen(name) >