Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move the simcall template to the kernel::actor namespace
[simgrid.git] / src / smpi / bindings / smpi_pmpi.cpp
index 933894a..663ac17 100644 (file)
@@ -36,20 +36,18 @@ int PMPI_Init(int*, char***)
   xbt_assert(simgrid::s4u::Engine::is_initialized(),
              "Your MPI program was not properly initialized. The easiest is to use smpirun to start it.");
 
-  // Init is called only once per SMPI process
-  if (not smpi_process()->initializing()){
-    simgrid::smpi::ActorExt::init();
-  }
-  if (not smpi_process()->initialized()){
-    int rank_traced = simgrid::s4u::this_actor::get_pid();
-    TRACE_smpi_init(rank_traced);
-    TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::NoOpTIData("init"));
-    TRACE_smpi_comm_out(rank_traced);
-    TRACE_smpi_computing_init(rank_traced);
-    TRACE_smpi_sleeping_init(rank_traced);
-    smpi_bench_begin();
-    smpi_process()->mark_as_initialized();
-  }
+  xbt_assert(not smpi_process()->initializing());
+  xbt_assert(not smpi_process()->initialized());
+
+  simgrid::smpi::ActorExt::init();
+  int rank_traced = simgrid::s4u::this_actor::get_pid();
+  TRACE_smpi_init(rank_traced);
+  TRACE_smpi_comm_in(rank_traced, __func__, new simgrid::instr::NoOpTIData("init"));
+  TRACE_smpi_comm_out(rank_traced);
+  TRACE_smpi_computing_init(rank_traced);
+  TRACE_smpi_sleeping_init(rank_traced);
+  smpi_bench_begin();
+  smpi_process()->mark_as_initialized();
 
   smpi_mpi_init();
 
@@ -65,7 +63,6 @@ int PMPI_Finalize()
   smpi_process()->finalize();
 
   TRACE_smpi_comm_out(rank_traced);
-  TRACE_smpi_finalize(rank_traced);
   return MPI_SUCCESS;
 }
 
@@ -127,7 +124,7 @@ int PMPI_Abort(MPI_Comm /*comm*/, int /*errorcode*/)
   smpi_bench_end();
   // FIXME: should kill all processes in comm instead
   smx_actor_t actor = SIMIX_process_self();
-  simgrid::simix::simcall([actor] { actor->exit(); });
+  simgrid::kernel::actor::simcall([actor] { actor->exit(); });
   return MPI_SUCCESS;
 }