A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rework SMPI initialization to handle argc and argv earlier than in MPI_Init when...
[simgrid.git]
/
src
/
smpi
/
internals
/
smpi_replay.cpp
diff --git
a/src/smpi/internals/smpi_replay.cpp
b/src/smpi/internals/smpi_replay.cpp
index
e503a21
..
d55ff23
100644
(file)
--- a/
src/smpi/internals/smpi_replay.cpp
+++ b/
src/smpi/internals/smpi_replay.cpp
@@
-134,7
+134,10
@@
public:
/* 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)
{
/* 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});
}
};
}
};
@@
-701,7
+704,9
@@
static std::unordered_map<aid_t, simgrid::smpi::replay::RequestStorage> storage;
/** @brief Only initialize the replay, don't do it for real */
void smpi_replay_init(int* argc, char*** argv)
{
/** @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);
smpi_process()->mark_as_initialized();
smpi_process()->set_replaying(true);
@@
-744,9
+749,8
@@
void smpi_replay_init(int* argc, char*** argv)
XBT_VERB("Delayed start for instance - Sleeping for %f flops ",value );
smpi_execute_flops(value);
} else {
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();
}
}
}
}