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

Change initialization order to fix FPE trapping mess

PETSc was initialized after FPEManager and could replace its defined
policy leading to unexpected trapping (underflows for instance when
multiplying very small numbers)
parent 60d8bf14
No related branches found
No related tags found
1 merge request!114Change initialization order to fix FPE trapping mess
......@@ -13,6 +13,7 @@ initialize([[maybe_unused]] int& argc, [[maybe_unused]] char* argv[])
{
#ifdef PUGS_HAS_PETSC
PetscOptionsSetValue(NULL, "-no_signal_handler", "true");
PetscOptionsSetValue(NULL, "-fp_trap", "false");
PetscInitialize(&argc, &argv, 0, 0);
#endif // PUGS_HAS_PETSC
}
......
......@@ -79,6 +79,8 @@ std::string
initialize(int& argc, char* argv[])
{
parallel::Messenger::create(argc, argv);
bool enable_fpe = true;
bool enable_signals = true;
std::string filename;
{
......@@ -100,10 +102,8 @@ initialize(int& argc, char* argv[])
bool enable_color = true;
app.add_flag("--color,!--no-color", enable_color, "Colorize console output [default: true]");
bool enable_fpe = true;
app.add_flag("--fpe,!--no-fpe", enable_fpe, "Trap floating point exceptions [default: true]");
bool enable_signals = true;
app.add_flag("--signal,!--no-signal", enable_signals, "Catches signals [default: true]");
bool pause_on_error = false;
......@@ -119,14 +119,15 @@ initialize(int& argc, char* argv[])
}
ConsoleManager::init(enable_color);
FPEManager::init(enable_fpe);
SignalManager::setPauseForDebug(pause_on_error);
SignalManager::init(enable_signals);
}
PETScWrapper::initialize(argc, argv);
SLEPcWrapper::initialize(argc, argv);
FPEManager::init(enable_fpe);
SignalManager::init(enable_signals);
setDefaultOMPEnvironment();
Kokkos::initialize(argc, argv);
std::cout << "----------------- " << rang::fg::green << "pugs exec info" << rang::fg::reset
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment