Loading src/TNL/Communicators/CMakeLists.txt +1 −0 Original line number Diff line number Diff line SET( headers MpiCommunicator.h MpiDefs.h NoDistrCommunicator.h ScopedInitializer.h ) INSTALL( FILES ${headers} DESTINATION ${TNL_TARGET_INCLUDE_DIRECTORY}/Communicators ) src/TNL/Communicators/MpiCommunicator.h +1 −1 Original line number Diff line number Diff line Loading @@ -149,7 +149,7 @@ class MpiCommunicator return true; } static void Init(int argc, char **argv ) static void Init(int& argc, char**& argv ) { #ifdef HAVE_MPI MPI_Init( &argc, &argv ); Loading src/TNL/Communicators/NoDistrCommunicator.h +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ class NoDistrCommunicator return true; } static void Init(int argc, char **argv, bool redirect=false) {} static void Init(int& argc, char**& argv) {} static void setRedirection( bool redirect_ ) {} Loading src/TNL/Communicators/ScopedInitializer.h 0 → 100644 +33 −0 Original line number Diff line number Diff line /*************************************************************************** ScopedInitializer.h - description ------------------- begin : Sep 16, 2018 copyright : (C) 2005 by Tomas Oberhuber et al. email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /* See Copyright Notice in tnl/Copyright */ // Implemented by: Jakub Klinkovský #pragma once namespace TNL { namespace Communicators { template< typename Communicator > struct ScopedInitializer { ScopedInitializer( int& argc, char**& argv ) { Communicator::Init( argc, argv ); } ~ScopedInitializer() { Communicator::Finalize(); } }; } // namespace Communicators } // namespace TNL src/TNL/Solvers/SolverInitiator_impl.h +2 −8 Original line number Diff line number Diff line Loading @@ -187,14 +187,8 @@ class CommunicatorTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, t static bool run( const Config::ParameterContainer& parameters ) { if( Communicators::MpiCommunicator::isDistributed() ) { bool ret=SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::MpiCommunicator >::run( parameters ); Communicators::MpiCommunicator::Finalize(); return ret; } Communicators::MpiCommunicator::Finalize(); return SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::MpiCommunicator >::run( parameters ); return SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::NoDistrCommunicator >::run( parameters ); } }; Loading Loading
src/TNL/Communicators/CMakeLists.txt +1 −0 Original line number Diff line number Diff line SET( headers MpiCommunicator.h MpiDefs.h NoDistrCommunicator.h ScopedInitializer.h ) INSTALL( FILES ${headers} DESTINATION ${TNL_TARGET_INCLUDE_DIRECTORY}/Communicators )
src/TNL/Communicators/MpiCommunicator.h +1 −1 Original line number Diff line number Diff line Loading @@ -149,7 +149,7 @@ class MpiCommunicator return true; } static void Init(int argc, char **argv ) static void Init(int& argc, char**& argv ) { #ifdef HAVE_MPI MPI_Init( &argc, &argv ); Loading
src/TNL/Communicators/NoDistrCommunicator.h +1 −1 Original line number Diff line number Diff line Loading @@ -37,7 +37,7 @@ class NoDistrCommunicator return true; } static void Init(int argc, char **argv, bool redirect=false) {} static void Init(int& argc, char**& argv) {} static void setRedirection( bool redirect_ ) {} Loading
src/TNL/Communicators/ScopedInitializer.h 0 → 100644 +33 −0 Original line number Diff line number Diff line /*************************************************************************** ScopedInitializer.h - description ------------------- begin : Sep 16, 2018 copyright : (C) 2005 by Tomas Oberhuber et al. email : tomas.oberhuber@fjfi.cvut.cz ***************************************************************************/ /* See Copyright Notice in tnl/Copyright */ // Implemented by: Jakub Klinkovský #pragma once namespace TNL { namespace Communicators { template< typename Communicator > struct ScopedInitializer { ScopedInitializer( int& argc, char**& argv ) { Communicator::Init( argc, argv ); } ~ScopedInitializer() { Communicator::Finalize(); } }; } // namespace Communicators } // namespace TNL
src/TNL/Solvers/SolverInitiator_impl.h +2 −8 Original line number Diff line number Diff line Loading @@ -187,14 +187,8 @@ class CommunicatorTypeResolver< ProblemSetter, Real, Device, Index, ConfigTag, t static bool run( const Config::ParameterContainer& parameters ) { if( Communicators::MpiCommunicator::isDistributed() ) { bool ret=SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::MpiCommunicator >::run( parameters ); Communicators::MpiCommunicator::Finalize(); return ret; } Communicators::MpiCommunicator::Finalize(); return SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::MpiCommunicator >::run( parameters ); return SolverInitiatorMeshResolver< ProblemSetter, Real, Device, Index, ConfigTag, Communicators::NoDistrCommunicator >::run( parameters ); } }; Loading