84 if( !normIntOnly ) sumIntegrals(
kAmpInt );
89 NormIntInterfaceMPI::setupMPI()
91 MPI_Comm_rank( MPI_COMM_WORLD, &m_rank );
92 MPI_Comm_size( MPI_COMM_WORLD, &m_numProc );
96 m_isMaster = ( m_rank == 0 );
98 int totalGenEvents = 0;
99 int totalAccEvents = 0;
103 for(
int i = 1; i < m_numProc; ++i ){
113 MPI_COMM_WORLD, &status );
114 totalGenEvents += thisEvents;
117 MPI_COMM_WORLD, &status );
118 totalAccEvents += thisEvents;
155 NormIntInterfaceMPI::sumIntegrals(
IntType type )
const 177 (
sizeof(
GDouble ) ==
sizeof(
double ) ? MPI_DOUBLE : MPI_FLOAT );
178 MPI_Allreduce( integrals, result,
cacheSize(), t, MPI_SUM, MPI_COMM_WORLD );
183 MPI_Bcast( &totalEvents, 1, MPI_INT, 0, MPI_COMM_WORLD );
186 for(
int i = 0; i <
cacheSize(); ++i ) result[i] /= totalEvents;
virtual complex< double > normInt(string amp, string conjAmp, bool forceUseCache=false) const
const IntensityManager * intenManager() const
virtual void forceCacheUpdate(bool normIntOnly=false) const
complex< double > normInt(string amp, string conjAmp, bool forceUseCache=false) const
void forceCacheUpdate(bool normIntOnly=false) const
bool hasAccessToMC() const
void setAccEvents(int events)
void setGenEvents(int events)
const GDouble * normIntMatrix() const
const GDouble * ampIntMatrix() const
void setAmpIntMatrix(const double *input) const
NormIntInterfaceMPI(const string &normIntFile)
void setNormIntMatrix(const double *input) const