From: Arnaud Giersch Date: Fri, 10 Aug 2018 09:46:59 +0000 (+0200) Subject: Fix build without smpi. X-Git-Tag: v3_21~260^2~7 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/22b191961881b619747f7bdc637902556030ed16?hp=7ce99dabe2893cb9a77e20b7cdec5efd325ec671 Fix build without smpi. --- diff --git a/src/mc/Session.cpp b/src/mc/Session.cpp index da8c02bad9..1d7b32ebac 100644 --- a/src/mc/Session.cpp +++ b/src/mc/Session.cpp @@ -86,8 +86,12 @@ pid_t do_fork(F code) Session::Session(pid_t pid, int socket) { std::unique_ptr process(new simgrid::mc::RemoteClient(pid, socket)); +#if HAVE_SMPI // TODO, automatic detection of the config from the process process->privatized(smpi_privatize_global_variables != SmpiPrivStrategies::NONE); +#else + process->privatized(false); +#endif modelChecker_ = std::unique_ptr( new simgrid::mc::ModelChecker(std::move(process))); xbt_assert(mc_model_checker == nullptr); diff --git a/src/mc/checker/CommunicationDeterminismChecker.cpp b/src/mc/checker/CommunicationDeterminismChecker.cpp index c417b911af..016d3bf55e 100644 --- a/src/mc/checker/CommunicationDeterminismChecker.cpp +++ b/src/mc/checker/CommunicationDeterminismChecker.cpp @@ -14,7 +14,9 @@ #include "src/mc/mc_state.hpp" #include "src/mc/remote/Client.hpp" +#if HAVE_SMPI #include "smpi_request.hpp" +#endif #include @@ -194,14 +196,17 @@ void CommunicationDeterminismChecker::get_comm_pattern(xbt_dynar_t list, smx_sim pattern->src_proc = mc_model_checker->process().resolveActor(simgrid::mc::remote(synchro->src_proc))->pid_; pattern->src_host = MC_smx_actor_get_host_name(issuer); +#if HAVE_SMPI simgrid::smpi::Request mpi_request = mc_model_checker->process().read( RemotePtr((std::uint64_t)simcall_comm_isend__get__data(request))); pattern->tag = mpi_request.tag(); +#endif if (synchro->src_buff != nullptr) { pattern->data.resize(synchro->src_buff_size); mc_model_checker->process().read_bytes(pattern->data.data(), pattern->data.size(), remote(synchro->src_buff)); } +#if HAVE_SMPI if(mpi_request.detached()){ if (not this->initial_communications_pattern_done) { /* Store comm pattern */ @@ -216,14 +221,17 @@ void CommunicationDeterminismChecker::get_comm_pattern(xbt_dynar_t list, smx_sim } return; } +#endif } else if (call_type == MC_CALL_TYPE_RECV) { pattern->type = simgrid::mc::PatternCommunicationType::receive; pattern->comm_addr = static_cast(simcall_comm_irecv__getraw__result(request)); +#if HAVE_SMPI simgrid::smpi::Request mpi_request; mc_model_checker->process().read(&mpi_request, remote((simgrid::smpi::Request*)simcall_comm_irecv__get__data(request))); pattern->tag = mpi_request.tag(); +#endif simgrid::mc::Remote temp_comm; mc_model_checker->process().read(temp_comm, diff --git a/src/mc/remote/RemoteClient.cpp b/src/mc/remote/RemoteClient.cpp index 0d63b68601..6024c702f3 100644 --- a/src/mc/remote/RemoteClient.cpp +++ b/src/mc/remote/RemoteClient.cpp @@ -455,10 +455,10 @@ std::string RemoteClient::read_string(RemotePtr address) const const void* RemoteClient::read_bytes(void* buffer, std::size_t size, RemotePtr address, int process_index, ReadOptions options) const { +#if HAVE_SMPI if (process_index != simgrid::mc::ProcessIndexDisabled) { std::shared_ptr const& info = this->find_object_info_rw(address); -// Segment overlap is not handled. -#if HAVE_SMPI + // Segment overlap is not handled. if (info.get() && this->privatized(*info)) { if (process_index < 0) xbt_die("Missing process index"); @@ -477,8 +477,8 @@ const void* RemoteClient::read_bytes(void* buffer, std::size_t size, RemotePtrstart_rw; address = remote((char*)privatization_region.address + offset); } -#endif } +#endif if (pread_whole(this->memory_file, buffer, size, (size_t)address.address()) < 0) xbt_die("Read at %p from process %lli failed", (void*)address.address(), (long long)this->pid_); return buffer; diff --git a/src/plugins/host_dvfs.cpp b/src/plugins/host_dvfs.cpp index dbcc5afacd..9879f9257d 100644 --- a/src/plugins/host_dvfs.cpp +++ b/src/plugins/host_dvfs.cpp @@ -267,6 +267,7 @@ public: explicit Adagio(simgrid::s4u::Host* ptr) : Governor(ptr), rates(100, std::vector(ptr->get_pstate_count(), 0.0)) { +#if HAVE_SMPI simgrid::smpi::plugin::ampi::on_iteration_in.connect([this](simgrid::s4u::ActorPtr actor) { // Every instance of this class subscribes to this event, so one per host // This means that for any actor, all 'hosts' are normally notified of these @@ -282,6 +283,7 @@ public: task_id = 0; } }); +#endif simgrid::kernel::activity::ExecImpl::on_creation.connect([this](simgrid::kernel::activity::ExecImplPtr activity) { if (activity->host_ == get_host()) pre_task();