X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0df1f8b77feadf04f5e30aeeccdd16806353f330..3555ee8799329dbb971f11329d225630d6434841:/src/smpi/internals/smpi_replay.cpp?ds=inline diff --git a/src/smpi/internals/smpi_replay.cpp b/src/smpi/internals/smpi_replay.cpp index 4aa0d5c530..8ec3a36a42 100644 --- a/src/smpi/internals/smpi_replay.cpp +++ b/src/smpi/internals/smpi_replay.cpp @@ -77,7 +77,6 @@ namespace hash_tuple{ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_replay,smpi,"Trace Replay with SMPI"); -static std::unordered_map*> reqq; typedef std::tuple req_key_t; typedef std::unordered_map>> req_storage_t; @@ -108,16 +107,6 @@ static void log_timed_action(simgrid::xbt::ReplayAction& action, double clock) } } -static std::vector* get_reqq_self() -{ - return reqq.at(simgrid::s4u::this_actor::get_pid()); -} - -static void set_reqq_self(std::vector *mpi_request) -{ - reqq.insert({simgrid::s4u::this_actor::get_pid(), mpi_request}); -} - /* Helper function */ static double parse_double(std::string string) { @@ -704,7 +693,6 @@ public: /* start a simulated timer */ smpi_process()->simulated_start(); - set_reqq_self(new std::vector); } }; @@ -733,6 +721,7 @@ public: } MPI_Status status[count_requests]; Request::waitall(count_requests, &(reqs.data())[0], status); + req_storage->get_store().clear(); for (auto& pair : sender_receiver) { TRACE_smpi_recv(pair.first, pair.second, 0); @@ -1006,20 +995,19 @@ void smpi_replay_main(int* argc, char*** argv) /* and now, finalize everything */ /* One active process will stop. Decrease the counter*/ - XBT_DEBUG("There are %zu elements in reqq[*]", get_reqq_self()->size()); - if (not get_reqq_self()->empty()) { - unsigned int count_requests=get_reqq_self()->size(); + unsigned int count_requests = storage[simgrid::s4u::this_actor::get_pid() - 1].size(); + XBT_DEBUG("There are %ud elements in reqq[*]", count_requests); + if (count_requests > 0) { MPI_Request requests[count_requests]; MPI_Status status[count_requests]; unsigned int i=0; - for (auto const& req : *get_reqq_self()) { - requests[i] = req; + for (auto const& pair : storage[simgrid::s4u::this_actor::get_pid() - 1].get_store()) { + requests[i] = pair.second; i++; } simgrid::smpi::Request::waitall(count_requests, requests, status); } - delete get_reqq_self(); active_processes--; if(active_processes==0){