diff options
Diffstat (limited to 'Source/Utils')
-rw-r--r-- | Source/Utils/CMakeLists.txt | 1 | ||||
-rw-r--r-- | Source/Utils/MPIInitHelpers.H | 45 | ||||
-rw-r--r-- | Source/Utils/MPIInitHelpers.cpp | 93 | ||||
-rw-r--r-- | Source/Utils/Make.package | 1 |
4 files changed, 0 insertions, 140 deletions
diff --git a/Source/Utils/CMakeLists.txt b/Source/Utils/CMakeLists.txt index 3069af7e3..b9afbc038 100644 --- a/Source/Utils/CMakeLists.txt +++ b/Source/Utils/CMakeLists.txt @@ -3,7 +3,6 @@ foreach(D IN LISTS WarpX_DIMS) target_sources(WarpX_${SD} PRIVATE Interpolate.cpp - MPIInitHelpers.cpp ParticleUtils.cpp RelativeCellPosition.cpp WarpXAlgorithmSelection.cpp diff --git a/Source/Utils/MPIInitHelpers.H b/Source/Utils/MPIInitHelpers.H deleted file mode 100644 index c1b1c2f6d..000000000 --- a/Source/Utils/MPIInitHelpers.H +++ /dev/null @@ -1,45 +0,0 @@ -/* Copyright 2020 Axel Huebl - * - * This file is part of WarpX. - * - * License: BSD-3-Clause-LBNL - */ -#ifndef WARPX_MPI_INIT_HELPERS_H_ -#define WARPX_MPI_INIT_HELPERS_H_ - -#include <utility> - -namespace utils -{ - /** Return the required MPI threading - * - * @return the MPI_THREAD_* level required for MPI_Init_thread - */ - int - warpx_mpi_thread_required (); - - /** Initialize MPI - * - * @return pair(required, provided) of MPI thread level from MPI_Init_thread - */ - std::pair< int, int > - warpx_mpi_init (int argc, char* argv[]); - - /** Finalize MPI - * - * This function is simply a wrapper around MPI_Finalize(). It is a no-op if - * WarpX is compiled without MPI support. - */ - void - warpx_mpi_finalize (); - - /** Check if the requested MPI thread level is valid - * - * Prints warnings and notes otherwise. - */ - void - warpx_check_mpi_thread_level (); - -} // namespace utils - -#endif // WARPX_MPI_INIT_HELPERS_H_ diff --git a/Source/Utils/MPIInitHelpers.cpp b/Source/Utils/MPIInitHelpers.cpp deleted file mode 100644 index 9d205eb5f..000000000 --- a/Source/Utils/MPIInitHelpers.cpp +++ /dev/null @@ -1,93 +0,0 @@ -/* Copyright 2020 Axel Huebl - * - * This file is part of WarpX. - * - * License: BSD-3-Clause-LBNL - */ -#include "MPIInitHelpers.H" - -#include <ablastr/warn_manager/WarnManager.H> - -#include <AMReX_Config.H> -#include <AMReX_ParallelDescriptor.H> -#include <AMReX_Print.H> - -#if defined(AMREX_USE_MPI) -# include <mpi.h> -#endif - -#include <string> -#include <utility> -#include <sstream> - -namespace utils -{ - int - warpx_mpi_thread_required () - { - int thread_required = -1; -#ifdef AMREX_USE_MPI - thread_required = MPI_THREAD_SINGLE; // equiv. to MPI_Init -# ifdef AMREX_USE_OMP - thread_required = MPI_THREAD_FUNNELED; -# endif -# ifdef AMREX_MPI_THREAD_MULTIPLE // i.e. for async_io - thread_required = MPI_THREAD_MULTIPLE; -# endif -#endif - return thread_required; - } - - std::pair< int, int > - warpx_mpi_init (int argc, char* argv[]) - { - const int thread_required = warpx_mpi_thread_required(); -#ifdef AMREX_USE_MPI - int thread_provided = -1; - MPI_Init_thread(&argc, &argv, thread_required, &thread_provided); -#else - amrex::ignore_unused(argc, argv); - const int thread_provided = -1; -#endif - return std::make_pair(thread_required, thread_provided); - } - - - void - warpx_mpi_finalize () - { -#ifdef AMREX_USE_MPI - MPI_Finalize(); -#endif - } - - void - warpx_check_mpi_thread_level () - { -#ifdef AMREX_USE_MPI - const int thread_required = warpx_mpi_thread_required(); - int thread_provided = -1; - MPI_Query_thread(&thread_provided); - auto mtn = amrex::ParallelDescriptor::mpi_level_to_string; - - std::stringstream ss; - if( thread_provided < thread_required ){ - ss << "WARNING: Provided MPI thread safety level (" - << mtn(thread_provided) << ") is LOWER than requested " - << mtn(thread_required) << "). This might lead to undefined " - << "results in asynchronous operations (e.g. async_io)."; - ablastr::warn_manager::WMRecordWarning( - "MPI", ss.str(), ablastr::warn_manager::WarnPriority::high); - } - if( thread_provided > thread_required ){ - ss << "NOTE: Provided MPI thread safety level (" - << mtn(thread_provided) << ") is stricter than requested " - << mtn(thread_required) << "). This might reduce multi-node " - << "communication performance."; - ablastr::warn_manager::WMRecordWarning( - "MPI", ss.str()); - } -#endif - } - -} // namespace utils diff --git a/Source/Utils/Make.package b/Source/Utils/Make.package index 83ce8543b..eb318f8d2 100644 --- a/Source/Utils/Make.package +++ b/Source/Utils/Make.package @@ -6,7 +6,6 @@ CEXE_sources += WarpXVersion.cpp CEXE_sources += WarpXAlgorithmSelection.cpp CEXE_sources += Interpolate.cpp CEXE_sources += IntervalsParser.cpp -CEXE_sources += MPIInitHelpers.cpp CEXE_sources += RelativeCellPosition.cpp CEXE_sources += ParticleUtils.cpp |