X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d662facd6208a9e893a2479f25325dee593645c4..393cd3ada1b9255734f91a4b1971ad9850af808b:/src/mc/checker/CommunicationDeterminismChecker.cpp diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index c959f921d2..101ab00d53 100644 --- a/src/mc/checker/CommunicationDeterminismChecker.cpp +++ b/src/mc/checker/CommunicationDeterminismChecker.cpp @@ -5,8 +5,6 @@ #include "src/mc/checker/CommunicationDeterminismChecker.hpp" #include "src/kernel/activity/MailboxImpl.hpp" -#include "src/mc/Session.hpp" -#include "src/mc/mc_api.hpp" #include "src/mc/mc_config.hpp" #include "src/mc/mc_exit.hpp" #include "src/mc/mc_private.hpp" @@ -30,24 +28,6 @@ std::vector> incomplete_communic /********** Static functions ***********/ -void copy_incomplete_comm_pattern(simgrid::mc::State* state) -{ - state->incomplete_comm_pattern_.clear(); - for (unsigned i=0; i < MC_smx_get_maxpid(); i++) { - std::vector res; - for (auto const& comm : incomplete_communications_pattern[i]) - res.push_back(comm->dup()); - state->incomplete_comm_pattern_.push_back(std::move(res)); - } -} - -void copy_index_comm_pattern(simgrid::mc::State* state) -{ - state->communication_indices_.clear(); - for (auto const& list_process_comm : initial_communications_pattern) - state->communication_indices_.push_back(list_process_comm.index_comm); -} - static simgrid::mc::CommPatternDifference compare_comm_pattern(const simgrid::mc::PatternCommunication* comm1, const simgrid::mc::PatternCommunication* comm2) { @@ -79,25 +59,25 @@ static void patterns_copy(std::vector& dest, } } -void restore_communications_pattern(simgrid::mc::State* state) +static void restore_communications_pattern(simgrid::mc::State* state) { - for (unsigned i = 0; i < initial_communications_pattern.size(); i++) + for (size_t i = 0; i < initial_communications_pattern.size(); i++) initial_communications_pattern[i].index_comm = state->communication_indices_[i]; - for (unsigned i = 0; i < mcapi::get().get_maxpid(); i++) + for (unsigned long i = 0; i < mcapi::get().get_maxpid(); i++) patterns_copy(incomplete_communications_pattern[i], state->incomplete_comm_pattern_[i]); } -static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, int process, +static char* print_determinism_result(simgrid::mc::CommPatternDifference diff, aid_t process, const simgrid::mc::PatternCommunication* comm, unsigned int cursor) { char* type; char* res; if (comm->type == simgrid::mc::PatternCommunicationType::send) - type = bprintf("The send communications pattern of the process %d is different!", process - 1); + type = bprintf("The send communications pattern of the process %ld is different!", process - 1); else - type = bprintf("The recv communications pattern of the process %d is different!", process - 1); + type = bprintf("The recv communications pattern of the process %ld is different!", process - 1); using simgrid::mc::CommPatternDifference; switch (diff) { @@ -140,20 +120,14 @@ static void update_comm_pattern(simgrid::mc::PatternCommunication* comm_pattern, comm_pattern->src_host = mcapi::get().get_actor_host_name(src_proc); comm_pattern->dst_host = mcapi::get().get_actor_host_name(dst_proc); - if (comm_pattern->data.empty()) { - auto pattern_data = mcapi::get().get_pattern_comm_data(comm_addr); - if (pattern_data.data() != nullptr) { - auto data_size = pattern_data.size(); - comm_pattern->data.resize(data_size); - memcpy(comm_pattern->data.data(), pattern_data.data(), data_size); - } - } + if (comm_pattern->data.empty()) + comm_pattern->data = mcapi::get().get_pattern_comm_data(comm_addr); } namespace simgrid { namespace mc { -void CommunicationDeterminismChecker::deterministic_comm_pattern(int process, const PatternCommunication* comm, +void CommunicationDeterminismChecker::deterministic_comm_pattern(aid_t process, const PatternCommunication* comm, int backtracking) { if (not backtracking) { @@ -224,12 +198,7 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca #if HAVE_SMPI pattern->tag = mcapi::get().get_smpi_request_tag(request, simgrid::simix::Simcall::COMM_ISEND); #endif - auto pattern_data = mcapi::get().get_pattern_comm_data(pattern->comm_addr); - if (pattern_data.data() != nullptr) { - auto data_size = pattern_data.size(); - pattern->data.resize(data_size); - memcpy(pattern->data.data(), pattern_data.data(), data_size); - } + pattern->data = mcapi::get().get_pattern_comm_data(pattern->comm_addr); #if HAVE_SMPI auto send_detached = mcapi::get().check_send_request_detached(request); @@ -263,8 +232,8 @@ void CommunicationDeterminismChecker::get_comm_pattern(smx_simcall_t request, Ca incomplete_communications_pattern[issuer->get_pid()].push_back(pattern.release()); } -void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr, - unsigned int issuer, int backtracking) +void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activity::CommImpl* comm_addr, aid_t issuer, + int backtracking) { /* Complete comm pattern */ std::vector& incomplete_pattern = incomplete_communications_pattern[issuer]; @@ -276,7 +245,7 @@ void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activi update_comm_pattern(*current_comm_pattern, comm_addr); std::unique_ptr comm_pattern(*current_comm_pattern); - XBT_DEBUG("Remove incomplete comm pattern for process %u at cursor %zd", issuer, + XBT_DEBUG("Remove incomplete comm pattern for process %ld at cursor %zd", issuer, std::distance(begin(incomplete_pattern), current_comm_pattern)); incomplete_pattern.erase(current_comm_pattern); @@ -290,7 +259,7 @@ void CommunicationDeterminismChecker::complete_comm_pattern(const kernel::activi } } -CommunicationDeterminismChecker::CommunicationDeterminismChecker(Session& s) : Checker(s) {} +CommunicationDeterminismChecker::CommunicationDeterminismChecker() : Checker() {} CommunicationDeterminismChecker::~CommunicationDeterminismChecker() = default; @@ -338,7 +307,7 @@ void CommunicationDeterminismChecker::log_state() // override void CommunicationDeterminismChecker::prepare() { - const int maxpid = mcapi::get().get_maxpid(); + const auto maxpid = mcapi::get().get_maxpid(); initial_communications_pattern.resize(maxpid); incomplete_communications_pattern.resize(maxpid); @@ -382,10 +351,10 @@ void CommunicationDeterminismChecker::restoreState() /* Restore the initial state */ mcapi::get().restore_initial_state(); - unsigned n = mcapi::get().get_maxpid(); + unsigned long n = mcapi::get().get_maxpid(); assert(n == incomplete_communications_pattern.size()); assert(n == initial_communications_pattern.size()); - for (unsigned j = 0; j < n; j++) { + for (unsigned long j = 0; j < n; j++) { incomplete_communications_pattern[j].clear(); initial_communications_pattern[j].index_comm = 0; } @@ -429,7 +398,7 @@ void CommunicationDeterminismChecker::handle_comm_pattern(simgrid::mc::CallType break; case CallType::WAIT: case CallType::WAITANY: { - simgrid::kernel::activity::CommImpl* comm_addr = nullptr; + const simgrid::kernel::activity::CommImpl* comm_addr = nullptr; if (call_type == CallType::WAIT) comm_addr = mcapi::get().get_comm_wait_raw_addr(req); else @@ -566,15 +535,15 @@ void CommunicationDeterminismChecker::real_run() void CommunicationDeterminismChecker::run() { XBT_INFO("Check communication determinism"); - mcapi::get().s_initialize(); + mcapi::get().session_initialize(); this->prepare(); this->real_run(); } -Checker* createCommunicationDeterminismChecker(Session& s) +Checker* createCommunicationDeterminismChecker() { - return new CommunicationDeterminismChecker(s); + return new CommunicationDeterminismChecker(); } } // namespace mc