MEL Core Library

Located in file: MEL.hpp

Point-2-Point Communication

void MEL::Send(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Bsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Ssend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Rsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Isend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm, Request &rq)
Request MEL::Isend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Ibsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm, Request &rq)
Request MEL::Ibsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Issend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm, Request &rq)
Request MEL::Issend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
void MEL::Irsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm, Request &rq)
Request MEL::Irsend(const void *ptr, const int num, const Datatype &datatype, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Send(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Bsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Ssend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Rsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Isend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm, Request &rq)
template <typename T>
Request MEL::Isend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Ibsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm, Request &rq)
template <typename T>
Request MEL::Ibsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Issend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm, Request &rq)
template <typename T>
Request MEL::Issend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
template <typename T>
void MEL::Irsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm, Request &rq)
template <typename T>
Request MEL::Irsend(const T *ptr, const int num, const int dst, const int tag, const Comm &comm)
Status MEL::Probe(const int source, const int tag, const Comm &comm)
std::pair<bool, Status> MEL::Iprobe(const int source, const int tag, const Comm &comm)
template <typename T>
int MEL::ProbeGetCount(const MPI_Status &status)
int MEL::ProbeGetCount(const Datatype &datatype, const Status &status)
template <typename T>
int MEL::ProbeGetCount(const int src, const int tag, const Comm &comm)
int MEL::ProbeGetCount(const Datatype &datatype, const int src, const int tag, const Comm &comm)
Status MEL::Recv(void *ptr, const int num, const Datatype &datatype, const int src, const int tag, const Comm &comm)
void MEL::Irecv(void *ptr, const int num, const Datatype &datatype, const int src, const int tag, const Comm &comm, Request &rq)
Request MEL::Irecv(void *ptr, const int num, const Datatype &datatype, const int src, const int tag, const Comm &comm)
template <typename T>
Status MEL::Recv(T *ptr, const int num, const int src, const int tag, const Comm &comm)
template <typename T>
void MEL::Irecv(T *ptr, const int num, const int src, const int tag, const Comm &comm, Request &rq)
template <typename T>
Request MEL::Irecv(T *ptr, const int num, const int src, const int tag, const Comm &comm)

Collective Communication

void MEL::Bcast(void *ptr, const int num, const Datatype &datatype, const int root, const Comm &comm)
void MEL::Scatter(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int rnum, const Datatype &rdatatype, const int root, const Comm &comm)
void MEL::Scatterv(void *sptr, const int *snum, const int *displs, const Datatype &sdatatype, void *rptr, const int rnum, const Datatype &rdatatype, const int root, const Comm &comm)
void MEL::Gather(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int rnum, const Datatype &rdatatype, const int root, const Comm &comm)
void MEL::Gatherv(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int *rnum, const int *displs, const Datatype &rdatatype, const int root, const Comm &comm)
void MEL::Allgather(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int rnum, const Datatype &rdatatype, const Comm &comm)
void MEL::Allgatherv(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int *rnum, const int *displ, const Datatype &rdatatype, const Comm &comm)
void MEL::Alltoall(void *sptr, const int snum, const Datatype &sdatatype, void *rptr, const int rnum, const Datatype &rdatatype, const Comm &comm)
void MEL::Alltoallv(void *sptr, const int *snum, const int *sdispl, const Datatype &sdatatype, void *rptr, const int *rnum, const int *rdispl, const Datatype &rdatatype, const Comm &comm)
void MEL::Alltoallw(void *sptr, const int *snum, const int *sdispl, const Datatype *sdatatype, void *rptr, const int *rnum, const int *rdispl, const Datatype *rdatatype, const Comm &comm)
void MEL::Reduce(void *sptr, void *rptr, const int num, const Datatype &datatype, const Op &op, const int root, const Comm &comm)
void MEL::Allreduce(void *sptr, void *rptr, const int num, const Datatype &datatype, const Op &op, const Comm &comm)
template <typename T>
void MEL::Bcast(T *ptr, const int num, const int root, const Comm &comm)

