2 #include "paircalc/pcConfig.h"
3 #include "paircalc/pcInstanceIDs.h"
4 #include "paircalc/pcFwdDeclarations.h"
6 #ifndef PC_COMM_MANAGER_H
7 #define PC_COMM_MANAGER_H
33 friend class ::CP_State_GSpacePlane;
71 void setResultProxy(CProxySection_PairCalculator *sectProxy,
bool lbsync, CkCallback synccb);
134 #endif // PC_COMM_MANAGER_H
void makeRightTree()
Creates a multicast tree that includes the PC chare arrays used in the asymmetric loop...
CProxySection_InputDataHandler< CollatorType, CollatorType > * sectionGettingRight
Array section which receives right matrix block data.
CkVec< CkArrayIndex4D > listGettingLeft
A list of PC array elements which expect left matrix data from owning GSpace chare.
bool existsLproxy
True if a proxy for the destination PC array section including a (portion of a) row exists...
void sendLeftDataMcast(int numPoints, complex *ptr, bool psiV)
Multicasts the left matrix data to the PC section.
void sendRightDataMcast(int numPoints, complex *ptr, bool psiV)
Multicasts the right matrix data to the PC section.
CProxySection_PairCalculator makeOneResultSection_asym(int chunk)
Initialize an array section that is used to reduce the results from the PCs back to the GSP chares...
void sendLeftRDMARequest(RDMApair_GSP_PC idTkn, int totalsize, CkCallback cb)
Send RDMA setup requests to all the destination PC chares that will be getting left data...
2D chare array [nchareG][nstates] Handles the electronic structure in Fourier space (referred to as G...
CkIndex2D gspaceIndex
The array index of the owner GSpace chare.
CProxySection_PairCalculator makeOneResultSection_sym1(int chunk)
initialize plane and row wise section reduction for psi->gspace
bool existsRproxy
True if a proxy for the destination PC array section including a (portion of a) column exists...
void sendRightDataRDMA(int numPoints, complex *ptr, bool psiV)
Sends right matrix data via RDMA.
cp::paircalc::pcConfig pcCfg
Input configurations for the paircalcs.
CProxySection_InputDataHandler< CollatorType, CollatorType > * sectionGettingLeft
Array section which receives left matrix block data.
void setResultProxy(CProxySection_PairCalculator *sectProxy, bool lbsync, CkCallback synccb)
Send out a dummy mcast to prod CkMulticast into setting up the result reduction trees etc...
CProxySection_PairCalculator makeOneResultSection_sym2(int chunk)
initialize plane and column wise section reduction for psi->gspace
void makeLeftTree()
Creates multicast trees to the appropriate PC chare array sections used in the symmetric / asymmetric...
void sendRightRDMARequest(RDMApair_GSP_PC idTkn, int totalsize, CkCallback cb)
Send RDMA setup requests to all the destination PC chares that will be getting right data...
void sendLeftData(int numPoints, complex *ptr, bool psiV)
Starts the forward path work (Psi, Lambda and PsiV cases) by multicasting an entry method call to the...
CProxySection_PairCalculator makeOneResultSection_asym_column(int chunk)
initialize plane and column wise section reduction for lambda->gspace
Manages communication with a single paircalc array.
A (hopefully) tiny token that is unique to every data sender-receiver pair, and is shared by them dur...
CkVec< CkArrayIndex4D > listGettingRight
A list of PC array elements which expect right matrix data from owning GSpace chare.
Dumb structure that holds all the configuration inputs required for paircalc instantiation, functioning and interaction.
A tiny structure to hold the relevant IDs/ proxies required to interact with a paircalc instance...
cp::paircalc::InstanceIDs pcHandle
Handles to the paircalc array and related entities that I will be managing comm with.
void sendRightData(int numPoints, complex *ptr, bool psiV)
Starts the forward path work (along with startPairCalcLeft()) in the asymmetric (Lambda) case...
CkVec< rdmaHandleType > leftDestinationHandles
RDMA handles for each PC chare's input data handler that will receive data from the owner of this obj...
void sendLeftDataRDMA(int numPoints, complex *ptr, bool psiV)
Sends left matrix data via RDMA.