1 #include "simgrid/s4u.hpp"
3 #include "xbt/asserts.h"
4 #include "xbt/replay.hpp"
7 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_replay);
9 int main(int argc, char* argv[])
11 if (simgrid::s4u::Actor::self() == nullptr) {
12 XBT_ERROR("smpireplaymain should not be called directly. Please use smpirun -replay instead.");
16 auto properties = simgrid::s4u::Actor::self()->get_properties();
17 if (properties->find("smpi_replay") == properties->end()) {
18 XBT_ERROR("invalid smpireplaymain execution. Please use smpirun -replay instead.");
22 const char* instance_id = properties->at("instance_id").c_str();
23 const int rank = xbt_str_parse_int(properties->at("rank").c_str(), "Cannot parse rank");
24 const char* trace_filename = argv[1];
25 double start_delay_flops = 0;
28 start_delay_flops = xbt_str_parse_double(argv[2], "Cannot parse start_delay_flops");
31 /* Setup things and register default actions */
32 smpi_replay_init(instance_id, rank, start_delay_flops);
34 /* A small check, just to make sure SMPI ranks are consistent with input arguments */
36 MPI_Comm_rank(MPI_COMM_WORLD, &new_rank);
37 xbt_assert(new_rank == rank, "Rank inconsistency. Got %d, expected %d", new_rank, rank);
39 /* The regular run of the replayer */
40 smpi_replay_main(rank, trace_filename);