From ca127c818c52679f6449e07a9deb9e538ddc3e1c Mon Sep 17 00:00:00 2001 From: Luca Fedeli Date: Thu, 22 Jun 2023 17:52:37 +0200 Subject: Move MPIInitHelpers into ablastr (#4026) * move MPIInitHelper into ablastr * fix bug * fix bug --- Source/Utils/MPIInitHelpers.cpp | 93 ----------------------------------------- 1 file changed, 93 deletions(-) delete mode 100644 Source/Utils/MPIInitHelpers.cpp (limited to 'Source/Utils/MPIInitHelpers.cpp') 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 - -#include -#include -#include - -#if defined(AMREX_USE_MPI) -# include -#endif - -#include -#include -#include - -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 -- cgit v1.2.3