RMA One-Sided Communication

ErrorHandler MEL::WinCreateErrorHandler(ErrorHandlerFunc func)
void MEL::WinSetErrorHandler(const Win &win, const ErrorHandler &errHndl)
void MEL::WinSetErrorHandler(const Win &win, ErrorHandlerFunc func)
ErrorHandler MEL::WinGetErrorHandler(const Win &win)
Win MEL::WinCreate(void *ptr, const Aint size, const int disp_unit, const Comm &comm)
template <typename T>
Win MEL::WinCreate(T *ptr, const Aint size, const Comm &comm)
void MEL::WinFence(const Win &win, const int assert_tag)
void MEL::WinFence(const Win &win)
void MEL::WinLock(const Win &win, const int rank, const int assert_tag, const LockType lock_type)
void MEL::WinLock(const Win &win, const int rank, const LockType lock_type)
void MEL::WinLockExclusive(const Win &win, const int rank, const int assert_tag)
void MEL::WinLockExclusive(const Win &win, const int rank)
void MEL::WinLockShared(const Win &win, const int rank, const int assert_tag)
void MEL::WinLockShared(const Win &win, const int rank)
void MEL::WinUnlock(const Win &win, const int rank)
void MEL::Put(void *origin_ptr, int origin_num, const Datatype &origin_datatype, const Aint target_disp, const int target_num, const Datatype &target_datatype, const int target_rank, const Win &win)
void MEL::Accumulate(void *origin_ptr, int origin_num, const Datatype &origin_datatype, const Aint target_disp, const int target_num, const Datatype &target_datatype, const Op &op, const int target_rank, const Win &win)
void MEL::Get(void *origin_ptr, int origin_num, const Datatype &origin_datatype, const Aint target_disp, const int target_num, const Datatype &target_datatype, const int target_rank, const Win &win)
void MEL::WinFree(Win &win)
void MEL::WinFree(std::vector<Win> &wins)
template <typename T0, typename T1, typename... Args>
void MEL::WinFree(T0 &d0, T1 &d1, Args&&... args)

Communicators & Groups

ErrorHandler MEL::CommCreateErrorHandler(ErrorHandlerFunc func)
void MEL::CommSetErrorHandler(const Comm &comm, const ErrorHandler &errHndl)
void MEL::CommSetErrorHandler(const Comm &comm, ErrorHandlerFunc func)
ErrorHandler MEL::CommGetErrorHandler(const Comm &comm)
int MEL::CommRank(const Comm &comm)
int MEL::CommSize(const Comm &comm)
int MEL::CommRemoteSize(const Comm &comm)
Comm MEL::CommSplit(const Comm &comm, int colour)
Comm MEL::CommDuplicate(const Comm &comm)
Group MEL::CommGetGroup(const Comm &comm)
Comm MEL::CommCreateFromGroup(const Comm &comm, const Group &group)
void MEL::CommFree(Comm &comm)
void MEL::CommFree(std::vector<Comm> &comms)
template <typename T0, typename T1, typename... Args>
void MEL::CommFree(T0 &d0, T1 &d1, Args&&... args)
bool MEL::CommIsNULL(const Comm &comm)
Group MEL::GroupUnion(const Group &lhs, const Group &rhs)
Group MEL::GroupDifference(const Group &lhs, const Group &rhs)
Group MEL::GroupIntersection(const Group &lhs, const Group &rhs)
Group MEL::GroupInclude(const Group &group, const int *ranks, const int num)
Group MEL::GroupInclude(const Group &group, const std::vector<int> &ranks)
Group MEL::GroupExclude(const Group &group, const int *ranks, const int num)
Group MEL::GroupExclude(const Group &group, const std::vector<int> &ranks)
int MEL::GroupCompare(const Group &lhs, const Group &rhs)
bool MEL::GroupIsSimilar(const Group &lhs, const Group &rhs)
bool MEL::GroupIsIdentical(const Group &lhs, const Group &rhs)
bool MEL::GroupIsCongruent(const Group &lhs, const Group &rhs)
bool MEL::GroupIsUnequal(const Group &lhs, const Group &rhs)
bool MEL::GroupIsNULL(const Group &group)
int MEL::GroupRank(const Group &group)
int MEL::GroupSize(const Group &group)
void MEL::GroupFree(Group &group)
void MEL::GroupFree(std::vector<Group> &groups)
template <typename T0, typename T1, typename... Args>
void MEL::GroupFree(T0 &d0, T1 &d1, Args&&... args)

