PPL Logo

libs/ck-libs/ampi/ampiimpl.h File Reference

Go to the source code of this file.

Namespaces

namespace  PUP

Data Structures

class  PUP::zdisk
class  PUP::tozDisk
class  PUP::fromzDisk
class  AmmEntry< T >
class  Amm< T, N >
class  AmpiOpHeader
class  WinStruct
class  lockQueueEntry
class  win_obj
class  KeyvalPair
class  InfoStruct
class  ampiTopology
class  final
class  final
class  final
class  KeyvalNode
class  groupStruct
class  ampiCommStruct
class  AmpiRequest
 Represents an MPI request that has been initiated using Isend, Irecv, Ialltoall, Send_init, etc. More...
class  final
class  final
class  final
class  final
class  final
class  final
class  GPUReq
class  final
class  final
class  AmpiRequestList
class  memBuf
class  final
class  AmpiMsgPool
class  AmpiRequestPool
class  AmpiOtherElement
 Our local representation of another AMPI array element. More...
class  final
class  greq_class_desc
class  final

Typedefs

typedef void(* MPI_MigrateFn )(void)
typedef void(* AmmPupMessageFn )(PUP::er &p, void **msg)
typedef CkQ< lockQueueEntry * > LockQueue

Enumerations

enum  AmpiCommType { WORLD = 0, INTRA = 1, INTER = 2 }
enum  AmpiReqType {
  AMPI_INVALID_REQ = 0, AMPI_I_REQ = 1, AMPI_ATA_REQ = 2, AMPI_SEND_REQ = 3,
  AMPI_SSEND_REQ = 4, AMPI_REDN_REQ = 5, AMPI_GATHER_REQ = 6, AMPI_GATHERV_REQ = 7,
  AMPI_G_REQ = 8, AMPI_GPU_REQ
}
enum  AmpiReqSts { AMPI_REQ_PENDING = 0, AMPI_REQ_BLOCKED = 1, AMPI_REQ_COMPLETED = 2 }
enum  AmpiSendType { BLOCKING_SEND = false, I_SEND = true }

Functions

 PUPfunctionpointer (MPI_User_function *) class OpStruct
 PUPmarshall (ampiCommStruct) class mpi_comm_worlds
