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();
/** @brief Only initialize the replay, don't do it for real */
void smpi_replay_init(const char* instance_id, int rank, double start_delay_flops)
{
- if (not smpi_process()->initializing()){
- simgrid::s4u::Actor::self()->set_property("instance_id", instance_id);
- simgrid::s4u::Actor::self()->set_property("rank", std::to_string(rank));
- simgrid::smpi::ActorExt::init();
- }
+ xbt_assert(not smpi_process()->initializing());
+
+ simgrid::s4u::Actor::self()->set_property("instance_id", instance_id);
+ simgrid::s4u::Actor::self()->set_property("rank", std::to_string(rank));
+ simgrid::smpi::ActorExt::init();
+
smpi_process()->mark_as_initialized();
smpi_process()->set_replaying(true);