File wamr/mpi.cpp

Defines

MPI_FUNC(str)
MPI_FUNC_ARGS(formatStr, ...)
CALL_MPI_WORLD_CATCH_EXCEPTION(retval, call)
CALL_MPI_WORLD_CATCH_EXCEPTION_NO_RETURN(call)
namespace wasm

SYSCALL NUMBERING

Have a look in the sysroot at include/bits/syscall.h to determine the system call numbering.

Functions

uint32_t getFaasmMpiApi(NativeSymbol **nativeSymbols)
static MpiWorld &getExecutingWorld()
static int terminateMpi()
static int32_t MPI_Abort_wrapper(wasm_exec_env_t execEnv, int32_t a, int32_t b)
static int32_t MPI_Allgather_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t *recvType, int32_t *comm)
static int32_t MPI_Allgatherv_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t dspls, int32_t *recvType, int32_t *comm)
static int32_t MPI_Allreduce_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t *recvBuf, int32_t count, int32_t *datatype, int32_t *op, int32_t *comm)
static int32_t MPI_Alltoall_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t *recvType, int32_t *comm)
static int32_t MPI_Alltoallv_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t sdispls, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t rdispls, int32_t *recvType, int32_t *comm)
static int32_t MPI_Barrier_wrapper(wasm_exec_env_t execEnv, int32_t *comm)
static int32_t MPI_Bcast_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t root, int32_t *comm)
static int32_t MPI_Cart_create_wrapper(wasm_exec_env_t execEnv, int32_t *oldCommPtrPtr, int32_t ndims, int32_t dims, int32_t periods, int32_t reorder, int32_t *newCommPtrPtr)
static int32_t MPI_Cart_get_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t maxdims, int32_t *dims, int32_t *periods, int32_t *coords)
static int32_t MPI_Cart_rank_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t *coords, int32_t *rank)
static int32_t MPI_Cart_shift_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t direction, int32_t disp, int32_t *sourceRank, int32_t *destRank)
static int32_t MPI_Comm_dup_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t *newComm)
static int32_t MPI_Comm_free_wrapper(wasm_exec_env_t execEnv, int32_t *comm)
static int32_t MPI_Comm_rank_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t *resPtr)
static int32_t MPI_Comm_size_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t *resPtr)
static int32_t MPI_Comm_split_wrapper(wasm_exec_env_t execEnv, int32_t *comm, int32_t color, int32_t key, int32_t *newComm)
static int32_t MPI_Finalize_wrapper(wasm_exec_env_t execEnv)
static int32_t MPI_Gather_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t *recvType, int32_t root, int32_t *comm)
static int32_t MPI_Get_count_wrapper(wasm_exec_env_t execEnv, int32_t *statusPtr, int32_t *datatype, int32_t *countPtr)
static int32_t MPI_Get_processor_name_wrapper(wasm_exec_env_t execEnv, int32_t *buf, int32_t bufLen)
static int32_t MPI_Get_version_wrapper(wasm_exec_env_t execEnv, int32_t *version, int32_t *subVersion)
static int32_t MPI_Init_wrapper(wasm_exec_env_t execEnv, int32_t a, int32_t b)
static int32_t MPI_Irecv_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t sourceRank, int32_t tag, int32_t *comm, int32_t *requestPtrPtr)
static int32_t MPI_Isend_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t destRank, int32_t tag, int32_t *comm, int32_t *requestPtrPtr)
static int32_t MPI_Op_create_wrapper(wasm_exec_env_t execEnv, int32_t *userFn, int32_t commute, int32_t op)
static int32_t MPI_Op_free_wrapper(wasm_exec_env_t execEnv, int32_t *op)
static int32_t MPI_Probe_wrapper(wasm_exec_env_t execEnv, int32_t source, int32_t tag, int32_t *comm, int32_t *statusPtr)
static int32_t MPI_Recv_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t sourceRank, int32_t tag, int32_t *comm, int32_t *statusPtr)
static int32_t MPI_Reduce_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t *recvBuf, int32_t count, int32_t *datatype, int32_t *op, int32_t root, int32_t *comm)
static int32_t MPI_Reduce_scatter_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t *recvBuf, int32_t recvCount, int32_t *datatype, int32_t *op, int32_t *comm)
static int32_t MPI_Request_free_wrapper(wasm_exec_env_t execEnv, int32_t *requestPtr)
static int32_t MPI_Rsend_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t destRank, int32_t tag, int32_t *comm)
static int32_t MPI_Scan_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t *recvBuf, int32_t count, int32_t *datatype, int32_t *op, int32_t *comm)
static int32_t MPI_Scatter_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t *recvBuf, int32_t recvCount, int32_t *recvType, int32_t root, int32_t *comm)
static int32_t MPI_Send_wrapper(wasm_exec_env_t execEnv, int32_t *buffer, int32_t count, int32_t *datatype, int32_t destRank, int32_t tag, int32_t *comm)
static int32_t MPI_Sendrecv_wrapper(wasm_exec_env_t execEnv, int32_t *sendBuf, int32_t sendCount, int32_t *sendType, int32_t destination, int32_t sendTag, int32_t *recvBuf, int32_t recvCount, int32_t *recvType, int32_t source, int32_t recvTag, int32_t *comm, int32_t *statusPtr)
static int32_t MPI_Type_commit_wrapper(wasm_exec_env_t execEnv, int32_t *datatypePtrPtr)
static int32_t MPI_Type_contiguous_wrapper(wasm_exec_env_t execEnv, int32_t count, int32_t *oldDataTypePtr, int32_t *newDataTypePtr)
static int32_t MPI_Type_free_wrapper(wasm_exec_env_t execEnv, int32_t *datatype)
static int32_t MPI_Type_size_wrapper(wasm_exec_env_t execEnv, int32_t *typePtr, int32_t *res)
static int32_t MPI_Wait_wrapper(wasm_exec_env_t execEnv, int32_t *requestPtrPtr, int32_t status)
static int32_t MPI_Waitall_wrapper(wasm_exec_env_t execEnv, int32_t count, int32_t *requestArray, int32_t *statusArray)
static int32_t MPI_Waitany_wrapper(wasm_exec_env_t execEnv, int32_t count, int32_t *requestArray, int32_t idx, int32_t *status)
static double MPI_Wtime_wrapper()

Variables

static thread_local MpiContext executingContext
static thread_local std::unique_ptr<WamrMpiContextWrapper> ctx = nullptr
static NativeSymbol ns[]
class WamrMpiContextWrapper

Convenience wrapper around the MPI context for use in the syscalls in this file.

Public Functions

inline explicit WamrMpiContextWrapper()
inline void checkMpiComm(int32_t *wasmPtr) const
inline faabric_datatype_t *getFaasmDataType(int32_t *wasmPtr) const
inline void writeFaasmRequestId(int32_t *requestPtrPtr, int32_t requestId) const
inline int32_t getFaasmRequestId(int32_t *requestPtrPtr) const
inline bool isInPlace(int32_t *wasmPtr) const
inline faabric_op_t *getFaasmOp(int32_t *wasmPtr) const
template<typename T>
inline void writeMpiResult(int32_t *resPtr, T result)

Public Members

wasm::WAMRWasmModule *module
MpiWorld &world
int rank