7 #include "serac/infrastructure/application_manager.hpp"
23 #include "serac/serac_config.hpp"
25 #ifdef SERAC_USE_PETSC
42 void signalHandler(
int signal)
44 std::cerr <<
"[SIGNAL]: Received signal " << signal <<
" (" << strsignal(signal) <<
"), exiting" << std::endl;
54 if (axom::slic::isInitialized()) {
55 serac::logger::flush();
56 serac::logger::finalize();
59 #ifdef SERAC_USE_PETSC
60 #ifdef SERAC_USE_SLEPC
61 mfem::MFEMFinalizeSlepc();
63 mfem::MFEMFinalizePetsc();
69 int mpi_initialized = 0;
70 MPI_Initialized(&mpi_initialized);
71 int mpi_finalized = 0;
72 MPI_Finalized(&mpi_finalized);
73 if (mpi_initialized && !mpi_finalized) {
83 if (MPI_Init(&argc, &argv) != MPI_SUCCESS) {
84 std::cerr <<
"Failed to initialize MPI" << std::endl;
89 if (!logger::initialize(comm_)) {
90 std::cerr <<
"Failed to initialize SLIC logger" << std::endl;
99 #ifdef SERAC_USE_SUNDIALS
100 mfem::Sundials::Init();
103 #ifdef SERAC_USE_PETSC
104 #ifdef SERAC_USE_SLEPC
105 mfem::MFEMInitializeSlepc(&argc, &argv);
107 mfem::MFEMInitializePetsc(&argc, &argv);
109 PetscPopSignalHandler();
116 std::signal(SIGABRT, signalHandler);
117 std::signal(SIGINT, signalHandler);
118 std::signal(SIGSEGV, signalHandler);
119 std::signal(SIGTERM, signalHandler);
This file contains the interface used for initializing/terminating any hardware accelerator-related f...
ApplicationManager(int argc, char *argv[], MPI_Comm comm=MPI_COMM_WORLD)
Initialize MPI, signal handling, logging, profiling, hypre, sundials, petsc, and slepc.
~ApplicationManager()
Calls serac::finalizer.
This file contains the all the necessary functions and macros required for logging as well as a helpe...
void initializeDevice()
Initializes the device (GPU)
void terminateDevice()
Cleans up the device, if applicable.
void finalize()
Concludes performance monitoring and writes collected data to a file.
void initialize([[maybe_unused]] MPI_Comm comm, [[maybe_unused]] std::string options)
Initializes performance monitoring using the Caliper and Adiak libraries.
Accelerator functionality.
void finalizer()
Destroy MPI, signal handling, logging, profiling, hypre, sundials, petsc, and slepc....
Various helper functions and macros for profiling using Caliper.