Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
have persistent communications use a PREPARED flag to implement the fact that they...
[simgrid.git] / src / smpi / smpi_global.c
index d980dfc..8c7edea 100644 (file)
@@ -79,7 +79,7 @@ void smpi_process_init(int *argc, char ***argv)
 void smpi_process_destroy(void)
 {
   int index = smpi_process_index();
-
+  process_data[index]->index=-100;
   XBT_DEBUG("<%d> Process left the game", index);
 }
 
@@ -94,6 +94,16 @@ void smpi_process_finalize(void)
   }
 }
 
+/**
+ * @brief Check if a process is finalized
+ */
+int smpi_process_finalized()
+{
+  // If finalized, this value has been set to -100;
+  return process_data[smpi_process_index()]->index==-100;
+}
+
+
 #ifdef SMPI_F2C
 int smpi_process_argc(void) {
   smpi_process_data_t data = smpi_process_data();
@@ -420,6 +430,12 @@ int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[])
                 void *recvbuf, int recvcount, MPI_Datatype recvtype,\
                 int root, MPI_Comm comm))
                           mpi_coll_scatter_description[scatter_id].coll;
+
+  int barrier_id = find_coll_description(mpi_coll_barrier_description,
+                                           sg_cfg_get_string("smpi/barrier"));
+  mpi_coll_barrier_fun = (int (*)(MPI_Comm comm))
+                          mpi_coll_barrier_description[barrier_id].coll;
+
   smpi_global_init();
 
   /* Clean IO before the run */