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
previous ti-tracing improvement for bcast and reduce was not a good idea.
[simgrid.git]
/
src
/
smpi
/
internals
/
smpi_deployment.cpp
diff --git
a/src/smpi/internals/smpi_deployment.cpp
b/src/smpi/internals/smpi_deployment.cpp
index
12688f0
..
a9d4450
100644
(file)
--- a/
src/smpi/internals/smpi_deployment.cpp
+++ b/
src/smpi/internals/smpi_deployment.cpp
@@
-24,10
+24,6
@@
public:
{
auto* group = new simgrid::smpi::Group(size_);
comm_world_ = new simgrid::smpi::Comm(group, nullptr, false, -1);
- // FIXME : using MPI_Attr_put with MPI_UNIVERSE_SIZE is forbidden and we make it a no-op (which triggers a warning
- // as MPI_ERR_ARG is returned). Directly calling Comm::attr_put breaks for now, as MPI_UNIVERSE_SIZE,is <0
- // instance.comm_world->attr_put<simgrid::smpi::Comm>(MPI_UNIVERSE_SIZE, reinterpret_cast<void*>(instance.size));
-
universe_size += max_no_processes;
}
@@
-141,20
+137,16
@@
static std::vector<std::string> smpi_read_replay(const std::string& replayfile)
}
/** @brief Build argument vector to pass to process */
-static std::vector<std::string> smpi_deployment_get_args(int rank_id, const std::vector<std::string>& replay,
int argc,
- c
har* argv[]
)
+static std::vector<std::string> smpi_deployment_get_args(int rank_id, const std::vector<std::string>& replay,
+ c
onst std::vector<const char*>& run_args
)
{
std::vector<std::string> args{std::to_string(rank_id)};
// pass arguments to process only if not a replay execution
- if (replay.empty()) {
- for (int i = 0; i < argc; i++) {
- args.emplace_back(argv[i]);
- }
- }
+ if (replay.empty())
+ args.insert(args.end(), begin(run_args), end(run_args));
/* one trace per process */
- if (replay.size() > 1)
{
+ if (replay.size() > 1)
args.emplace_back(replay[rank_id]);
- }
return args;
}
@@
-165,7
+157,7
@@
static std::vector<std::string> smpi_deployment_get_args(int rank_id, const std:
* If hostfile isn't provided, get the list of hosts from engine.
*/
int smpi_deployment_smpirun(const simgrid::s4u::Engine* e, const std::string& hostfile, int np,
- const std::string& replayfile, int map,
int argc, char* argv[]
)
+ const std::string& replayfile, int map,
const std::vector<const char*>& run_args
)
{
auto hosts = smpi_get_hosts(e, hostfile);
auto replay = smpi_read_replay(replayfile);
@@
-182,7
+174,7
@@
int smpi_deployment_smpirun(const simgrid::s4u::Engine* e, const std::string& ho
for (int i = 0; i < np; i++) {
simgrid::s4u::Host* host = hosts[i % hosts_size];
std::string rank_id = std::to_string(i);
- auto args = smpi_deployment_get_args(i, replay,
argc, argv
);
+ auto args = smpi_deployment_get_args(i, replay,
run_args
);
auto actor = simgrid::s4u::Actor::create(rank_id, host, rank_id, args);
/* keeping the same behavior as done in smpirun script, print mapping rank/process */
if (map != 0) {