56 if( !m_mpiSetup ) setupMPI();
60 cerr <<
"ERROR: deliverLikelihood() should not run on master node" 69 int* fitFlag = &(cmnd[1]);
72 map< int, LikelihoodCalculatorMPI* >::iterator mapItr;
76 while( *fitFlag !=
kExit ){
78 mapItr = m_calcMap.find( *
id );
80 assert( mapItr != m_calcMap.end() );
81 likCalc = mapItr->second;
87 likCalc->updateParameters();
92 likCalc->updateAmpParameter();
99 likCalc->normIntTerm();
104 likCalc->computeLikelihood();
109 cerr <<
"Unknown command flag!" << endl;
114 MPI_COMM_WORLD, &status );
117 assert( *fitFlag ==
kExit );
123 if( !m_mpiSetup ) setupMPI();
131 assert( m_isMaster );
136 map< int, LikelihoodCalculatorMPI* >::iterator mapItr = m_calcMap.begin();
139 assert( mapItr != m_calcMap.end() );
141 cmnd[0] = mapItr->first;
144 for(
int i = 1; i < m_numProc; ++i ){
151 LikelihoodManagerMPI::setupMPI()
154 MPI_Comm_rank( MPI_COMM_WORLD, &rank );
155 m_isMaster = ( rank == 0 );
156 MPI_Comm_size( MPI_COMM_WORLD, &m_numProc );
160 bool LikelihoodManagerMPI::m_mpiSetup =
false;
161 bool LikelihoodManagerMPI::m_isMaster =
false;
162 int LikelihoodManagerMPI::m_numProc = 0;
163 map< int, LikelihoodCalculatorMPI* > LikelihoodManagerMPI::m_calcMap;
static void registerCalculator(int id, LikelihoodCalculatorMPI *calc)
static void broadcastToFirst(FitCommand command)
static void deliverLikelihood()