PPL Logo

ck-core/ckrdma.h File Reference

Go to the source code of this file.

Data Structures

struct  CkNcpyBufferPost
class  CkNcpyBuffer
struct  NcpyEmInfo
struct  NcpyEmBufferInfo
struct  NcpyBcastRecvPeerAckInfo
struct  NcpyBcastAckInfo
struct  NcpyBcastRootAckInfo
struct  NcpyBcastInterimAckInfo
struct  NcpyROBcastBuffAckInfo
struct  NcpyROBcastAckInfo

Enumerations

enum  CkNcpyMode { MEMCPY, CMA, RDMA }
enum  CkNcpyStatus { incomplete, complete }
enum  ncpyEmApiMode { P2P_SEND, BCAST_SEND, P2P_RECV, BCAST_RECV }

Functions

void CkRdmaDirectAckHandler (void *ack)
void invokeCallback (void *cb, int pe, CkNcpyBuffer &buff)
CkNcpyMode findTransferMode (int srcPe, int destPe)
void invokeSourceCallback (NcpyOperationInfo *info)
void invokeDestinationCallback (NcpyOperationInfo *info)
void enqueueNcpyMessage (int destPe, void *msg)
static CkNcpyBuffer CkSendBuffer (const void *ptr_, CkCallback &cb_, unsigned short int regMode_=CK_BUFFER_REG, unsigned short int deregMode_=CK_BUFFER_DEREG)
static CkNcpyBuffer CkSendBuffer (const void *ptr_, unsigned short int regMode_=CK_BUFFER_REG, unsigned short int deregMode_=CK_BUFFER_DEREG)
envelope * CkRdmaIssueRgets (envelope *env, ncpyEmApiMode emMode, void *forwardMsg=NULL)
void CkRdmaIssueRgets (envelope *env, ncpyEmApiMode emMode, void *forwardMsg, int numops, void **arrPtrs, CkNcpyBufferPost *postStructs)
void handleEntryMethodApiCompletion (NcpyOperationInfo *info)
void handleReverseEntryMethodApiCompletion (NcpyOperationInfo *info)
void CkPackRdmaPtrs (char *msgBuf)
void CkUnpackRdmaPtrs (char *msgBuf)
void getRdmaNumopsAndBufsize (envelope *env, int &numops, int &bufsize)
void CkRdmaEMAckHandler (int destPe, void *ack)
void CkRdmaEMBcastPostAckHandler (void *msg)
void CkRdmaPrepareBcastMsg (envelope *env)
void CkReplaceSourcePtrsInBcastMsg (envelope *env, NcpyBcastInterimAckInfo *bcastAckInfo, int origPe)
const void * getParentBcastAckInfo (void *msg, int &srcPe)
NcpyBcastInterimAckInfo * allocateInterimNodeAckObj (envelope *myEnv, envelope *myChildEnv, int pe)
void forwardMessageToChildNodes (envelope *myChildrenMsg, UChar msgType)
void forwardMessageToPeerNodes (envelope *myMsg, UChar msgType)
void handleBcastEntryMethodApiCompletion (NcpyOperationInfo *info)
void handleBcastReverseEntryMethodApiCompletion (NcpyOperationInfo *info)
void deregisterMemFromMsg (envelope *env, bool isRecv)
void handleMsgUsingCMAPostCompletionForSendBcast (envelope *copyenv, envelope *env, CkNcpyBuffer &source)
void processBcastSendEmApiCompletion (NcpyEmInfo *ncpyEmInfo, int destPe)
void CkReplaceSourcePtrsInBcastMsg (envelope *prevEnv, envelope *env, void *bcastAckInfo, int origPe)
void processBcastRecvEmApiCompletion (NcpyEmInfo *ncpyEmInfo, int destPe)
void CkRdmaEMBcastAckHandler (void *ack)
void handleMsgOnChildPostCompletionForRecvBcast (envelope *env)
void handleMsgOnInterimPostCompletionForRecvBcast (envelope *env, NcpyBcastInterimAckInfo *bcastAckInfo, int pe)
 CkpvExtern (int, _numPendingRORdmaTransfers)
