Grid 0.7.0
CartesianCommunicator Class Reference

#include <Communicator_base.h>

Inheritance diagram for CartesianCommunicator:
SharedMemory GridBase GridCartesian GridRedBlackCartesian

Public Types

enum  CommunicatorPolicy_t { CommunicatorPolicyConcurrent , CommunicatorPolicySequential }

Public Member Functions

 CartesianCommunicator (const Coordinate &processors, const CartesianCommunicator &parent, int &srank)
 CartesianCommunicator (const Coordinate &pdimensions_in)
virtual ~CartesianCommunicator ()
void ShiftedRanks (int dim, int shift, int &source, int &dest)
int RankFromProcessorCoor (Coordinate &coor)
void ProcessorCoorFromRank (int rank, Coordinate &coor)
int Dimensions (void)
int IsBoss (void)
int BossRank (void)
int ThisRank (void)
const CoordinateThisProcessorCoor (void)
const CoordinateShmGrid (void)
const CoordinateProcessorGrid (void)
int ProcessorCount (void)
void GlobalMax (RealD &)
void GlobalMax (RealF &)
void GlobalSum (RealF &)
void GlobalSumVector (RealF *, int N)
void GlobalSum (RealD &)
void GlobalSumVector (RealD *, int N)
void GlobalSum (uint32_t &)
void GlobalSum (uint64_t &)
void GlobalSumVector (uint64_t *, int N)
void GlobalSum (ComplexF &c)
void GlobalSumVector (ComplexF *c, int N)
void GlobalSum (ComplexD &c)
void GlobalSumVector (ComplexD *c, int N)
void GlobalXOR (uint32_t &)
void GlobalXOR (uint64_t &)
template<class obj>
void GlobalSumP2P (obj &o)
template<class obj>
void GlobalSum (obj &o)
void CommsComplete (std::vector< MpiCommsRequest_t > &list)
void SendToRecvFromBegin (std::vector< MpiCommsRequest_t > &list, void *xmit, int dest, void *recv, int from, int bytes, int dir)
void SendToRecvFrom (void *xmit, int xmit_to_rank, void *recv, int recv_from_rank, int bytes)
int IsOffNode (int rank)
double StencilSendToRecvFrom (void *xmit, int xmit_to_rank, int do_xmit, void *recv, int recv_from_rank, int do_recv, int bytes, int dir)
double StencilSendToRecvFromPrepare (std::vector< CommsRequest_t > &list, void *xmit, int xmit_to_rank, int do_xmit, void *recv, int recv_from_rank, int do_recv, int xbytes, int rbytes, int dir)
void StencilSendToRecvFromPollDtoH (std::vector< CommsRequest_t > &list)
void StencilSendToRecvFromPollIRecv (std::vector< CommsRequest_t > &list)
double StencilSendToRecvFromBegin (std::vector< CommsRequest_t > &list, void *xmit, void *xmit_comp, int xmit_to_rank, int do_xmit, void *recv, void *recv_comp, int recv_from_rank, int do_recv, int xbytes, int rbytes, int dir)
void StencilSendToRecvFromComplete (std::vector< CommsRequest_t > &waitall, int i)
void StencilBarrier (void)
void Barrier (void)
void Broadcast (int root, void *data, int bytes)
template<class T>
void AllToAll (int dim, std::vector< T > &in, std::vector< T > &out)
void AllToAll (int dim, void *in, void *out, uint64_t words, uint64_t bytes)
void AllToAll (void *in, void *out, uint64_t words, uint64_t bytes)
template<class obj>
void Broadcast (int root, obj &data)
void SetCommunicator (Grid_MPI_Comm comm)
void ShmBarrier (void)
void SharedMemoryTest (void)
void * ShmBufferSelf (void)
void * ShmBuffer (int rank)
void * ShmBufferTranslate (int rank, void *local_p)
void * ShmBufferMalloc (size_t bytes)
void ShmBufferFreeAll (void)
int NodeCount (void)
int RankCount (void)

Static Public Member Functions

static void SetCommunicatorPolicy (CommunicatorPolicy_t policy)
static void Init (int *argc, char ***argv)
static int RankWorld (void)
static void BroadcastWorld (int root, void *data, int bytes)
static void BarrierWorld (void)

Data Fields

int _Nprocessors
int _processor
unsigned long _ndimension
Coordinate _shm_processors
Coordinate _processors
Coordinate _processor_coor
Grid_MPI_Comm communicator
std::vector< Grid_MPI_Commcommunicator_halo

Static Public Attributes

static CommunicatorPolicy_t CommunicatorPolicy
static int nCommThreads
static Grid_MPI_Comm communicator_world

