11#ifndef ROOT_Minuit2_MPIProcess
12#define ROOT_Minuit2_MPIProcess
33 if (MPI::Is_initialized() && !(MPI::Is_finalized())) {
34 std::cout <<
"Info --> MPITerminate:: End MPI on #" << MPI::COMM_WORLD.Get_rank() <<
" processor" << std::endl;
44 MPIProcess(
unsigned int nelements,
unsigned int indexComm);
82 if (!(MPI::Is_initialized())) {
84 std::cout <<
"Info --> MPIProcess::StartMPI: Start MPI on #" << MPI::COMM_WORLD.Get_rank() <<
" processor"
95 if (fgCommunicators[0] != 0 && fgCommunicators[1] != 0) {
96 delete fgCommunicators[0];
97 fgCommunicators[0] = 0;
99 delete fgCommunicators[1];
100 fgCommunicators[1] = 0;
101 fgIndicesComm[1] = 0;
118 fgCommunicator->Allreduce(&sub, &
total, 1, MPI::DOUBLE, MPI::SUM);
125 void MPISyncVector(
double *ivector,
int svector,
double *ovector);
145 static MPI::Intracomm *fgCommunicator;
146 static int fgIndexComm;
147 static MPI::Intracomm *fgCommunicators[2];
148 static unsigned int fgIndicesComm[2];
static unsigned int total
Class describing a symmetric matrix of size n.
unsigned int fNumElements4JobIn
bool SyncVector(ROOT::Minuit2::MnAlgebraicVector &mnvector)
static bool SetCartDimension(unsigned int dimX, unsigned int dimY)
static unsigned int fgCartSizeY
unsigned int fNumElements4JobOut
static unsigned int fgGlobalRank
unsigned int GetMPIRank() const
unsigned int NumElements4JobOut() const
unsigned int GetMPISize() const
unsigned int NumElements4Job(unsigned int rank) const
unsigned int StartElementIndex() const
static unsigned int GetMPIGlobalRank()
static void TerminateMPI()
bool SyncSymMatrixOffDiagonal(ROOT::Minuit2::MnAlgebraicSymMatrix &mnmatrix)
void SumReduce(const double &sub, double &total)
static unsigned int fgGlobalSize
static unsigned int GetMPIGlobalSize()
static unsigned int fgCartDimension
unsigned int NumElements4JobIn() const
static unsigned int fgCartSizeX
static bool SetDoFirstMPICall(bool doFirstMPICall=true)
unsigned int EndElementIndex() const
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.