File MpiWorld.h
-
namespace faabric
-
namespace mpi
Typedefs
-
typedef faabric::util::FixedCapacityQueue<MpiMessage> InMemoryMpiQueue
-
class MpiWorld
Public Functions
-
MpiWorld()
-
void create(faabric::Message &call, int newId, int newSize)
-
void broadcastHostsToRanks()
-
void initialiseFromMsg(faabric::Message &msg)
-
void initialiseRankFromMsg(faabric::Message &msg)
-
std::string getHostForRank(int rank)
-
std::string getUser()
-
std::string getFunction()
-
int getId() const
-
int getSize() const
-
bool destroy()
-
void getCartesianRank(int rank, int maxDims, const int *dims, int *periods, int *coords)
-
void getRankFromCoords(int *rank, int *coords)
-
void shiftCartesianCoords(int rank, int direction, int disp, int *source, int *destination)
-
void send(int sendRank, int recvRank, const uint8_t *buffer, faabric_datatype_t *dataType, int count, MpiMessageType messageType = MpiMessageType::NORMAL)
-
int isend(int sendRank, int recvRank, const uint8_t *buffer, faabric_datatype_t *dataType, int count, MpiMessageType messageType = MpiMessageType::NORMAL)
-
void broadcast(int rootRank, int thisRank, uint8_t *buffer, faabric_datatype_t *dataType, int count, MpiMessageType messageType = MpiMessageType::NORMAL)
-
void recv(int sendRank, int recvRank, uint8_t *buffer, faabric_datatype_t *dataType, int count, MPI_Status *status, MpiMessageType messageType = MpiMessageType::NORMAL)
-
int irecv(int sendRank, int recvRank, uint8_t *buffer, faabric_datatype_t *dataType, int count, MpiMessageType messageType = MpiMessageType::NORMAL)
-
void awaitAsyncRequest(int requestId)
-
void sendRecv(uint8_t *sendBuffer, int sendcount, faabric_datatype_t *sendDataType, int sendRank, uint8_t *recvBuffer, int recvCount, faabric_datatype_t *recvDataType, int recvRank, int myRank, MPI_Status *status)
-
void scatter(int sendRank, int recvRank, const uint8_t *sendBuffer, faabric_datatype_t *sendType, int sendCount, uint8_t *recvBuffer, faabric_datatype_t *recvType, int recvCount)
-
void gather(int sendRank, int recvRank, const uint8_t *sendBuffer, faabric_datatype_t *sendType, int sendCount, uint8_t *recvBuffer, faabric_datatype_t *recvType, int recvCount)
-
void allGather(int rank, const uint8_t *sendBuffer, faabric_datatype_t *sendType, int sendCount, uint8_t *recvBuffer, faabric_datatype_t *recvType, int recvCount)
-
void reduce(int sendRank, int recvRank, uint8_t *sendBuffer, uint8_t *recvBuffer, faabric_datatype_t *datatype, int count, faabric_op_t *operation)
-
void allReduce(int rank, uint8_t *sendBuffer, uint8_t *recvBuffer, faabric_datatype_t *datatype, int count, faabric_op_t *operation)
-
void op_reduce(faabric_op_t *operation, faabric_datatype_t *datatype, int count, uint8_t *inBuffer, uint8_t *resultBuffer)
-
void scan(int rank, uint8_t *sendBuffer, uint8_t *recvBuffer, faabric_datatype_t *datatype, int count, faabric_op_t *operation)
-
void allToAll(int rank, uint8_t *sendBuffer, faabric_datatype_t *sendType, int sendCount, uint8_t *recvBuffer, faabric_datatype_t *recvType, int recvCount)
-
void probe(int sendRank, int recvRank, MPI_Status *status)
-
void barrier(int thisRank)
-
std::shared_ptr<InMemoryMpiQueue> getLocalQueue(int sendRank, int recvRank)
-
long getLocalQueueSize(int sendRank, int recvRank)
-
void overrideHost(const std::string &newHost)
-
double getWTime()
-
void prepareMigration(int newGroupId, int thisRank, bool thisRankMustMigrate)
Private Functions
-
int getIndexForRanks(int sendRank, int recvRank) const
-
void initLocalRemoteLeaders()
-
void initLocalQueues()
-
void initSendRecvSockets()
-
int getPortForRank(int rank)
-
void sendRemoteMpiMessage(int sendRank, int recvRank, MpiMessage &msg)
-
MpiMessage recvRemoteMpiMessage(int sendRank, int recvRank)
-
int getUnackedMessageBuffer(int sendRank, int recvRank)
-
MpiMessage recvBatchReturnLast(int sendRank, int recvRank, int requestId = 0)
-
void checkRanksRange(int sendRank, int recvRank)
-
MpiMessage internalRecv(int sendRank, int recvRank, bool isLocal)
-
void doRecv(const MpiMessage &msg, uint8_t *buffer, faabric_datatype_t *dataType, int count, MPI_Status *status, MpiMessageType messageType = MpiMessageType::NORMAL)
Private Members
-
int id = -1
-
int size = -1
-
std::string thisHost
-
std::atomic<int> evictionLatch = 0
-
std::atomic_flag isDestroyed = false
-
std::string user
-
std::string function
-
std::vector<int> cartProcsPerDim
-
std::map<std::string, std::set<int>> ranksForHost
-
std::vector<std::string> hostForRank
-
std::vector<int> portForRank
-
int localLeader = -1
-
std::vector<std::shared_ptr<InMemoryMpiQueue>> localQueues
-
faabric::transport::PointToPointBroker &broker
-
MpiWorld()
-
typedef faabric::util::FixedCapacityQueue<MpiMessage> InMemoryMpiQueue
-
namespace mpi