void readonlyUpdateNumops ()
void readonlyAllocateOnSource ()
void readonlyCreateOnSource (CkNcpyBuffer &src)
void readonlyGet (CkNcpyBuffer &src, CkNcpyBuffer &dest, void *refPtr)
void readonlyGetCompleted (NcpyOperationInfo *ncpyOpInfo)
void updatePeerCounterAndPush (envelope *env)
CkArray * getArrayMgrFromMsg (envelope *env)
void sendAckMsgToParent (envelope *env)
void sendRecvDoneMsgToPeers (envelope *env, CkArray *mgr)


Enumeration Type Documentation

enum CkNcpyMode

Enumerator:
MEMCPY 
CMA 
RDMA 

Definition at line 46 of file ckrdma.h.

Enumerator:
incomplete 
complete 

Definition at line 51 of file ckrdma.h.

Enumerator:
P2P_SEND 
BCAST_SEND 
P2P_RECV 
BCAST_RECV 

Definition at line 57 of file ckrdma.h.


Function Documentation

void CkRdmaDirectAckHandler ( void *  ack  ) 

void invokeCallback ( void *  cb,
int  pe,
CkNcpyBuffer &  buff 
)

Definition at line 376 of file ckrdma.C.

References _ckcallbackgroup.

Referenced by CkRdmaEMBcastAckHandler(), invokeDestinationCallback(), and invokeSourceCallback().

Here is the caller graph for this function:

CkNcpyMode findTransferMode ( int  srcPe,
int  destPe 
)

Definition at line 391 of file ckrdma.C.

References CMA, CmiDoesCMAWork(), CmiNodeOf(), CmiPeOnSamePhysicalNode(), MEMCPY, and RDMA.

Referenced by CkRdmaIssueRgets(), CkNcpyBuffer::get(), CkNcpyBuffer::put(), and readonlyGet().

Here is the call graph for this function:

Here is the caller graph for this function:

void invokeSourceCallback ( NcpyOperationInfo *  info  ) 

void invokeDestinationCallback ( NcpyOperationInfo *  info  ) 

Definition at line 318 of file ckrdma.C.

References ncpystruct::ackMode, CkNcpyBuffer::constructDestinationBufferObject, dest, ncpystruct::destAck, ncpystruct::destPe, invokeCallback(), and CkCallback::requiresMsgConstruction().

Referenced by handleDirectApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

void enqueueNcpyMessage ( int  destPe,
void *  msg 
)

Definition at line 402 of file ckrdma.C.

References Converse::CkMyPe(), CmiHandleMessage(), CmiPushPE(), and CmiRankOf().

Referenced by CkRdmaEMAckHandler(), CkRdmaEMBcastAckHandler(), CkRdmaIssueRgets(), handleMsgUsingCMAPostCompletionForSendBcast(), and processBcastSendEmApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

static CkNcpyBuffer CkSendBuffer ( const void *  ptr_,
CkCallback &  cb_,
unsigned short int  regMode_ = CK_BUFFER_REG,
unsigned short int  deregMode_ = CK_BUFFER_DEREG 
) [inline, static]

Definition at line 285 of file ckrdma.h.

static CkNcpyBuffer CkSendBuffer ( const void *  ptr_,
unsigned short int  regMode_ = CK_BUFFER_REG,
unsigned short int  deregMode_ = CK_BUFFER_DEREG 
) [inline, static]

Definition at line 289 of file ckrdma.h.

envelope* CkRdmaIssueRgets ( envelope *  env,
ncpyEmApiMode  emMode,
void *  forwardMsg = NULL 
)

void CkRdmaIssueRgets ( envelope *  env,
ncpyEmApiMode  emMode,
void *  forwardMsg,
int  numops,
void **  arrPtrs,
CkNcpyBufferPost *  postStructs 
)

void handleEntryMethodApiCompletion ( NcpyOperationInfo *  info  ) 

Definition at line 678 of file ckrdma.C.

References ncpystruct::ackMode, CkRdmaEMAckHandler(), CmiInvokeRemoteDeregAckHandler(), ncpystruct::destPe, invokeSourceCallback(), ncpystruct::refPtr, ncpystruct::srcDeregMode, and ncpystruct::srcPe.

Referenced by CkRdmaDirectAckHandler().

Here is the call graph for this function:

Here is the caller graph for this function:

void handleReverseEntryMethodApiCompletion ( NcpyOperationInfo *  info  ) 

void CkPackRdmaPtrs ( char *  msgBuf  ) 

Definition at line 630 of file ckrdma.C.

References p, CkNcpyBuffer::ptr, and PUP::w.

Referenced by CkRdmaIssueRgets(), and CkReplaceSourcePtrsInBcastMsg().

Here is the caller graph for this function:

void CkUnpackRdmaPtrs ( char *  msgBuf  ) 

Definition at line 647 of file ckrdma.C.

References p, CkNcpyBuffer::ptr, size_t, and PUP::w.

Referenced by CkReplaceSourcePtrsInBcastMsg().

Here is the caller graph for this function:

void getRdmaNumopsAndBufsize ( envelope *  env,
int &  numops,
int &  bufsize 
)

Definition at line 666 of file ckrdma.C.

References CkNcpyBuffer::cnt, EnvToUsr(), and PUP::w.

Referenced by CkRdmaIssueRgets().

Here is the call graph for this function:

Here is the caller graph for this function:

void CkRdmaEMAckHandler ( int  destPe,
void *  ack 
)

void CkRdmaEMBcastPostAckHandler ( void *  msg  ) 

void CkRdmaPrepareBcastMsg ( envelope *  env  ) 

void CkReplaceSourcePtrsInBcastMsg ( envelope *  env,
NcpyBcastInterimAckInfo *  bcastAckInfo,
int  origPe 
)

const void* getParentBcastAckInfo ( void *  msg,
int &  srcPe 
)

Definition at line 975 of file ckrdma.C.

References CkNcpyBuffer::bcastAckInfo, EnvToUsr(), p, CkNcpyBuffer::pe, and source.

Referenced by CkRdmaEMBcastAckHandler(), and sendAckMsgToParent().

Here is the call graph for this function:

Here is the caller graph for this function:

NcpyBcastInterimAckInfo* allocateInterimNodeAckObj ( envelope *  myEnv,
envelope *  myChildEnv,
int  pe 
)

void forwardMessageToChildNodes ( envelope *  myChildrenMsg,
UChar  msgType 
)

Definition at line 1126 of file ckrdma.C.

References CmiForwardNodeBcastMsg(), CmiForwardProcBcastMsg(), ForNodeBocMsg, and envelope::getTotalsize().

Referenced by handleMsgOnInterimPostCompletionForRecvBcast(), handleMsgUsingCMAPostCompletionForSendBcast(), and processBcastSendEmApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

void forwardMessageToPeerNodes ( envelope *  myMsg,
UChar  msgType 
)

Definition at line 1138 of file ckrdma.C.

References CmiForwardMsgToPeers(), ForBocMsg, and envelope::getTotalsize().

Referenced by CkRdmaEMBcastAckHandler(), CkRdmaIssueRgets(), handleMsgUsingCMAPostCompletionForSendBcast(), and processBcastSendEmApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

void handleBcastEntryMethodApiCompletion ( NcpyOperationInfo *  info  ) 

Definition at line 1147 of file ckrdma.C.

References ncpystruct::ackMode, CkRdmaEMAckHandler(), ncpystruct::destPe, and ncpystruct::refPtr.

Referenced by CkRdmaDirectAckHandler().

Here is the call graph for this function:

Here is the caller graph for this function:

void handleBcastReverseEntryMethodApiCompletion ( NcpyOperationInfo *  info  ) 

Definition at line 1155 of file ckrdma.C.

References ncpystruct::ackMode, CmiFree(), CmiInvokeRemoteAckHandler(), ncpystruct::destPe, ncpystruct::freeMe, and ncpystruct::refPtr.

Referenced by CkRdmaDirectAckHandler().

Here is the call graph for this function:

Here is the caller graph for this function:

void deregisterMemFromMsg ( envelope *  env,
bool  isRecv 
)

void handleMsgUsingCMAPostCompletionForSendBcast ( envelope *  copyenv,
envelope *  env,
CkNcpyBuffer &  source 
)

void processBcastSendEmApiCompletion ( NcpyEmInfo *  ncpyEmInfo,
int  destPe 
)

