45 using ReturnType = void;
53 virtual ReturnType broadcast(
void* buffer,
int count, MPI_Datatype datatype,
int root, MPI_Comm comm) = 0;
55 virtual ReturnType gather(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
56 int recvcount, MPI_Datatype recvtype,
int root, MPI_Comm comm) = 0;
58 virtual ReturnType gatherVariable(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
59 const int* recvcounts,
const int* displs, MPI_Datatype recvtype,
int root,
62 virtual ReturnType allGather(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
63 int recvcount, MPI_Datatype recvtype, MPI_Comm comm) = 0;
65 virtual ReturnType allGatherVariable(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
66 const int* recvcounts,
const int* displs, MPI_Datatype recvtype, MPI_Comm comm) = 0;
68 virtual ReturnType scatterVariable(
const void* sendbuf,
const int* sendcounts,
const int* displs,
69 MPI_Datatype sendtype,
void* recvbuf,
int recvcount, MPI_Datatype recvtype,
70 int root, MPI_Comm comm) = 0;
72 virtual ReturnType allToAll(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
void* recvbuf,
73 int recvcount, MPI_Datatype recvtype, MPI_Comm comm) = 0;
75 virtual ReturnType allToAllVariable(
const void* sendbuf,
const int* sendcounts,
const int* sdispls,
76 MPI_Datatype sendtype,
void* recvbuf,
const int* recvcounts,
77 const int* rdispls, MPI_Datatype recvtype, MPI_Comm comm) = 0;
79 virtual ReturnType barrier(MPI_Comm comm) = 0;
81 virtual ReturnType reduce(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype,
82 MPI_Op op,
int root, MPI_Comm comm) = 0;
84 virtual ReturnType allReduce(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype,
85 MPI_Op op, MPI_Comm comm) = 0;
87 virtual ReturnType scan(
const void* sendbuf,
void* recvbuf,
int count, MPI_Datatype datatype, MPI_Op op,
90 virtual ReturnType sendRecv(
const void* sendbuf,
int sendcount, MPI_Datatype sendtype,
int dest,
91 int sendtag,
void* recvbuf,
int recvcount, MPI_Datatype recvtype,
92 int source,
int recvtag, MPI_Comm comm, MPI_Status* status) = 0;
94 virtual ReturnType iSend(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag,
95 MPI_Comm comm, MPI_Request* request) = 0;
97 virtual ReturnType send(
const void* buf,
int count, MPI_Datatype datatype,
int dest,
int tag, MPI_Comm comm) = 0;
99 virtual ReturnType iRecv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag,
100 MPI_Comm comm, MPI_Request* request) = 0;
102 virtual ReturnType recv(
void* buf,
int count, MPI_Datatype datatype,
int source,
int tag, MPI_Comm comm,
103 MPI_Status* status) = 0;
105 virtual ReturnType test(MPI_Request* request,
int* flag, MPI_Status* status) = 0;
107 virtual ReturnType probe(
int source,
int tag, MPI_Comm comm, MPI_Status* status) = 0;
109 virtual ReturnType getCount(
const MPI_Status* status, MPI_Datatype datatype,
int* count) = 0;
111 virtual ReturnType wait(MPI_Request* request, MPI_Status* status) = 0;
113 virtual ReturnType waitAll(
int count, MPI_Request* array_of_requests, MPI_Status* array_of_statuses) = 0;
115 virtual ReturnType testSome(
int incount, MPI_Request* array_of_requests,
int* outcount,
116 int* array_of_indices, MPI_Status* array_of_statuses) = 0;
118 virtual ReturnType waitSome(
int incount, MPI_Request* array_of_requests,
int* outcount,
119 int* array_of_indices, MPI_Status* array_of_statuses) = 0;