#include <ampiimpl.h>
Public Member Functions | |
AmpiRequest () | |
virtual | ~AmpiRequest () |
virtual void | start (MPI_Request reqIdx) noexcept |
Activate this persistent request. | |
virtual int | getTag () const noexcept |
Used by AmmEntry's constructor. | |
virtual int | getSrcRank () const noexcept |
virtual bool | test (MPI_Status *sts=MPI_STATUS_IGNORE) noexcept=0 |
Return true if this request is finished (progress):. | |
virtual int | wait (MPI_Status *sts) noexcept=0 |
Block until this request is finished, returning a valid MPI error code. | |
virtual void | cancel () noexcept |
Mark this request for cancellation. | |
virtual void | setPersistent (bool p) noexcept |
Mark this request persistent. | |
virtual bool | isPersistent () const noexcept |
virtual void | receive (ampi *ptr, AmpiMsg *msg, bool deleteMsg=true) noexcept=0 |
Receive an AmpiMsg. | |
virtual void | receive (ampi *ptr, CkReductionMsg *msg) noexcept=0 |
Receive a CkReductionMsg. | |
virtual void | receiveRdma (ampi *ptr, char *sbuf, int slength, int ssendReq, int srcRank, MPI_Comm scomm) noexcept |
Receive an Rdma message. | |
void | setReqIdx (MPI_Request idx) noexcept |
Set the request's index into AmpiRequestList. | |
MPI_Request | getReqIdx () const noexcept |
void | free (CkDDT *ddt) noexcept |
Free the request's datatype. | |
void | setBlocked (bool b) noexcept |
Set whether the request is currently blocked on. | |
bool | isBlocked () const noexcept |
virtual AmpiReqType | getType () const noexcept=0 |
Returns the type of request: AMPI_I_REQ, AMPI_ATA_REQ, AMPI_SEND_REQ, AMPI_SSEND_REQ, AMPI_REDN_REQ, AMPI_GATHER_REQ, AMPI_GATHERV_REQ, AMPI_G_REQ. | |
virtual bool | isUnmatched () const noexcept=0 |
Returns whether this request will need to be matched. | |
virtual bool | isPooledType () const noexcept |
Returns whether this type is pooled or not: Only AMPI_I_REQ, AMPI_SEND_REQ, and AMPI_SSEND_REQs are pooled. | |
virtual int | getNumReceivedBytes (CkDDT *ddt) const noexcept |
Return the actual number of bytes that were received. | |
virtual void | pup (PUP::er &p) noexcept |
virtual void | print () const noexcept=0 |
Data Fields | |
void * | buf = nullptr |
int | count = 0 |
MPI_Datatype | type = MPI_DATATYPE_NULL |
int | tag = MPI_ANY_TAG |
int | src = MPI_ANY_SOURCE |
MPI_Comm | comm = MPI_COMM_NULL |
MPI_Request | reqIdx = MPI_REQUEST_NULL |
bool | complete = false |
bool | blocked = false |
void * | event = nullptr |
int | eventPe = -1 |
Definition at line 1097 of file ampiimpl.h.
AmpiRequest::AmpiRequest | ( | ) |
virtual AmpiRequest::~AmpiRequest | ( | ) | [virtual] |
virtual void AmpiRequest::start | ( | MPI_Request | reqIdx | ) | [inline, virtual] |
Activate this persistent request.
Only meaningful for persistent Ireq, SendReq, and SsendReq requests.
Reimplemented in final, final, and final.
Definition at line 1121 of file ampiimpl.h.
virtual int AmpiRequest::getTag | ( | ) | const [inline, virtual] |
Used by AmmEntry's constructor.
Reimplemented in final.
Definition at line 1124 of file ampiimpl.h.
References tag.
virtual int AmpiRequest::getSrcRank | ( | ) | const [inline, virtual] |
virtual bool AmpiRequest::test | ( | MPI_Status * | sts = MPI_STATUS_IGNORE |
) | [pure virtual] |
Return true if this request is finished (progress):.
Implemented in final, final, final, final, final, final, GPUReq, final, and final.
Referenced by AMPI_API_IMPL(), testRequest(), and testRequestNoFree().
virtual int AmpiRequest::wait | ( | MPI_Status * | sts | ) | [pure virtual] |
Block until this request is finished, returning a valid MPI error code.
Implemented in final, final, final, final, final, final, GPUReq, final, and final.
Referenced by AMPI_API_IMPL(), testRequest(), and testRequestNoFree().
virtual void AmpiRequest::cancel | ( | ) | [inline, virtual] |
Mark this request for cancellation.
Supported only for IReq requests
Reimplemented in final, final, final, and final.
Definition at line 1136 of file ampiimpl.h.
Referenced by AMPI_API_IMPL().
virtual void AmpiRequest::setPersistent | ( | bool | p | ) | [inline, virtual] |
Mark this request persistent.
Supported only for IReq, SendReq, and SsendReq requests
Reimplemented in final, final, and final.
Definition at line 1140 of file ampiimpl.h.
virtual bool AmpiRequest::isPersistent | ( | ) | const [inline, virtual] |
virtual void AmpiRequest::receive | ( | ampi * | ptr, | |
AmpiMsg * | msg, | |||
bool | deleteMsg = true | |||
) | [pure virtual] |
virtual void AmpiRequest::receive | ( | ampi * | ptr, | |
CkReductionMsg * | msg | |||
) | [pure virtual] |
void AmpiRequest::setReqIdx | ( | MPI_Request | idx | ) | [inline] |
Set the request's index into AmpiRequestList.
Definition at line 1154 of file ampiimpl.h.
References idx.
MPI_Request AmpiRequest::getReqIdx | ( | ) | const [inline] |
Definition at line 1155 of file ampiimpl.h.
void AmpiRequest::free | ( | CkDDT * | ddt | ) | [inline] |
void AmpiRequest::setBlocked | ( | bool | b | ) | [inline] |
Set whether the request is currently blocked on.
Definition at line 1163 of file ampiimpl.h.
References PUP::b.
Referenced by AMPI_API_IMPL().
bool AmpiRequest::isBlocked | ( | ) | const [inline] |
Definition at line 1164 of file ampiimpl.h.
virtual AmpiReqType AmpiRequest::getType | ( | ) | const [pure virtual] |
Returns the type of request: AMPI_I_REQ, AMPI_ATA_REQ, AMPI_SEND_REQ, AMPI_SSEND_REQ, AMPI_REDN_REQ, AMPI_GATHER_REQ, AMPI_GATHERV_REQ, AMPI_G_REQ.
Implemented in final, final, final, final, final, final, final, final, final, GPUReq, final, and final.
Referenced by AMPI_API_IMPL().
virtual bool AmpiRequest::isUnmatched | ( | ) | const [pure virtual] |
virtual bool AmpiRequest::isPooledType | ( | ) | const [inline, virtual] |
Returns whether this type is pooled or not: Only AMPI_I_REQ, AMPI_SEND_REQ, and AMPI_SSEND_REQs are pooled.
Reimplemented in final, final, and final.
Definition at line 1178 of file ampiimpl.h.
Return the actual number of bytes that were received.
Reimplemented in final.
Definition at line 1181 of file ampiimpl.h.
virtual void AmpiRequest::pup | ( | PUP::er & | p | ) | [inline, virtual] |
void AmpiRequest::print | ( | ) | const [pure virtual] |
void* AmpiRequest::buf = nullptr |
MPI_Datatype AmpiRequest::type = MPI_DATATYPE_NULL |
int AmpiRequest::tag = MPI_ANY_TAG |
int AmpiRequest::src = MPI_ANY_SOURCE |
MPI_Comm AmpiRequest::comm = MPI_COMM_NULL |
MPI_Request AmpiRequest::reqIdx = MPI_REQUEST_NULL |
Definition at line 1105 of file ampiimpl.h.
bool AmpiRequest::complete = false |
Definition at line 1106 of file ampiimpl.h.
Referenced by print(), GPUReq::setComplete(), GPUReq::test(), and GPUReq::wait().
bool AmpiRequest::blocked = false |
void* AmpiRequest::event = nullptr |
int AmpiRequest::eventPe = -1 |