PPL Logo

IDXL_Comm Class Reference

IDXL_Comm is the implementation of the user type IDXL_Comm. More...

#include <idxl.h>

Collaboration diagram for IDXL_Comm:

Collaboration graph
[legend]

Public Types

enum  op_t { send_t = 17, recv_t, sum_t }

Public Member Functions

 IDXL_Comm (int tag, int context)
void reset (int tag, int context)
 ~IDXL_Comm ()
void send (const IDXL_Side *idx, const IDXL_Layout *dtype, const void *src)
void recv (const IDXL_Side *idx, const IDXL_Layout *dtype, void *dest)
void sum (const IDXL_Side *idx, const IDXL_Layout *dtype, void *srcdest)
void post (void)
void wait (void)
bool isPosted (void)
 Return true if we've sent off our messages.
bool isComplete (void)

Private Attributes

CkVec< sto_tsto
 Stuff to send/receive.
CkVec< msg_t * > msg
 Message buffers for each processor.
int nMsgs
CkVec< MPI_RequestmsgReq
 List of outgoing MPI requests (needs to be a separate array for MPI) Length is always nMsgs.
CkVec< MPI_StatusmsgSts
int tag
MPI_Comm comm
bool isPost
bool isDone

Data Structures

class  msg_t
 This class represents an MPI send or receive operation. More...
class  sto_t
 This class represents one communication operation: a send/sum or send/recv. More...

Detailed Description

IDXL_Comm is the implementation of the user type IDXL_Comm.

It is the representation for an unfinished communication operation. This object's life cycle is: -constructor -repeated add/recv/sum calls -single send call -repeated recv/sum calls -recv(msg) until isDone returns true

Definition at line 37 of file idxl.h.


Member Enumeration Documentation

Enumerator:
send_t 
recv_t 
sum_t 

Definition at line 39 of file idxl.h.


Constructor & Destructor Documentation

IDXL_Comm::IDXL_Comm ( int  tag,
int  context 
)

Definition at line 196 of file idxl.C.

References reset().

Here is the call graph for this function:

IDXL_Comm::~IDXL_Comm (  ) 

Definition at line 213 of file idxl.C.

References msg.


Member Function Documentation

void IDXL_Comm::reset ( int  tag,
int  context 
)

Definition at line 199 of file idxl.C.

References isDone, isPost, msgReq, msgSts, nMsgs, CkVec< T >::resize(), sto, and tag.

Referenced by IDXL_Chunk::addComm(), and IDXL_Comm().

Here is the call graph for this function:

Here is the caller graph for this function:

void IDXL_Comm::send ( const IDXL_Side idx,
const IDXL_Layout dtype,
const void *  src 
)

Definition at line 220 of file idxl.C.

References isPost, send_t, and sto.

Referenced by IDXL_Comm_sendrecv().

Here is the caller graph for this function:

void IDXL_Comm::recv ( const IDXL_Side idx,
const IDXL_Layout dtype,
void *  dest 
)

Definition at line 225 of file idxl.C.

References isPost, recv_t, and sto.

Referenced by IDXL_Comm_sendrecv().

Here is the caller graph for this function:

void IDXL_Comm::sum ( const IDXL_Side idx,
const IDXL_Layout dtype,
void *  srcdest 
)

Definition at line 230 of file idxl.C.

References isPost, sto, and sum_t.

void IDXL_Comm::post ( void   ) 

void IDXL_Comm::wait ( void   ) 

bool IDXL_Comm::isPosted ( void   )  [inline]

Return true if we've sent off our messages.

Definition at line 103 of file idxl.h.

References isPost.

Referenced by wait().

Here is the caller graph for this function:

bool IDXL_Comm::isComplete ( void   )  [inline]

Definition at line 104 of file idxl.h.

References isDone.

Referenced by IDXL_Chunk::addComm(), and IDXL_Chunk::pup().

Here is the caller graph for this function:


Field Documentation

Stuff to send/receive.

Definition at line 68 of file idxl.h.

Referenced by post(), recv(), reset(), send(), and sum().

CkVec<msg_t *> IDXL_Comm::msg [private]

Message buffers for each processor.

Only the first nMsgs elements are used this time, but the remaining elements stay allocated (lazy deallocation). This avoids slow memory allocation at runtime.

Definition at line 73 of file idxl.h.

Referenced by post(), wait(), and ~IDXL_Comm().

int IDXL_Comm::nMsgs [private]

Definition at line 74 of file idxl.h.

Referenced by post(), reset(), and wait().

List of outgoing MPI requests (needs to be a separate array for MPI) Length is always nMsgs.

Definition at line 78 of file idxl.h.

Referenced by post(), reset(), and wait().

Definition at line 79 of file idxl.h.

Referenced by reset(), and wait().

int IDXL_Comm::tag [private]

Definition at line 81 of file idxl.h.

Referenced by post(), and reset().

Definition at line 81 of file idxl.h.

Definition at line 82 of file idxl.h.

Referenced by isPosted(), post(), recv(), reset(), send(), and sum().

Definition at line 83 of file idxl.h.

Referenced by isComplete(), reset(), and wait().


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

Generated on Mon Sep 21 08:25:48 2020 for Charm++ by  doxygen 1.5.5