Protected Attributes

Grid_MPI_Comm ShmComm
int ShmRank
int ShmSize
std::vector< void * > ShmCommBufs
std::vector< int > ShmRanks

Private Member Functions

void InitFromMPICommunicator (const Coordinate &processors, Grid_MPI_Comm communicator_base)

Private Attributes

size_t heap_top
size_t heap_bytes
size_t heap_size

Static Private Attributes

static const int MAXLOG2RANKSPERNODE

Detailed Description

Definition at line 42 of file Communicator_base.h.

Member Enumeration Documentation

◆ CommunicatorPolicy_t

Enumerator
CommunicatorPolicyConcurrent 
CommunicatorPolicySequential 

Definition at line 49 of file Communicator_base.h.

Constructor & Destructor Documentation

◆ CartesianCommunicator() [1/2]

◆ CartesianCommunicator() [2/2]

CartesianCommunicator::CartesianCommunicator ( const Coordinate & pdimensions_in)

◆ ~CartesianCommunicator()

CartesianCommunicator::~CartesianCommunicator ( )
virtual

Definition at line 250 of file Communicator_mpi3.cc.

References communicator, and communicator_halo.

Member Function Documentation

◆ SetCommunicatorPolicy()

void CartesianCommunicator::SetCommunicatorPolicy ( CommunicatorPolicy_t policy)
inlinestatic

Definition at line 51 of file Communicator_base.h.

References CommunicatorPolicy.

◆ Init()

◆ InitFromMPICommunicator()

void CartesianCommunicator::InitFromMPICommunicator ( const Coordinate & processors,
Grid_MPI_Comm communicator_base )
private

◆ ShiftedRanks()

void CartesianCommunicator::ShiftedRanks ( int dim,
int shift,
int & source,
int & dest )

◆ RankFromProcessorCoor()

int CartesianCommunicator::RankFromProcessorCoor ( Coordinate & coor)

Definition at line 86 of file Communicator_mpi3.cc.

References communicator.

Referenced by GridBase::GlobalCoorToRankIndex().

◆ ProcessorCoorFromRank()

void CartesianCommunicator::ProcessorCoorFromRank ( int rank,
Coordinate & coor )

◆ Dimensions()

int CartesianCommunicator::Dimensions ( void )

Definition at line 48 of file Communicator_base.cc.

References _ndimension.

Referenced by BinaryIO::IOobject().

◆ IsBoss()

int CartesianCommunicator::IsBoss ( void )

Definition at line 49 of file Communicator_base.cc.

References _processor.

Referenced by NerscIO::writeConfiguration(), and NerscIO::writeRNGState().

◆ BossRank()

int CartesianCommunicator::BossRank ( void )

Definition at line 50 of file Communicator_base.cc.

Referenced by pokeSite().

◆ ThisRank()

int CartesianCommunicator::ThisRank ( void )

Definition at line 51 of file Communicator_base.cc.

References _processor.

Referenced by BinaryIO::IOobject(), and pokeSite().

◆ ThisProcessorCoor()

const Coordinate & CartesianCommunicator::ThisProcessorCoor ( void )

Definition at line 52 of file Communicator_base.cc.

References _processor_coor.

Referenced by OpenQcdIO::createOpenQcdGrid(), and BinaryIO::IOobject().

◆ ShmGrid()

const Coordinate & CartesianCommunicator::ShmGrid ( void )
inline

Definition at line 103 of file Communicator_base.h.

References _shm_processors.

◆ ProcessorGrid()

const Coordinate & CartesianCommunicator::ProcessorGrid ( void )

Definition at line 53 of file Communicator_base.cc.

References _processors.

Referenced by OpenQcdIO::createOpenQcdGrid(), and BinaryIO::IOobject().

◆ ProcessorCount()

int CartesianCommunicator::ProcessorCount ( void )

Definition at line 54 of file Communicator_base.cc.

References _Nprocessors.

Referenced by BinaryIO::IOobject().

◆ RankWorld()

int CartesianCommunicator::RankWorld ( void )
static

Definition at line 838 of file Communicator_mpi3.cc.

References communicator_world.

Referenced by check_huge_pages(), and Grid_init().

◆ BroadcastWorld()

◆ BarrierWorld()

void CartesianCommunicator::BarrierWorld ( void )
static

Definition at line 843 of file Communicator_mpi3.cc.

References communicator_world, and FlightRecorder::StepLog().

Referenced by Grid_init().

◆ GlobalMax() [1/2]

void CartesianCommunicator::GlobalMax ( RealD & d)

Definition at line 314 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalMax() [2/2]