void outputOp (const vector< int > &vec) noexcept
int getPosOp (int idx, const vector< int > &vec) noexcept
vector< intunionOp (const vector< int > &vec1, const vector< int > &vec2) noexcept
vector< intintersectOp (const vector< int > &vec1, const vector< int > &vec2) noexcept
vector< intdiffOp (const vector< int > &vec1, const vector< int > &vec2) noexcept
inttranslateRanksOp (int n, const vector< int > &vec1, const int *ranks1, const vector< int > &vec2, int *ret) noexcept
int compareVecOp (const vector< int > &vec1, const vector< int > &vec2) noexcept
vector< intinclOp (int n, const int *ranks, const vector< int > &vec) noexcept
vector< intexclOp (int n, const int *ranks, const vector< int > &vec) noexcept
vector< intrangeInclOp (int n, int ranges[][3], const vector< int > &vec, int *flag) noexcept
vector< intrangeExclOp (int n, int ranges[][3], const vector< int > &vec, int *flag) noexcept
void operator| (PUP::er &p, AmpiReqType &r)
template<class T>
void pupIntoBuf (memBuf &b, T &t) noexcept
template<class T>
void pupFromBuf (const void *data, T &t) noexcept
 DefinePooledReqX (Size, sizeof) DefinePooledReqX(Align
 PUPbytes (AmpiOtherElement) class AmpiSeqQ
 PUPmarshall (AmpiSeqQ) inline CProxy_ampi ampiCommStruct
const ampiCommStructuniverseComm2CommStruct (MPI_Comm universeNo) noexcept
ampiParent * getAmpiParent () noexcept
bool isAmpiThread () noexcept
ampi * getAmpiInstance (MPI_Comm comm) noexcept
void checkComm (MPI_Comm comm) noexcept
void checkRequest (MPI_Request req) noexcept
void handle_MPI_BOTTOM (void *&buf, MPI_Datatype type) noexcept
void handle_MPI_BOTTOM (void *&buf1, MPI_Datatype type1, void *&buf2, MPI_Datatype type2) noexcept
int ampiErrhandler (const char *func, int errcode) noexcept

Variables

char * ampi_binary_path
static CkListString msgLogRanks
static int msgLogWrite
static int msgLogRead
static char * msgLogFilename
int AMPI_RDMA_THRESHOLD
int AMPI_SMP_RDMA_THRESHOLD
int _mpi_nworlds
static const char * funclist []


Typedef Documentation

typedef void(* MPI_MigrateFn)(void)

Definition at line 133 of file ampiimpl.h.

typedef void(* AmmPupMessageFn)(PUP::er &p, void **msg)

Definition at line 155 of file ampiimpl.h.

Definition at line 325 of file ampiimpl.h.


Enumeration Type Documentation

Enumerator:
WORLD 
INTRA 
INTER 

Definition at line 679 of file ampiimpl.h.

Enumerator:
AMPI_INVALID_REQ 
AMPI_I_REQ 
AMPI_ATA_REQ 
AMPI_SEND_REQ 
AMPI_SSEND_REQ 
AMPI_REDN_REQ 
AMPI_GATHER_REQ 
AMPI_GATHERV_REQ 
AMPI_G_REQ 
AMPI_GPU_REQ 

Definition at line 1061 of file ampiimpl.h.

enum AmpiReqSts

Enumerator:
AMPI_REQ_PENDING 
AMPI_REQ_BLOCKED 
AMPI_REQ_COMPLETED 

Definition at line 1080 of file ampiimpl.h.

Enumerator:
BLOCKING_SEND 
I_SEND 

Definition at line 1086 of file ampiimpl.h.


Function Documentation

PUPfunctionpointer ( MPI_User_function  ) 

Definition at line 235 of file ampiimpl.h.

References c, free(), init(), and Amm< T, N >::pup().

Here is the call graph for this function:

PUPmarshall ( ampiCommStruct   ) 

Definition at line 875 of file ampiimpl.h.

References p, and Amm< T, N >::pup().

Here is the call graph for this function:

void outputOp ( const vector< int > &  vec  )  [inline]

Definition at line 888 of file ampiimpl.h.

int getPosOp ( int  idx,
const vector< int > &  vec 
) [inline]

Definition at line 900 of file ampiimpl.h.

References idx, and r.

Referenced by compareVecOp(), diffOp(), final::getRank(), intersectOp(), translateRanksOp(), and unionOp().

Here is the caller graph for this function:

vector<int> unionOp ( const vector< int > &  vec1,
const vector< int > &  vec2 
) [inline]

Definition at line 909 of file ampiimpl.h.

References getPosOp().

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

vector<int> intersectOp ( const vector< int > &  vec1,
const vector< int > &  vec2 
) [inline]

Definition at line 919 of file ampiimpl.h.

References getPosOp().

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

vector<int> diffOp ( const vector< int > &  vec1,
const vector< int > &  vec2 
) [inline]

Definition at line 929 of file ampiimpl.h.

References getPosOp().

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

int* translateRanksOp ( int  n,
const vector< int > &  vec1,
const int ranks1,
const vector< int > &  vec2,
int ret 
) [inline]

Definition at line 939 of file ampiimpl.h.

References getPosOp(), n, and ranks1.

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

int compareVecOp ( const vector< int > &  vec1,
const vector< int > &  vec2 
) [inline]

Definition at line 947 of file ampiimpl.h.

References getPosOp().

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

vector<int> inclOp ( int  n,
const int ranks,
const vector< int > &  vec 
) [inline]

Definition at line 964 of file ampiimpl.h.

References n, and ranks.

Referenced by AMPI_API_IMPL().

Here is the caller graph for this function:

vector<int> exclOp ( int  n,
const int ranks,
const vector< int > &  vec 
) [inline]

Definition at line 972 of file ampiimpl.h.

References n, and ranks.

Referenced by AMPI_API_IMPL(), and rangeExclOp().

Here is the caller graph for this function:

vector<int> rangeInclOp ( int  n,
int  ranges[][3],
const vector< int > &  vec,
int flag 
) [inline]

Definition at line 992 of file ampiimpl.h.

References Amm< T, N >::first, flag, n, ranges, and stride.

Referenced by AMPI_API_IMPL().

Here is the caller graph for this function:

vector<int> rangeExclOp ( int  n,
int  ranges[][3],
const vector< int > &  vec,
int flag 
) [inline]

Definition at line 1014 of file ampiimpl.h.

References exclOp(), Amm< T, N >::first, flag, n, ranges, ranks, and stride.

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

void operator| ( PUP::er p,
AmpiReqType r 
) [inline]

Definition at line 1076 of file ampiimpl.h.

References pup_bytes().

Here is the call graph for this function:

template<class T>
void pupIntoBuf ( memBuf b,
T &  t 
) [inline]

Definition at line 1597 of file ampiimpl.h.

References PUP::b, PUP::sizer::size(), and PUP::t.

Referenced by ampiCreateMain().

Here is the call graph for this function:

Here is the caller graph for this function:

template<class T>
void pupFromBuf ( const void *  data,
T &  t 
) [inline]

Definition at line 1604 of file ampiimpl.h.

References data, p, and PUP::t.

Referenced by PUPmarshall().

Here is the caller graph for this function:

DefinePooledReqX ( Size  ,
sizeof   
)

PUPbytes ( AmpiOtherElement   ) 

Insert this message in the table. Returns the number of messages now available for the element. If 0, the message was out-of-order and is buffered. If 1, this message can be immediately processed. If >1, this message can be immediately processed, and you should call "getOutOfOrder" repeatedly.

Is this message in order (return >0) or not (return 0)? Same as put() except we don't call putOutOfOrder() here, so the caller should do that separately

Get an out-of-order message from the table. (in-order messages never go into the table)

Stash an out-of-order message

Increment the outgoing sequence number.

Return the next outgoing sequence number, and increment it.

Definition at line 1842 of file ampiimpl.h.

References AmpiOtherElement::getNumOutOfOrder(), AmpiOtherElement::getSeqIncoming(), AmpiOtherElement::getSeqOutgoing(), AmpiOtherElement::incSeqIncoming(), AmpiOtherElement::incSeqOutgoing(), min(), p, Amm< T, N >::pup(), Amm< T, N >::put(), and srcRank.

Here is the call graph for this function:

PUPmarshall ( AmpiSeqQ   ) 

Definition at line 1907 of file ampiimpl.h.

const ampiCommStruct& universeComm2CommStruct ( MPI_Comm  universeNo  ) 

Definition at line 2615 of file ampi.C.

Referenced by final::comm2CommStruct().

Here is the caller graph for this function:

ampiParent* getAmpiParent (  ) 

bool isAmpiThread (  ) 

Definition at line 3892 of file ampi.C.

Referenced by AMPI_API_IMPL().

Here is the caller graph for this function:

ampi* getAmpiInstance ( MPI_Comm  comm  ) 

void checkComm ( MPI_Comm  comm  )  [inline]

Definition at line 3900 of file ampi.C.

References getAmpiParent().

Here is the call graph for this function:

void checkRequest ( MPI_Request  req  )  [inline]

Definition at line 3906 of file ampi.C.

References AmpiRequestList::checkRequest(), and getReqs().

Referenced by AMPI_API_IMPL(), testRequest(), and testRequestNoFree().

Here is the call graph for this function:

Here is the caller graph for this function:

void handle_MPI_BOTTOM ( void *&  buf,
MPI_Datatype  type 
)

Definition at line 2922 of file ampi.C.

References getDDT(), CkDDT_DataType::getLB(), CkDDT::getType(), CkDDT_DataType::setAbsolute(), and type.

Referenced by AMPI_API_IMPL().

Here is the call graph for this function:

Here is the caller graph for this function:

void handle_MPI_BOTTOM ( void *&  buf1,
MPI_Datatype  type1,
void *&  buf2,
MPI_Datatype  type2 
)

Definition at line 2930 of file ampi.C.

References getDDT(), CkDDT_DataType::getLB(), CkDDT::getType(), and CkDDT_DataType::setAbsolute().

Here is the call graph for this function:

int ampiErrhandler ( const char *  func,
int  errcode 
)

Definition at line 43 of file ampi.C.

Referenced by AMPI_API_IMPL(), checkBuf(), checkCommunicator(), checkCount(), checkData(), checkRank(), checkTag(), and errorCheck().

Here is the caller graph for this function:


Variable Documentation

Definition at line 928 of file ampi.C.

Referenced by main().

Definition at line 47 of file ampiimpl.h.

Referenced by ampiProcInit(), and record_msglog().

int msgLogWrite [static]

Definition at line 48 of file ampiimpl.h.

Referenced by AMPI_API_IMPL(), and ampiProcInit().

int msgLogRead [static]

Definition at line 49 of file ampiimpl.h.

Referenced by AMPI_API_IMPL(), and ampiProcInit().

char* msgLogFilename [static]

Definition at line 50 of file ampiimpl.h.

Referenced by ampiProcInit().

Definition at line 849 of file ampi.C.

Definition at line 850 of file ampi.C.

Definition at line 193 of file ampi.C.

const char* funclist[] [static]

Definition at line 2673 of file ampiimpl.h.

Referenced by ampiNodeInit(), and collideNodeInit().


Generated on Mon Sep 21 08:04:12 2020 for Charm++ by  doxygen 1.5.5