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