void CartesianCommunicator::GlobalMax ( RealF & f)

Definition at line 308 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSum() [1/7]

void CartesianCommunicator::GlobalSum ( RealF & f)

◆ GlobalSumVector() [1/5]

◆ GlobalSum() [2/7]

void CartesianCommunicator::GlobalSum ( RealD & d)

Definition at line 266 of file Communicator_mpi3.cc.

References GlobalSumP2P(), and FlightRecorder::StepLog().

◆ GlobalSumVector() [2/5]

void CartesianCommunicator::GlobalSumVector ( RealD * d,
int N )

Definition at line 326 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSum() [3/7]

void CartesianCommunicator::GlobalSum ( uint32_t & u)

Definition at line 284 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSum() [4/7]

void CartesianCommunicator::GlobalSum ( uint64_t & u)

Definition at line 289 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSumVector() [3/5]

void CartesianCommunicator::GlobalSumVector ( uint64_t * u,
int N )

Definition at line 294 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSum() [5/7]

void CartesianCommunicator::GlobalSum ( ComplexF & c)

Definition at line 61 of file Communicator_base.cc.

References GlobalSumP2P().

◆ GlobalSumVector() [4/5]

void CartesianCommunicator::GlobalSumVector ( ComplexF * c,
int N )

Definition at line 79 of file Communicator_base.cc.

References GlobalSumVector().

◆ GlobalSum() [6/7]

void CartesianCommunicator::GlobalSum ( ComplexD & c)

Definition at line 65 of file Communicator_base.cc.

References GlobalSumP2P().

◆ GlobalSumVector() [5/5]

void CartesianCommunicator::GlobalSumVector ( ComplexD * c,
int N )

Definition at line 83 of file Communicator_base.cc.

References GlobalSumVector().

◆ GlobalXOR() [1/2]

void CartesianCommunicator::GlobalXOR ( uint32_t & u)

Definition at line 299 of file Communicator_mpi3.cc.

References communicator.

Referenced by BinaryIO::IOobject().

◆ GlobalXOR() [2/2]

void CartesianCommunicator::GlobalXOR ( uint64_t & u)

Definition at line 303 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ GlobalSumP2P()

template<class obj>
void CartesianCommunicator::GlobalSumP2P ( obj & o)
inline

◆ GlobalSum() [7/7]

template<class obj>
void CartesianCommunicator::GlobalSum ( obj & o)
inline

Definition at line 162 of file Communicator_base.h.

References GlobalSumVector().

◆ CommsComplete()

void CartesianCommunicator::CommsComplete ( std::vector< MpiCommsRequest_t > & list)

Definition at line 358 of file Communicator_mpi3.cc.

Referenced by PaddedCell::Face_exchange(), and GlobalSumP2P().

◆ SendToRecvFromBegin()

void CartesianCommunicator::SendToRecvFromBegin ( std::vector< MpiCommsRequest_t > & list,
void * xmit,
int dest,
void * recv,
int from,
int bytes,
int dir )

Definition at line 333 of file Communicator_mpi3.cc.

References _processor, and communicator.

Referenced by PaddedCell::Face_exchange(), and GlobalSumP2P().

◆ SendToRecvFrom()

void CartesianCommunicator::SendToRecvFrom ( void * xmit,
int xmit_to_rank,
void * recv,
int recv_from_rank,
int bytes )

Definition at line 371 of file Communicator_mpi3.cc.

References _processor, acceleratorIsCommunicable(), and communicator.

Referenced by Cshift_comms(), and Cshift_comms_simd().

◆ IsOffNode()

int CartesianCommunicator::IsOffNode ( int rank)

Definition at line 407 of file Communicator_mpi3.cc.

References SharedMemory::ShmRanks.

◆ StencilSendToRecvFrom()

double CartesianCommunicator::StencilSendToRecvFrom ( void * xmit,
int xmit_to_rank,
int do_xmit,
void * recv,
int recv_from_rank,
int do_recv,
int bytes,
int dir )

◆ StencilSendToRecvFromPrepare()

double CartesianCommunicator::StencilSendToRecvFromPrepare ( std::vector< CommsRequest_t > & list,
void * xmit,
int xmit_to_rank,
int do_xmit,
void * recv,
int recv_from_rank,
int do_recv,
int xbytes,
int rbytes,
int dir )

Definition at line 417 of file Communicator_mpi3.cc.

Referenced by StencilSendToRecvFrom().

◆ StencilSendToRecvFromPollDtoH()

void CartesianCommunicator::StencilSendToRecvFromPollDtoH ( std::vector< CommsRequest_t > & list)