void CkReplaceSourcePtrsInBcastMsg ( envelope *  prevEnv,
envelope *  env,
void *  bcastAckInfo,
int  origPe 
)

Definition at line 1250 of file ckrdma.C.

References CkNcpyBuffer::bcastAckInfo, CkPackMessage(), CkPackRdmaPtrs(), CkUnpackMessage(), CkUnpackRdmaPtrs(), EnvToUsr(), p, CkNcpyBuffer::pe, and source.

Referenced by handleMsgOnInterimPostCompletionForRecvBcast(), handleMsgUsingCMAPostCompletionForSendBcast(), and processBcastSendEmApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

void processBcastRecvEmApiCompletion ( NcpyEmInfo *  ncpyEmInfo,
int  destPe 
)

Definition at line 1303 of file ckrdma.C.

References _topoTree, CmiSpanningTreeInfo::child_count, CkRdmaEMBcastPostAckHandler(), CmiFree(), CmiInvokeBcastPostAckHandler(), NcpyEmInfo::msg, and PUP::t.

Referenced by CkRdmaEMAckHandler().

Here is the call graph for this function:

Here is the caller graph for this function:

void CkRdmaEMBcastAckHandler ( void *  ack  ) 

void handleMsgOnChildPostCompletionForRecvBcast ( envelope *  env  ) 

void handleMsgOnInterimPostCompletionForRecvBcast ( envelope *  env,
NcpyBcastInterimAckInfo *  bcastAckInfo,
int  pe 
)

CkpvExtern ( int  ,
_numPendingRORdmaTransfers   
)

void readonlyUpdateNumops (  ) 

Definition at line 1559 of file ckrdma.C.

References numZerocopyROops.

void readonlyAllocateOnSource (  ) 

Definition at line 1565 of file ckrdma.C.

References _topoTree, CmiSpanningTreeInfo::child_count, CmiAlloc(), NcpyROBcastAckInfo::counter, NcpyROBcastAckInfo::isRoot, NcpyROBcastAckInfo::numChildren, NcpyROBcastAckInfo::numops, numZerocopyROops, CmiSpanningTreeInfo::parent, and PUP::t.

Referenced by _processRODataMsg(), and _sendReadonlies().

Here is the call graph for this function:

Here is the caller graph for this function:

void readonlyCreateOnSource ( CkNcpyBuffer &  src  ) 

void readonlyGet ( CkNcpyBuffer &  src,
CkNcpyBuffer &  dest,
void *  refPtr 
)

void readonlyGetCompleted ( NcpyOperationInfo *  ncpyOpInfo  ) 

void updatePeerCounterAndPush ( envelope *  env  ) 

Definition at line 1394 of file ckrdma.C.

References _topoTree, CkNcpyBuffer::bcastAckInfo, CkPackMessage(), CkUnpackMessage(), CmiNodeFirst(), CmiPushPE(), CmiRankOf(), EnvToUsr(), p, CkNcpyBuffer::pe, CkNcpyBuffer::ref, source, and PUP::t.

Referenced by _deliverForBocMsg().

Here is the call graph for this function:

Here is the caller graph for this function:

CkArray* getArrayMgrFromMsg ( envelope *  env  ) 

Definition at line 1477 of file ckrdma.C.

References _getCkLocalBranchFromGroupID(), and envelope::getArrayMgr().

Referenced by CkRdmaEMBcastAckHandler(), handleArrayMsgOnChildPostCompletionForRecvBcast(), handleMsgOnInterimPostCompletionForRecvBcast(), and CkArray::recvBroadcast().

Here is the call graph for this function:

Here is the caller graph for this function:

void sendAckMsgToParent ( envelope *  env  ) 

Definition at line 1467 of file ckrdma.C.

References CmiInvokeBcastAckHandler(), getParentBcastAckInfo(), and CkNcpyBuffer::ref.

Referenced by CkRdmaEMBcastAckHandler(), CkRdmaEMBcastPostAckHandler(), CkRdmaIssueRgets(), and processBcastSendEmApiCompletion().

Here is the call graph for this function:

Here is the caller graph for this function:

void sendRecvDoneMsgToPeers ( envelope *  env,
CkArray *  mgr 
)


Generated on Mon Sep 21 07:58:45 2020 for Charm++ by  doxygen 1.5.5