Synchronization

void MEL::Barrier(const Comm &comm)
void MEL::Wait(Request &rq)
bool MEL::Test(Request &rq)
void MEL::Waitall(Request *ptr, int num)
void MEL::Waitall(std::vector<Request> &rqs)
bool MEL::Testall(Request *ptr, int num)
bool MEL::Testall(std::vector<Request> &rqs)
int MEL::Waitany(Request *ptr, int num)
int MEL::Waitany(std::vector<Request> &rqs)
std::pair<bool, int> MEL::Testany(Request *ptr, int num)
std::pair<bool, int> MEL::Testany(std::vector<Request> &rqs)
std::vector<int> MEL::Waitsome(Request *ptr, int num)
std::vector<int> MEL::Waitsome(std::vector<Request> &rqs)
std::vector<int> MEL::Testsome(Request *ptr, int num)
std::vector<int> MEL::Testsome(std::vector<Request> &rqs)

Memory Allocation

template <typename T>
T *MEL::MemAlloc(const Aint size)
template <typename T>
T *MEL::MemAlloc(const Aint size, const T &val)
template <typename T, typename... Args>
T *MEL::MemConstruct(Args&&... args)
template <typename T>
void MEL::MemFree(T *&ptr)
template <typename T0, typename T1, typename... Args>
void MEL::MemFree(T0 &d0, T1 &d1, Args&&... args)
template <typename T>
void MEL::MemDestruct(T *&ptr, const Aint len = 1)

Datatypes

Datatype MEL::TypeCreateContiguous(const Datatype &datatype, const int length)
Datatype MEL::TypeCreateStruct(const int num, const Datatype *datatypes, const int *blockLengths, const Aint *offsets)
Datatype MEL::TypeCreateStruct(const std::vector<TypeStruct_Block> &blocks)
Datatype MEL::TypeCreateSubArray(const Datatype &datatype, const int num, const int *starts, const int *subSizes, const int *sizes)
Datatype MEL::TypeCreateSubArray(const Datatype &datatype, const std::vector<TypeSubArray_Dim> &dims)
Datatype MEL::TypeCreateSubArray1D(const Datatype &datatype, const int x, const int sx, const int dx)
Datatype MEL::TypeCreateSubArray2D(const Datatype &datatype, const int x, const int y, const int sx, const int sy, const int dx, const int dy)
Datatype MEL::TypeCreateSubArray3D(const Datatype &datatype, const int x, const int y, const int z, const int sx, const int sy, const int sz, const int dx, const int dy, const int dz)
Datatype MEL::TypeCreateSubArray4D(const Datatype &datatype, const int x, const int y, const int z, const int w, const int sx, const int sy, const int sz, const int sw, const int dx, const int dy, const int dz, const int dw)
Datatype MEL::TypeCreateIndexed(const Datatype &datatype, const int num, const int *lengths, const int *displs)
Datatype MEL::TypeCreateIndexed(const Datatype &datatype, const std::vector<TypeIndexed_Block> &blocks)
Datatype MEL::TypeCreateHIndexed(const Datatype &datatype, const int num, const int *lengths, const Aint *displs)
Datatype MEL::TypeCreateHIndexed(const Datatype &datatype, const std::vector<TypeHIndexed_Block> &blocks)
Datatype MEL::TypeCreateIndexedBlock(const Datatype &datatype, const int num, const int length, const int *displs)
Datatype MEL::TypeCreateIndexedBlock(const Datatype &datatype, const int length, const std::vector<int> &displs)
Datatype MEL::TypeCreateVector(const Datatype &datatype, const int num, const int length, const int stride)
Datatype MEL::TypeCreateHVector(const Datatype &datatype, const int num, const int length, const Aint stride)
Datatype MEL::TypeDuplicate(const Datatype &datatype)
int MEL::TypeSize(const Datatype &datatype)
std::pair<Aint, Aint> MEL::TypeExtent(const Datatype &datatype)
Aint MEL::TypeGetExtent(const Datatype &datatype)
void MEL::TypeFree(Datatype &datatype)
void MEL::TypeFree(std::vector<Datatype> &datatypes)
template <typename T0, typename T1, typename... Args>
void MEL::TypeFree(T0 &d0, T1 &d1, Args&&... args)

