|
HMLP: High-performance Machine Learning Primitives
|
Classes | |
| class | MPIObject |
| struct | NumberIntPair |
Typedefs | |
| typedef MPI_Status | Status |
| typedef MPI_Request | Request |
| typedef MPI_Comm | Comm |
| typedef MPI_Datatype | Datatype |
| typedef MPI_Op | Op |
Functions | |
| template<typename T > | |
| int | SendData (Data< T > &senddata, int dest, mpi::Comm comm) |
| template<typename T > | |
| int | RecvData (Data< T > &recvdata, int source, mpi::Comm comm) |
| template<typename T > | |
| int | AlltoallData (size_t m, vector< Data< T >> &sendvector, vector< Data< T >> &recvvector, mpi::Comm comm) |
| int | Init (int *argc, char ***argv) |
| int | Initialized (int *flag) |
| int | Finalize (void) |
| int | Finalized (int *flag) |
| int | Send (const void *buf, int count, Datatype datatype, int dest, int tag, Comm comm) |
| int | Isend (const void *buf, int count, Datatype datatype, int dest, int tag, Comm comm, Request *request) |
| int | Recv (void *buf, int count, Datatype datatype, int source, int tag, Comm comm, Status *status) |
| int | Irecv (void *buf, int count, Datatype datatype, int source, int tag, Comm comm, Request *request) |
| int | Sendrecv (void *sendbuf, int sendcount, Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, Datatype recvtype, int source, int recvtag, Comm comm, Status *status) |
| int | Get_count (Status *status, Datatype datatype, int *count) |
| int | Comm_size (Comm comm, int *size) |
| int | Comm_rank (Comm comm, int *rank) |
| int | Comm_dup (Comm comm, Comm *newcomm) |
| int | Comm_split (Comm comm, int color, int key, Comm *newcomm) |
| int | Type_contiguous (int count, Datatype oldtype, Datatype *newtype) |
| int | Type_commit (Datatype *datatype) |
| int | Test (Request *request, int *flag, Status *status) |
| int | Bcast (void *buffer, int count, Datatype datatype, int root, Comm comm) |
| int | Barrier (Comm comm) |
| int | Ibarrier (Comm comm, Request *request) |
| int | Reduce (void *sendbuf, void *recvbuf, int count, Datatype datatype, Op op, int root, Comm comm) |
| int | Gather (const void *sendbuf, int sendcount, Datatype sendtype, void *recvbuf, int recvcount, Datatype recvtype, int root, Comm comm) |
| int | Gatherv (void *sendbuf, int sendcount, Datatype sendtype, void *recvbuf, const int *recvcounts, const int *displs, Datatype recvtype, int root, Comm comm) |
| int | Scan (void *sendbuf, void *recvbuf, int count, Datatype datatype, Op op, Comm comm) |
| int | Allreduce (void *sendbuf, void *recvbuf, int count, Datatype datatype, Op op, Comm comm) |
| int | Allgather (void *sendbuf, int sendcount, Datatype sendtype, void *recvbuf, int recvcount, Datatype recvtype, Comm comm) |
| int | Allgatherv (void *sendbuf, int sendcount, Datatype sendtype, void *recvbuf, int *recvcounts, int *displs, Datatype recvtype, Comm comm) |
| int | Alltoall (void *sendbuf, int sendcount, Datatype sendtype, void *recvbuf, int recvcount, Datatype recvtype, Comm comm) |
| int | Alltoallv (void *sendbuf, int *sendcounts, int *sdispls, Datatype sendtype, void *recvbuf, int *recvcounts, int *rdispls, Datatype recvtype, Comm comm) |
| int | Init_thread (int *argc, char ***argv, int required, int *provided) |
| int | Probe (int source, int tag, Comm comm, Status *status) |
| int | Iprobe (int source, int tag, Comm comm, int *flag, Status *status) |
| void | PrintProgress (const char *s, mpi::Comm comm) |
| template<typename T > | |
| Datatype | GetMPIDatatype () |
| template<typename TSEND > | |
| int | Send (TSEND *buf, int count, int dest, int tag, Comm comm) |
| template<typename TSEND > | |
| int | Isend (TSEND *buf, int count, int dest, int tag, Comm comm, Request *request) |
| template<typename TRECV > | |
| int | Recv (TRECV *buf, int count, int source, int tag, Comm comm, Status *status) |
| template<typename T > | |
| int | Bcast (T *buffer, int count, int root, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Sendrecv (TSEND *sendbuf, int sendcount, int dest, int sendtag, TRECV *recvbuf, int recvcount, int source, int recvtag, Comm comm, Status *status) |
| template<typename T > | |
| int | Reduce (T *sendbuf, T *recvbuf, int count, Op op, int root, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Gather (const TSEND *sendbuf, int sendcount, TRECV *recvbuf, int recvcount, int root, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Gatherv (TSEND *sendbuf, int sendcount, TRECV *recvbuf, const int *recvcounts, const int *displs, int root, Comm comm) |
| template<typename T > | |
| int | Allreduce (T *sendbuf, T *recvbuf, int count, Op op, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Allgather (TSEND *sendbuf, int sendcount, TRECV *recvbuf, int recvcount, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Allgatherv (TSEND *sendbuf, int sendcount, TRECV *recvbuf, int *recvcounts, int *displs, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Alltoall (TSEND *sendbuf, int sendcount, TRECV *recvbuf, int recvcount, Comm comm) |
| template<typename TSEND , typename TRECV > | |
| int | Alltoallv (TSEND *sendbuf, int *sendcounts, int *sdispls, TRECV *recvbuf, int *recvcounts, int *rdispls, Comm comm) |
| template<class T , class Allocator = std::allocator<T>> | |
| int | SendVector (std::vector< T, Allocator > &bufvector, int dest, int tag, Comm comm) |
| This is a short hand for sending a vector, which involves two MPI_Send() calls. More... | |
| template<class T , class Allocator = std::allocator<T>> | |
| int | RecvVector (std::vector< T, Allocator > &bufvector, int source, int tag, Comm comm, Status *status) |
| This is a short hand for receving a vector, which involves two MPI_Recv() calls. More... | |
| template<class T , class Allocator = std::allocator<T>> | |
| int | ExchangeVector (vector< T, Allocator > &sendvector, int dest, int sendtag, vector< T, Allocator > &recvvector, int source, int recvtag, Comm comm, Status *status) |
| template<typename T > | |
| int | GatherVector (vector< T > &sendvector, vector< T > &recvvector, int root, Comm comm) |
| template<class T , class Allocator = std::allocator<T>> | |
| int | AlltoallVector (const vector< vector< T, Allocator >> &sendvector, vector< vector< T, Allocator >> &recvvector, Comm comm) |
MPI compatable interface
| int hmlp::mpi::Allgather | ( | TSEND * | sendbuf, |
| int | sendcount, | ||
| TRECV * | recvbuf, | ||
| int | recvcount, | ||
| Comm | comm | ||
| ) |
end Allreduce()
| int hmlp::mpi::Allgatherv | ( | TSEND * | sendbuf, |
| int | sendcount, | ||
| TRECV * | recvbuf, | ||
| int * | recvcounts, | ||
| int * | displs, | ||
| Comm | comm | ||
| ) |
end Allgather()
| int hmlp::mpi::Allreduce | ( | T * | sendbuf, |
| T * | recvbuf, | ||
| int | count, | ||
| Op | op, | ||
| Comm | comm | ||
| ) |
end Gatherv()
| int hmlp::mpi::Alltoall | ( | TSEND * | sendbuf, |
| int | sendcount, | ||
| TRECV * | recvbuf, | ||
| int | recvcount, | ||
| Comm | comm | ||
| ) |
end Allgatherv()
| int hmlp::mpi::AlltoallData | ( | size_t | m, |
| vector< Data< T >> & | sendvector, | ||
| vector< Data< T >> & | recvvector, | ||
| mpi::Comm | comm | ||
| ) |
end RecvData() This interface supports hmlp::Data. [ m, n ] will be set after the routine.
determine the concatenated dimension
all data need to have the same m
Exchange sendcount.
Compute total receiving count.
Resize receving buffer.
| int hmlp::mpi::Alltoallv | ( | TSEND * | sendbuf, |
| int * | sendcounts, | ||
| int * | sdispls, | ||
| TRECV * | recvbuf, | ||
| int * | recvcounts, | ||
| int * | rdispls, | ||
| Comm | comm | ||
| ) |
end Alltoall()
| int hmlp::mpi::AlltoallVector | ( | const vector< vector< T, Allocator >> & | sendvector, |
| vector< vector< T, Allocator >> & | recvvector, | ||
| Comm | comm | ||
| ) |
| int hmlp::mpi::Bcast | ( | T * | buffer, |
| int | count, | ||
| int | root, | ||
| Comm | comm | ||
| ) |
end Recv()
| int hmlp::mpi::Comm_rank | ( | Comm | comm, |
| int * | rank | ||
| ) |
only one process with rank 0
| int hmlp::mpi::Comm_size | ( | Comm | comm, |
| int * | size | ||
| ) |
only one process with rank 0
| int hmlp::mpi::ExchangeVector | ( | vector< T, Allocator > & | sendvector, |
| int | dest, | ||
| int | sendtag, | ||
| vector< T, Allocator > & | recvvector, | ||
| int | source, | ||
| int | recvtag, | ||
| Comm | comm, | ||
| Status * | status | ||
| ) |
| int hmlp::mpi::Gather | ( | const TSEND * | sendbuf, |
| int | sendcount, | ||
| TRECV * | recvbuf, | ||
| int | recvcount, | ||
| int | root, | ||
| Comm | comm | ||
| ) |
end Reduce()
| int hmlp::mpi::GatherVector | ( | vector< T > & | sendvector, |
| vector< T > & | recvvector, | ||
| int | root, | ||
| Comm | comm | ||
| ) |
end ExchangeVector()
Use typeless Gather() for counting.
Accumulate received displs.
Resize recvvector to fit.
Gather vectors.
| int hmlp::mpi::Init | ( | int * | argc, |
| char *** | argv | ||
| ) |
MPI 1.0 functionality
| int hmlp::mpi::Init_thread | ( | int * | argc, |
| char *** | argv, | ||
| int | required, | ||
| int * | provided | ||
| ) |
MPI 2.0 and 3.0 functionality.
MPI 2.0 and 3.0 functionality
Set *provided to required.
Return without any error.
| int hmlp::mpi::Iprobe | ( | int | source, |
| int | tag, | ||
| Comm | comm, | ||
| int * | flag, | ||
| Status * | status | ||
| ) |
end Probe()
| int hmlp::mpi::Isend | ( | TSEND * | buf, |
| int | count, | ||
| int | dest, | ||
| int | tag, | ||
| Comm | comm, | ||
| Request * | request | ||
| ) |
end Send()
| void hmlp::mpi::PrintProgress | ( | const char * | s, |
| mpi::Comm | comm | ||
| ) |
end Iprobe() HMLP MPI extension
HMLP MPI extension
| int hmlp::mpi::Recv | ( | TRECV * | buf, |
| int | count, | ||
| int | source, | ||
| int | tag, | ||
| Comm | comm, | ||
| Status * | status | ||
| ) |
end Isend()
| int hmlp::mpi::RecvData | ( | Data< T > & | recvdata, |
| int | source, | ||
| mpi::Comm | comm | ||
| ) |
end SendData()
| int hmlp::mpi::RecvVector | ( | std::vector< T, Allocator > & | bufvector, |
| int | source, | ||
| int | tag, | ||
| Comm | comm, | ||
| Status * | status | ||
| ) |
This is a short hand for receving a vector, which involves two MPI_Recv() calls.
end SendVector() use default stl allocator
recv the count size first
resize receiving vector
now recv the vector itself
| int hmlp::mpi::Reduce | ( | T * | sendbuf, |
| T * | recvbuf, | ||
| int | count, | ||
| Op | op, | ||
| int | root, | ||
| Comm | comm | ||
| ) |
end Sendrecv()
| int hmlp::mpi::Send | ( | TSEND * | buf, |
| int | count, | ||
| int | dest, | ||
| int | tag, | ||
| Comm | comm | ||
| ) |
end GetMPIDatatype()
| int hmlp::mpi::Sendrecv | ( | TSEND * | sendbuf, |
| int | sendcount, | ||
| int | dest, | ||
| int | sendtag, | ||
| TRECV * | recvbuf, | ||
| int | recvcount, | ||
| int | source, | ||
| int | recvtag, | ||
| Comm | comm, | ||
| Status * | status | ||
| ) |
end Bcast()
| int hmlp::mpi::SendVector | ( | std::vector< T, Allocator > & | bufvector, |
| int | dest, | ||
| int | tag, | ||
| Comm | comm | ||
| ) |
This is a short hand for sending a vector, which involves two MPI_Send() calls.
end Alltoallv() use default stl allocator
send the count size first
now send the vector itself
| int hmlp::mpi::Test | ( | Request * | request, |
| int * | flag, | ||
| Status * | status | ||
| ) |
Set *flag = 1 to prevent blocking.