11 #ifndef ROOT_Minuit2_MPIProcess
12 #define ROOT_Minuit2_MPIProcess
32 if (MPI::Is_initialized() && !(MPI::Is_finalized())) {
33 std::cout <<
"Info --> MPITerminate:: End MPI on #"
34 << MPI::COMM_WORLD.Get_rank() <<
" processor"
47 MPIProcess(
unsigned int nelements,
unsigned int indexComm);
73 if (!(MPI::Is_initialized())) {
75 std::cout <<
"Info --> MPIProcess::StartMPI: Start MPI on #"
76 << MPI::COMM_WORLD.Get_rank() <<
" processor"
86 if (fgCommunicators[0]!=0 && fgCommunicators[1]!=0) {
87 delete fgCommunicators[0]; fgCommunicators[0] = 0; fgIndecesComm[0] = 0;
88 delete fgCommunicators[1]; fgCommunicators[1] = 0; fgIndecesComm[1] = 0;
104 fgCommunicator->Allreduce(&sub,&total,1,MPI::DOUBLE,MPI::SUM);
112 void MPISyncVector(
double *ivector,
int svector,
double *ovector);
132 static MPI::Intracomm *fgCommunicator;
133 static int fgIndexComm;
134 static MPI::Intracomm *fgCommunicators[2];
135 static unsigned int fgIndecesComm[2];
unsigned int fNumElements4JobOut
static unsigned int fgGlobalSize
void SumReduce(const double &sub, double &total)
MPIProcess(unsigned int nelements, unsigned int indexComm)
bool SyncVector(ROOT::Minuit2::MnAlgebraicVector &mnvector)
Class describing a symmetric matrix of size n.
static unsigned int GetMPIGlobalSize()
static void TerminateMPI()
static unsigned int fgCartDimension
unsigned int fNumElements4JobIn
static bool SetDoFirstMPICall(bool doFirstMPICall=true)
static bool SetCartDimension(unsigned int dimX, unsigned int dimY)
unsigned int NumElements4Job(unsigned int rank) const
static unsigned int GetMPIGlobalRank()
unsigned int StartElementIndex() const
void Init(TClassEdit::TInterpreterLookupHelper *helper)
static unsigned int fgCartSizeX
unsigned int NumElements4JobIn() const
static unsigned int fgGlobalRank
unsigned int GetMPIRank() const
static unsigned int fgCartSizeY
unsigned int GetMPISize() const
unsigned int EndElementIndex() const
unsigned int NumElements4JobOut() const
bool SyncSymMatrixOffDiagonal(ROOT::Minuit2::MnAlgebraicSymMatrix &mnmatrix)