Skip to content
Snippets Groups Projects
Commit ea7e9938 authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Set default values for OMP_PROC_BIND and OMP_PLACES

If these environment variables are not set they are positioned to
recommended values for performance
  OMP_PROC_BIND=spread
  OMP_PLACES=treads
These variables are untouched if set by the user.
parent 15f82bd3
No related branches found
No related tags found
1 merge request!66Feature/reduced verbosity
#include <utils/PugsUtils.hpp> #include <utils/PugsUtils.hpp>
#include <algebra/PETScWrapper.hpp>
#include <utils/BuildInfo.hpp> #include <utils/BuildInfo.hpp>
#include <utils/RevisionInfo.hpp>
#include <utils/Messenger.hpp>
#include <utils/ConsoleManager.hpp> #include <utils/ConsoleManager.hpp>
#include <utils/FPEManager.hpp> #include <utils/FPEManager.hpp>
#include <utils/Messenger.hpp>
#include <utils/RevisionInfo.hpp>
#include <utils/SignalManager.hpp> #include <utils/SignalManager.hpp>
#include <utils/pugs_build_info.hpp>
#include <algebra/PETScWrapper.hpp>
#include <rang.hpp> #include <rang.hpp>
...@@ -19,10 +17,6 @@ ...@@ -19,10 +17,6 @@
#include <iostream> #include <iostream>
// LCOV_EXCL_START
// This function cannot be unit-tested: run once when pugs starts
std::string std::string
pugsVersion() pugsVersion()
{ {
...@@ -64,6 +58,19 @@ pugsBuildInfo() ...@@ -64,6 +58,19 @@ pugsBuildInfo()
return os.str(); return os.str();
} }
void
setDefaultOMPEnvironment()
{
if constexpr (std::string_view{PUGS_BUILD_KOKKOS_DEVICES} == std::string_view{"OpenMP"}) {
setenv("OMP_PROC_BIND", "spread", 0);
setenv("OMP_PLACES", "treads", 0);
}
}
// LCOV_EXCL_START
// This function cannot be unit-tested: run once when pugs starts
std::string std::string
initialize(int& argc, char* argv[]) initialize(int& argc, char* argv[])
{ {
...@@ -115,11 +122,17 @@ initialize(int& argc, char* argv[]) ...@@ -115,11 +122,17 @@ initialize(int& argc, char* argv[])
PETScWrapper::initialize(argc, argv); PETScWrapper::initialize(argc, argv);
setDefaultOMPEnvironment();
Kokkos::initialize(argc, argv); Kokkos::initialize(argc, argv);
std::cout << "-------------------- " << rang::fg::green << "exec info" << rang::fg::reset std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset
<< " ------------------------" << '\n'; << " ----------------------" << '\n';
std::cout << rang::style::bold; std::cout << rang::style::bold;
#ifdef PUGS_HAS_MPI
std::cout << "MPI number of ranks " << parallel::size() << '\n';
#else // PUGS_HAS_MPI
std::cout << "Sequential build\n";
#endif // PUGS_HAS_MPI
Kokkos::DefaultExecutionSpace::print_configuration(std::cout); Kokkos::DefaultExecutionSpace::print_configuration(std::cout);
std::cout << rang::style::reset; std::cout << rang::style::reset;
std::cout << "-------------------------------------------------------\n"; std::cout << "-------------------------------------------------------\n";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment