https://mooseframework.inl.gov
MooseInit.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #include "MooseInit.h"
11 #include "ParallelUniqueId.h"
12 #include "Factory.h"
13 #include "ActionFactory.h"
14 #include "Executioner.h"
15 #include "MooseRandom.h"
16 
17 #include "libmesh/petsc_solver_exception.h"
18 
19 // PETSc
20 #include "petscsys.h"
21 
22 #ifdef LIBMESH_HAVE_OPENMP
23 #include <omp.h>
24 #endif
25 
26 #ifdef MOOSE_LIBTORCH_ENABLED
27 #include <ATen/Parallel.h>
28 #endif
29 
30 #include <unistd.h>
31 #include <signal.h>
32 
33 void
34 SigHandler(int signum)
35 {
37  return;
38 }
39 
40 void
42 {
43  signal(SIGUSR1, SigHandler);
44 }
45 
46 MooseInit::MooseInit(int argc, char * argv[], MPI_Comm COMM_WORLD_IN)
47  : LibMeshInit(argc, argv, COMM_WORLD_IN)
48 {
49  LibmeshPetscCallA(COMM_WORLD_IN, PetscPopSignalHandler()); // get rid of PETSc error handler
50 
51 // Set the number of OpenMP threads to the same as the number of threads libMesh is going to use
52 #ifdef LIBMESH_HAVE_OPENMP
53  omp_set_num_threads(libMesh::n_threads());
54 #endif
55 
56 #ifdef MOOSE_LIBTORCH_ENABLED
57  at::set_num_threads(libMesh::n_threads());
58  at::set_num_interop_threads(libMesh::n_threads());
59 #endif
60 
62 
63  // Make sure that any calls to the global random number generator are consistent among processes
65 
67 }
static void initialize()
Must be called by main thread before any threaded computation! Do NOT call in a worker thread! ...
unsigned int n_threads()
void RegisterSigHandler()
Definition: MooseInit.C:41
MooseInit(int argc, char *argv[], MPI_Comm COMM_WORLD_IN=MPI_COMM_WORLD)
Definition: MooseInit.C:46
static void seed(unsigned int seed)
The method seeds the random number generator.
Definition: MooseRandom.h:44
int interrupt_signal_number
Used by the signal handler to determine if we should write a checkpoint file out at any point during ...
Definition: Moose.C:782
void SigHandler(int signum)
Definition: MooseInit.C:34