Operations

template <typename T>
T MEL::Functor::MAX(T &a, T &b)
template <typename T>
T MEL::Functor::MIN(T &a, T &b)
template <typename T>
T MEL::Functor::SUM(T &a, T &b)
template <typename T>
T MEL::Functor::PROD(T &a, T &b)
template <typename T>
T MEL::Functor::LAND(T &a, T &b)
template <typename T>
T MEL::Functor::BAND(T &a, T &b)
template <typename T>
T MEL::Functor::LOR(T &a, T &b)
template <typename T>
T MEL::Functor::BOR(T &a, T &b)
template <typename T>
T MEL::Functor::LXOR(T &a, T &b)
template <typename T>
T MEL::Functor::BXOR(T &a, T &b)
template <typename T, T(*)(T &, T &) F>
void MEL::Functor::ARRAY_OP_FUNC(T *in, T *inout, int *len, MPI_Datatype *dptr)
template <typename T, T(*)(T &, T &) F>
Op MEL::OpCreate(bool commute = true)
void MEL::OpFree(Op &op)
void MEL::OpFree(std::vector<Op> &ops)
template <typename T0, typename T1, typename... Args>
void MEL::OpFree(T0 &d0, T1 &d1, Args&&... args)

Topology

void MEL::TopoCartesianMakeDims(const int numProcs, const int numdims, int *dims)
void MEL::TopoCartesianMakeDims(const Comm &comm, const int numdims, int *dims)
std::vector<int> MEL::TopoCartesianMakeDims(const int numProcs, const int numdims)
std::vector<int> MEL::TopoCartesianMakeDims(const Comm &comm, const int numdims)
Comm MEL::TopoCartesianCreate(const Comm &comm, int numdims, const int *dims, const int *periods)
Comm MEL::TopoCartesianCreate(const Comm &comm, const std::vector<TopoCartesian_Dim> &dims)
int MEL::TopoCartesianNumDims(const Comm &comm)
int MEL::TopoCartesianRank(const Comm &comm, const int *coords)
int MEL::TopoCartesianRank(const Comm &comm, const std::vector<int> coords)
void MEL::TopoCartesianCoords(const Comm &comm, const int rank, int numdims, int *coords)
std::vector<int> MEL::TopoCartesianCoords(const Comm &comm, const int rank, int numdims)
std::vector<int> MEL::TopoCartesianCoords(const Comm &comm, const int rank)
std::vector<int> MEL::TopoCartesianCoords(const Comm &comm)
void MEL::TopoCartesianGet(const Comm &comm, int numdims, int *dims, int *periods, int *coords)
std::pair<std::vector<int>, std::vector<TopoCartesian_Dim>> MEL::TopoCartesianGet(const Comm &comm)
void MEL::TopoCartesianShift(const Comm &comm, int direction, int disp, int &rank_prev, int &rank_next)
std::pair<int, int> MEL::TopoCartesianShift(const Comm &comm, int direction, int disp)
CartesianStencil2D5P MEL::TopoCartesianStencil2D5P(const Comm &comm)
CartesianStencil2D9P MEL::TopoCartesianStencil2D9P(const Comm &comm)

File-IO

