/* Sometimes we need to re-insert MPI_REQUEST_NULL but we still need src,dst and tag */
void addNullRequest(int src, int dst, int tag)
{
- store.insert({req_key_t(src, dst, tag), MPI_REQUEST_NULL});
+ store.insert({req_key_t(
+ MPI_COMM_WORLD->group()->actor(src)->get_pid()-1,
+ MPI_COMM_WORLD->group()->actor(dst)->get_pid()-1,
+ tag), MPI_REQUEST_NULL});
}
};
/** @brief Only initialize the replay, don't do it for real */
void smpi_replay_init(int* argc, char*** argv)
{
- simgrid::smpi::Process::init(argc, argv);
+ if (not smpi_process()->initializing()){
+ simgrid::smpi::ActorExt::init(argc, argv);
+ }
smpi_process()->mark_as_initialized();
smpi_process()->set_replaying(true);
XBT_VERB("Delayed start for instance - Sleeping for %f flops ",value );
smpi_execute_flops(value);
} else {
- //UGLY: force a context switch to be sure that all MSG_processes begin initialization
- XBT_DEBUG("Force context switch by smpi_execute_flops - Sleeping for 0.0 flops ");
- smpi_execute_flops(0.0);
+ // Wait for the other actors to initialize also
+ simgrid::s4u::this_actor::yield();
}
}