From: Martin Quinson Date: Thu, 20 Jul 2023 10:03:29 +0000 (+0200) Subject: MPI_UNIVERSE_SIZE now initialized to the total amount of hosts in the platform X-Git-Tag: v3.35~137 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/b3d8b99d09ddcb3d3038ae6868178e1ba7b6aa86 MPI_UNIVERSE_SIZE now initialized to the total amount of hosts in the platform --- diff --git a/ChangeLog b/ChangeLog index ffd935631b..fd83efffeb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,7 @@ S4U: SMPI: - New SMPI_app_instance_join(): wait for the completion of a started MPI instance + - MPI_UNIVERSE_SIZE now initialized to the total amount of hosts in the platform Python: - Make the host_load plugin available from Python. See examples/python/plugin-host-load diff --git a/src/smpi/bindings/smpi_pmpi_comm.cpp b/src/smpi/bindings/smpi_pmpi_comm.cpp index d7efa433d3..c30dfda3e9 100644 --- a/src/smpi/bindings/smpi_pmpi_comm.cpp +++ b/src/smpi/bindings/smpi_pmpi_comm.cpp @@ -6,9 +6,10 @@ #include #include "private.hpp" +#include "simgrid/s4u/Engine.hpp" #include "smpi_comm.hpp" -#include "smpi_info.hpp" #include "smpi_errhandler.hpp" +#include "smpi_info.hpp" #include "src/smpi/include/smpi_actor.hpp" XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi); @@ -248,7 +249,7 @@ int PMPI_Attr_get(MPI_Comm comm, int keyval, void* attr_value, int* flag) { return MPI_SUCCESS; case MPI_UNIVERSE_SIZE: *flag = 1; - universe_size = smpi_get_universe_size(); + universe_size = simgrid::s4u::Engine::get_instance()->get_host_count(); *static_cast(attr_value) = &universe_size; return MPI_SUCCESS; case MPI_LASTUSEDCODE: diff --git a/src/smpi/include/private.hpp b/src/smpi/include/private.hpp index 2133849028..cae46b978d 100644 --- a/src/smpi/include/private.hpp +++ b/src/smpi/include/private.hpp @@ -74,7 +74,6 @@ using MPIR_Dist_Graph_Topology = SMPI_Dist_Graph_topology*; XBT_PRIVATE simgrid::smpi::ActorExt* smpi_process(); XBT_PRIVATE simgrid::smpi::ActorExt* smpi_process_remote(simgrid::s4u::ActorPtr actor); -XBT_PRIVATE int smpi_get_universe_size(); XBT_PRIVATE void smpi_deployment_register_process(const std::string& instance_id, int rank, const simgrid::s4u::Actor* actor); diff --git a/src/smpi/internals/smpi_actor.cpp b/src/smpi/internals/smpi_actor.cpp index 66917b48f3..83bb79837f 100644 --- a/src/smpi/internals/smpi_actor.cpp +++ b/src/smpi/internals/smpi_actor.cpp @@ -224,9 +224,6 @@ int ActorExt::sampling() const void ActorExt::init() { - xbt_assert(smpi_get_universe_size() != 0, "SimGrid was not initialized properly before entering MPI_Init. " - "Aborting, please check compilation process and use smpirun."); - ActorExt* ext = smpi_process(); // if we are in MPI_Init and argc handling has already been done. if (ext->initialized()) diff --git a/src/smpi/internals/smpi_deployment.cpp b/src/smpi/internals/smpi_deployment.cpp index c39bbd5519..9c9d7c8bdf 100644 --- a/src/smpi/internals/smpi_deployment.cpp +++ b/src/smpi/internals/smpi_deployment.cpp @@ -15,15 +15,12 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi); namespace simgrid::smpi::app { -static int universe_size = 0; - class Instance { public: explicit Instance(int max_no_processes) : size_(max_no_processes) { auto* group = new simgrid::smpi::Group(size_); comm_world_ = new simgrid::smpi::Comm(group, nullptr, false, -1); - universe_size += max_no_processes; bar_ = s4u::Barrier::create(size_); } s4u::BarrierPtr bar_; @@ -124,11 +121,6 @@ void smpi_deployment_cleanup_instances(){ smpi_instances.clear(); } -int smpi_get_universe_size() -{ - return simgrid::smpi::app::universe_size; -} - /** @brief Auxiliary method to get list of hosts to deploy app */ static std::vector smpi_get_hosts(const simgrid::s4u::Engine* e, const std::string& hostfile) {