From 4bbb4a595e87ff829e9dc901157de83ff10c986e Mon Sep 17 00:00:00 2001 From: Johann Dreo Date: Fri, 23 Aug 2024 10:02:22 +0200 Subject: [PATCH] fix(mpi): fix some namespaces issues with mpi --- eo/src/mpi/eoMpi.h | 9 +++++---- eo/src/mpi/eoMpiNode.cpp | 6 +++--- eo/src/mpi/eoMpiNode.h | 6 +++--- eo/src/mpi/eoMultiStart.h | 4 ++-- eo/src/mpi/eoParallelApply.h | 2 +- eo/src/mpi/implMpi.cpp | 5 ++++- eo/src/mpi/implMpi.h | 12 +++++++++++- eo/test/mpi/t-mpi-distrib-exp.cpp | 2 +- 8 files changed, 30 insertions(+), 16 deletions(-) diff --git a/eo/src/mpi/eoMpi.h b/eo/src/mpi/eoMpi.h index 0bef5fea8..1038078ee 100644 --- a/eo/src/mpi/eoMpi.h +++ b/eo/src/mpi/eoMpi.h @@ -29,6 +29,7 @@ Authors: # include "../eoFunctor.h" # include "../eoExceptions.h" +# include "mpi/implMpi.h" # include "eoMpiNode.h" # include "eoMpiAssignmentAlgorithm.h" @@ -669,7 +670,7 @@ namespace eo timerStat.start("master_wait_for_all_responses"); while( assignmentAlgo.availableWorkers() != totalWorkers ) { - bmpi::status status = comm.probe( bmpi::any_source, eo::mpi::Channel::Messages ); + eo::mpi::status status = comm.probe( eo::mpi::any_source, eo::mpi::Channel::Messages ); int wrkRank = status.source(); that.handleResponse( wrkRank ); comm.send( wrkRank, Channel::Commands, Message::Finish ); @@ -686,7 +687,7 @@ namespace eo AssignmentAlgorithm& assignmentAlgo; Job< JobData > & that; - bmpi::communicator & comm; + eo::mpi::communicator & comm; }; /** @@ -713,7 +714,7 @@ namespace eo { eo::log << eo::debug << "[M" << comm.rank() << "] Waitin' for node..." << std::endl; - bmpi::status status = comm.probe( bmpi::any_source, eo::mpi::Channel::Messages ); + eo::mpi::status status = comm.probe( eo::mpi::any_source, eo::mpi::Channel::Messages ); int wrkRank = status.source(); eo::log << eo::debug << "[M" << comm.rank() << "] Node " << wrkRank << " just terminated." << std::endl; @@ -797,7 +798,7 @@ namespace eo AssignmentAlgorithm& assignmentAlgo; int masterRank; const int workerStopCondition; - bmpi::communicator& comm; + eo::mpi::communicator& comm; JobStore& store; SendTaskFunction & sendTask; diff --git a/eo/src/mpi/eoMpiNode.cpp b/eo/src/mpi/eoMpiNode.cpp index ba6424bc4..d2ed436a3 100644 --- a/eo/src/mpi/eoMpiNode.cpp +++ b/eo/src/mpi/eoMpiNode.cpp @@ -27,14 +27,14 @@ namespace eo { void Node::init( int argc, char** argv ) { - static bmpi::environment env( argc, argv ); + static eo::mpi::environment env( argc, argv ); } - bmpi::communicator& Node::comm() + eo::mpi::communicator& Node::comm() { return _comm; } - bmpi::communicator Node::_comm; + eo::mpi::communicator Node::_comm; } } diff --git a/eo/src/mpi/eoMpiNode.h b/eo/src/mpi/eoMpiNode.h index c370e1c0b..268d89690 100644 --- a/eo/src/mpi/eoMpiNode.h +++ b/eo/src/mpi/eoMpiNode.h @@ -23,7 +23,7 @@ Authors: # define __MPI_NODE_H__ # include "implMpi.h" -namespace bmpi = mpi; +// namespace bmpi = mpi; namespace eo { @@ -54,10 +54,10 @@ namespace eo /** * @brief Returns the global mpi::communicator */ - static bmpi::communicator& comm(); + static eo::mpi::communicator& comm(); protected: - static bmpi::communicator _comm; + static eo::mpi::communicator _comm; }; } } diff --git a/eo/src/mpi/eoMultiStart.h b/eo/src/mpi/eoMultiStart.h index 71e084bb4..dd8c1fa29 100644 --- a/eo/src/mpi/eoMultiStart.h +++ b/eo/src/mpi/eoMultiStart.h @@ -54,7 +54,7 @@ namespace eo typedef eoUF< eoPop&, void> ResetAlgo; MultiStartData( - bmpi::communicator& _comm, + eo::mpi::communicator& _comm, eoAlgo& _algo, int _masterRank, ResetAlgo & _resetAlgo ) @@ -87,7 +87,7 @@ namespace eo /** * @brief Communicator, used to send and retrieve messages. */ - bmpi::communicator& comm; + eo::mpi::communicator& comm; /** * @brief Algorithm which will be performed by the worker. diff --git a/eo/src/mpi/eoParallelApply.h b/eo/src/mpi/eoParallelApply.h index c85e5f7a8..6ee01c81d 100644 --- a/eo/src/mpi/eoParallelApply.h +++ b/eo/src/mpi/eoParallelApply.h @@ -137,7 +137,7 @@ namespace eo std::vector tempArray; int masterRank; - bmpi::communicator& comm; + eo::mpi::communicator& comm; }; /** diff --git a/eo/src/mpi/implMpi.cpp b/eo/src/mpi/implMpi.cpp index 16b9ea2ce..2dd1ca0d5 100644 --- a/eo/src/mpi/implMpi.cpp +++ b/eo/src/mpi/implMpi.cpp @@ -21,6 +21,8 @@ Authors: */ #include "implMpi.h" +namespace eo +{ namespace mpi { const int any_source = MPI_ANY_SOURCE; @@ -163,4 +165,5 @@ namespace mpi { MPI_Bcast( &value, 1, MPI_INT, root, MPI_COMM_WORLD ); } -} +} // namespace mpi +} // namespace eo diff --git a/eo/src/mpi/implMpi.h b/eo/src/mpi/implMpi.h index c55cff6f8..d52b84b26 100644 --- a/eo/src/mpi/implMpi.h +++ b/eo/src/mpi/implMpi.h @@ -41,7 +41,8 @@ Authors: * The entities are here shortly described, if you need further details, don't hesitate * to visit the boost URL. */ - +namespace eo +{ namespace mpi { /** @@ -83,6 +84,14 @@ namespace mpi ~environment(); }; + struct MPI_Status { + int count; + int cancelled; + int MPI_SOURCE; + int MPI_TAG; + int MPI_ERROR; + }; + /** * @brief Wrapper class for MPI_Status * @@ -318,5 +327,6 @@ namespace mpi * @} */ } // namespace mpi +} // namespace eo # endif //__EO_IMPL_MPI_HPP__ diff --git a/eo/test/mpi/t-mpi-distrib-exp.cpp b/eo/test/mpi/t-mpi-distrib-exp.cpp index d3278fcad..905b8702c 100644 --- a/eo/test/mpi/t-mpi-distrib-exp.cpp +++ b/eo/test/mpi/t-mpi-distrib-exp.cpp @@ -382,7 +382,7 @@ class Experiment : public eoserial::Persistent void run() { - mpi::communicator& comm = eo::mpi::Node::comm(); + communicator& comm = eo::mpi::Node::comm(); // reinits every objects eo::rng.reseed( _seed ); eo::rng.clearCache(); // trick for repeatable sequences of normal numbers, cf eo::rng