Definition at line 416 of file Communicator_mpi3.cc.

◆ StencilSendToRecvFromPollIRecv()

void CartesianCommunicator::StencilSendToRecvFromPollIRecv ( std::vector< CommsRequest_t > & list)

Definition at line 415 of file Communicator_mpi3.cc.

◆ StencilSendToRecvFromBegin()

double CartesianCommunicator::StencilSendToRecvFromBegin ( std::vector< CommsRequest_t > & list,
void * xmit,
void * xmit_comp,
int xmit_to_rank,
int do_xmit,
void * recv,
void * recv_comp,
int recv_from_rank,
int do_recv,
int xbytes,
int rbytes,
int dir )

◆ StencilSendToRecvFromComplete()

void CartesianCommunicator::StencilSendToRecvFromComplete ( std::vector< CommsRequest_t > & waitall,
int i )

Definition at line 487 of file Communicator_mpi3.cc.

References acceleratorCopySynchronise(), and StencilBarrier().

Referenced by StencilSendToRecvFrom().

◆ StencilBarrier()

void CartesianCommunicator::StencilBarrier ( void )

◆ Barrier()

◆ Broadcast() [1/2]

void CartesianCommunicator::Broadcast ( int root,
void * data,
int bytes )

◆ AllToAll() [1/3]

template<class T>
void CartesianCommunicator::AllToAll ( int dim,
std::vector< T > & in,
std::vector< T > & out )
inline

Definition at line 228 of file Communicator_base.h.

References _ndimension, _processors, and AllToAll().

Referenced by AllToAll(), AllToAll(), Grid_split(), and Grid_unsplit().

◆ AllToAll() [2/3]

void CartesianCommunicator::AllToAll ( int dim,
void * in,
void * out,
uint64_t words,
uint64_t bytes )

Definition at line 859 of file Communicator_mpi3.cc.

References _ndimension, _processors, AllToAll(), and CartesianCommunicator().

◆ AllToAll() [3/3]

void CartesianCommunicator::AllToAll ( void * in,
void * out,
uint64_t words,
uint64_t bytes )

Definition at line 871 of file Communicator_mpi3.cc.

References communicator, and FlightRecorder::StepLog().

◆ Broadcast() [2/2]

template<class obj>
void CartesianCommunicator::Broadcast ( int root,
obj & data )
inline

Definition at line 242 of file Communicator_base.h.

References Broadcast().

◆ SetCommunicator()

◆ ShmBarrier()

void SharedMemory::ShmBarrier ( void )
inherited

Definition at line 966 of file SharedMemoryMPI.cc.

References ShmComm.

Referenced by SharedMemoryTest().

◆ SharedMemoryTest()

void SharedMemory::SharedMemoryTest ( void )
inherited

◆ ShmBufferSelf()

void * SharedMemory::ShmBufferSelf ( void )
inherited

Definition at line 112 of file SharedMemory.cc.

References ShmCommBufs, and ShmRank.

Referenced by ShmBufferFreeAll().

◆ ShmBuffer()

void * SharedMemory::ShmBuffer ( int rank)
inherited

Definition at line 997 of file SharedMemoryMPI.cc.

References ShmCommBufs, and ShmRanks.

◆ ShmBufferTranslate()

void * SharedMemory::ShmBufferTranslate ( int rank,
void * local_p )
inherited

Definition at line 1006 of file SharedMemoryMPI.cc.

References ShmCommBufs, ShmRank, and ShmRanks.

Referenced by CartesianCommunicator::StencilSendToRecvFromBegin().

◆ ShmBufferMalloc()

void * SharedMemory::ShmBufferMalloc ( size_t bytes)
inherited

Definition at line 92 of file SharedMemory.cc.

References heap_bytes, heap_size, and heap_top.

◆ ShmBufferFreeAll()

void SharedMemory::ShmBufferFreeAll ( void )
inherited

Definition at line 108 of file SharedMemory.cc.

References heap_bytes, heap_top, and ShmBufferSelf().

Referenced by SetCommunicator().

◆ NodeCount()

int SharedMemory::NodeCount ( void )
inlineinherited

Definition at line 202 of file SharedMemory.h.

References GlobalSharedMemory::WorldNodes.

◆ RankCount()

int SharedMemory::RankCount ( void )
inlineinherited

Definition at line 203 of file SharedMemory.h.

References GlobalSharedMemory::WorldSize.

Field Documentation

◆ CommunicatorPolicy

CartesianCommunicator::CommunicatorPolicy_t CartesianCommunicator::CommunicatorPolicy
static

Definition at line 50 of file Communicator_base.h.

Referenced by SetCommunicatorPolicy().