ErrorHandler MEL::FileCreateErrorHandler(ErrorHandlerFunc func)
void MEL::FileSetErrorHandler(const File &file, const ErrorHandler &errHndl)
void MEL::FileSetErrorHandler(const File &file, ErrorHandlerFunc func)
ErrorHandler MEL::FileGetErrorHandler(const File &file)
FileMode MEL::FileGetMode(const File &file)
bool MEL::FileIsAtomic(const File &file)
void MEL::FileSetAtomicity(const File &file, const bool atom)
Offset MEL::FileGetByteOffset(const File &file, const Offset offset)
Group MEL::FileGetGroup(const File &file)
Info MEL::FileGetInfo(const File &file)
void MEL::FileSetInfo(const File &file, const Info &info)
Offset MEL::FileGetPosition(const File &file)
Offset MEL::FileGetPositionShared(const File &file)
Offset MEL::FileGetSize(const File &file)
void MEL::FileSetSize(const File &file, const Offset size)
Aint MEL::FileGetTypeExtent(const File &file, const Datatype &datatype)
File MEL::FileOpen(const Comm &comm, const std::string &path, const FileMode amode)
File MEL::FileOpenIndividual(const std::string &path, const FileMode amode)
void MEL::FileDelete(const std::string &path)
void MEL::FileClose(File &file)
void MEL::FilePreallocate(const File &file, const Offset fileSize)
void MEL::FileSeek(const File &file, const Offset offset, const SeekMode seekMode = MEL::SeekMode::SET)
void MEL::FileSeekShared(const File &file, const Offset offset, const SeekMode seekMode = MEL::SeekMode::SET)
void MEL::FileSync(const File &file)
void MEL::FileSetView(const File &file, const Offset offset, const Datatype elementaryType, const Datatype fileType, const std::string &datarep = "native")
void MEL::FileSetView(const File &file, const FileView &view)
void MEL::FileGetView(const File &file, Offset &offset, Datatype &elementaryType, Datatype &fileType, std::string &datarep)
FileView MEL::FileGetView(const File &file)
Status MEL::FileWrite(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileWriteAll(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileWriteAt(const File &file, const Offset offset, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileWriteAtAll(const File &file, const Offset offset, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileWriteOrdered(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileWriteShared(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Request MEL::FileIwrite(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Request MEL::FileIwriteAt(const File &file, const Offset offset, const void *sptr, const int snum, const Datatype &datatype)
Request MEL::FileIwriteShared(const File &file, const void *sptr, const int snum, const Datatype &datatype)
Status MEL::FileRead(const File &file, void *rptr, const int rnum, const Datatype &datatype)
Status MEL::FileReadAll(const File &file, void *rptr, const int rnum, const Datatype &datatype)
Status MEL::FileReadAt(const File &file, const Offset offset, void *rptr, const int rnum, const Datatype &datatype)
Status MEL::FileReadAtAll(const File &file, const Offset offset, void *rptr, const int rnum, const Datatype &datatype)
Status MEL::FileReadOrdered(const File &file, void *rptr, const int rnum, const Datatype &datatype)
Status MEL::FileReadShared(const File &file, void *rptr, const int rnum, const Datatype &datatype)
Request MEL::FileIread(const File &file, void *rptr, const int rnum, const Datatype &datatype)
Request MEL::FileIreadAt(const File &file, const Offset offset, void *rptr, const int rnum, const Datatype &datatype)
Request MEL::FileIreadShared(const File &file, void *rptr, const int rnum, const Datatype &datatype)
template <typename T>
Status MEL::FileWrite(const File &file, const T *sptr, const int snum)
template <typename T>
Status MEL::FileWriteAt(const File &file, const Offset offset, const T *sptr, const int snum)
template <typename T>
Status MEL::FileWriteAll(const File &file, const T *sptr, const int snum)
template <typename T>
Status MEL::FileWriteAtAll(const File &file, const Offset offset, const T *sptr, const int snum)
template <typename T>
Status MEL::FileWriteOrdered(const File &file, const T *sptr, const int snum)
template <typename T>
Status MEL::FileWriteShared(const File &file, const T *sptr, const int snum)
template <typename T>
Status MEL::FileRead(const File &file, T *rptr, const int rnum)
template <typename T>
Status MEL::FileReadAt(const File &file, const Offset offset, T *rptr, const int rnum)
template <typename T>
Status MEL::FileReadAll(const File &file, T *rptr, const int rnum)
template <typename T>
Status MEL::FileReadAtAll(const File &file, const Offset offset, T *rptr, const int rnum)
template <typename T>
Status MEL::FileReadOrdered(const File &file, T *rptr, const int rnum)
template <typename T>
Status MEL::FileReadShared(const File &file, T *rptr, const int rnum)
template <typename T>
Request MEL::FileIwrite(const File &file, const T *sptr, const int snum)
template <typename T>
Request MEL::FileIwriteAt(const File &file, const Offset offset, const T *sptr, const int snum)
template <typename T>
Request MEL::FileIwriteShared(const File &file, const T *sptr, const int snum)
template <typename T>
Request MEL::FileIread(const File &file, T *rptr, const int rnum)
template <typename T>
Request MEL::FileIreadAt(const File &file, const Offset offset, T *rptr, const int rnum)
template <typename T>
Request MEL::FileIreadShared(const File &file, T *rptr, const int rnum)

Mutex

Mutex MEL::MutexCreate(const int rank, const int size, const int root, const Comm &comm)
Mutex MEL::MutexCreate(const int root, const Comm &comm)
void MEL::MutexFree(Mutex &mutex)
void MEL::MutexLock(Mutex &mutex)
bool MEL::MutexTest(const Mutex &mutex)
void MEL::MutexUnlock(Mutex &mutex)

Shared Arrays

template <typename T>
Shared<T> MEL::SharedCreate(const int len, const int rank, const int size, const int root, const Comm &comm)
template <typename T>
Shared<T> MEL::SharedCreate(const int len, const int root, const Comm &comm)
template <typename T>
void MEL::SharedFree(Shared<T> &shared)
template <typename T>
bool MEL::SharedTest(const Shared<T> &shared)
template <typename T>
void MEL::SharedLock_noget(Shared<T> &shared)
template <typename T>
void MEL::SharedLock_noget(Shared<T> &shared, const int start, const int end)
template <typename T>
void MEL::SharedLock(Shared<T> &shared)
template <typename T>
void MEL::SharedLock(Shared<T> &shared, const int start, const int end)
template <typename T>
void MEL::SharedUnlock_noput(Shared<T> &shared)
template <typename T>
void MEL::SharedUnlock_noput(Shared<T> &shared, const int start, const int end)
template <typename T>
void MEL::SharedUnlock(Shared<T> &shared)
template <typename T>
void MEL::SharedUnlock(Shared<T> &shared, const int start, const int end)

Error Handling

void MEL::Abort(int ierr, const std::string &message)
void MEL::Exit(const int errcode)
void MEL::Exit(const int errcode, const std::string &msg)
void MEL::DefaultErrorHandler(MPI_Comm *comm, int *ierr, ...)
int MEL::AddErrorClass()
int MEL::AddErrorCode(const int errClass)
int MEL::AddErrorCode()
void MEL::AddErrorString(const int err, const std::string &str)
int MEL::AddErrorString(const std::string &str)
int MEL::GetErrorClass(const int errCode)
std::string MEL::GetErrorString(const int errCode)
void MEL::ErrorHandlerFree(ErrorHandler &errHndl)
void MEL::ErrorHandlerFree(std::vector<ErrorHandler> &errHndls)
template <typename T0, typename T1, typename... Args>
void MEL::ErrorHandlerFree(T0 &d0, T1 &d1, Args&&... args)

Utilities

bool MEL::IsInitialized()
bool MEL::IsFinalized()
void MEL::Init(int &argc, char **&argv)
void MEL::Finalize()
double MEL::Wtime()
double MEL::Wtick()