◆ nCommThreads

int CartesianCommunicator::nCommThreads
static

Definition at line 52 of file Communicator_base.h.

Referenced by Grid_init(), and Init().

◆ _Nprocessors

◆ _processor

◆ _ndimension

unsigned long CartesianCommunicator::_ndimension

Definition at line 59 of file Communicator_base.h.

Referenced by acceleratorPickCheckerboard(), acceleratorSetCheckerboard(), AllToAll(), AllToAll(), A2Autils< FImpl >::AslashField(), MultiGeneralCoarsenedMatrix< Fobj, CComplex, nbasis >::BLAStoGrid(), blockPick(), blockSum(), blockZAXPY(), CartesianCommunicator(), GridRedBlackCartesian::CheckerBoard(), Dimensions(), ExtractSlice(), ExtractSliceFast(), FourierAcceleratedGaugeFixer< Gimpl >::FourierAccelSteepestDescentStep(), GridBase::GlobalCoorToGlobalIndex(), GridBase::GlobalCoorToProcessorCoorLocalCoor(), GlobalSumP2P(), Grid_split(), Grid_unsplit(), GridMetaData(), MultiGeneralCoarsenedMatrix< Fobj, CComplex, nbasis >::GridtoBLAS(), GridBase::iIndex(), GridRedBlackCartesian::iIndex(), ImprovedStaggeredFermion5D< Impl >::ImprovedStaggeredFermion5D(), GridCartesian::Init(), GridRedBlackCartesian::Init(), InitFromMPICommunicator(), GridBase::InOutCoorToLocalCoor(), InsertSlice(), InsertSliceFast(), InsertSliceLocal(), localConvert(), localCopyRegion(), SpaceTimeGrid::makeFiveDimDWFGrid(), SpaceTimeGrid::makeFiveDimDWFRedBlackGrid(), SpaceTimeGrid::makeFiveDimGrid(), SpaceTimeGrid::makeFiveDimRedBlackGrid(), makeSubSliceGrid(), ScalarImplTypes< vReal >::MomentumSpacePropagator(), GridBase::Nd(), GridBase::oIndex(), GridRedBlackCartesian::oIndex(), GridBase::oIndexReduced(), GridBase::PermuteType(), ProcessorCoorFromRank(), GridBase::ProcessorCoorLocalCoorToGlobalCoor(), GridBase::RankIndexToGlobalCoor(), NerscIO::readHeader(), OpenQcdIO::readHeader(), Replicate(), RNGfillable(), RNGfillable_general(), BinaryIO::ScidacChecksum(), GridBase::show_decomposition(), sliceInnerProductVector(), sliceSum(), subdivides(), and WilsonFermion5D< Impl >::WilsonFermion5D().

◆ _shm_processors

Coordinate CartesianCommunicator::_shm_processors

Definition at line 60 of file Communicator_base.h.

Referenced by CartesianCommunicator(), CartesianCommunicator(), and ShmGrid().

◆ _processors

◆ _processor_coor

◆ communicator_world

Grid_MPI_Comm CartesianCommunicator::communicator_world
static

◆ communicator

◆ communicator_halo

std::vector<Grid_MPI_Comm> CartesianCommunicator::communicator_halo

◆ MAXLOG2RANKSPERNODE

const int SharedMemory::MAXLOG2RANKSPERNODE
staticprivateinherited

Definition at line 151 of file SharedMemory.h.

◆ heap_top

size_t SharedMemory::heap_top
privateinherited

Definition at line 153 of file SharedMemory.h.

Referenced by ShmBufferFreeAll(), and ShmBufferMalloc().

◆ heap_bytes

size_t SharedMemory::heap_bytes
privateinherited

Definition at line 154 of file SharedMemory.h.

Referenced by ShmBufferFreeAll(), and ShmBufferMalloc().

◆ heap_size

size_t SharedMemory::heap_size
privateinherited

Definition at line 155 of file SharedMemory.h.

Referenced by SetCommunicator(), and ShmBufferMalloc().

◆ ShmComm

Grid_MPI_Comm SharedMemory::ShmComm
protectedinherited

◆ ShmRank

int SharedMemory::ShmRank
protectedinherited

◆ ShmSize

int SharedMemory::ShmSize
protectedinherited

Definition at line 168 of file SharedMemory.h.

Referenced by SetCommunicator(), and SharedMemoryTest().

◆ ShmCommBufs

std::vector<void *> SharedMemory::ShmCommBufs
protectedinherited

◆ ShmRanks

std::vector<int> SharedMemory::ShmRanks
protectedinherited

The documentation for this class was generated from the following files: