2 #include "../internal/monolish_internal.hpp"
22 #if defined MONOLISH_USE_MPI
23 assert(MPI_Init(
nullptr,
nullptr) == MPI_SUCCESS);
34 #if defined MONOLISH_USE_MPI
35 assert(MPI_Init(&argc, &argv) == MPI_SUCCESS);
46 #if defined MONOLISH_USE_MPI
48 assert(MPI_Initialized(&flag) == MPI_SUCCESS);
50 return (flag == 0) ? true :
false;
59 #if defined MONOLISH_USE_MPI
60 assert(MPI_Finalize() == MPI_SUCCESS);
71 #if defined MONOLISH_USE_MPI
84 #if defined MONOLISH_USE_MPI
98 #if defined MONOLISH_USE_MPI
106 Send_core(val, dst, tag,
get_comm());
109 Send_core(val, dst, tag,
get_comm());
112 Send_core(val, dst, tag,
get_comm());
115 Send_core(val, dst, tag,
get_comm());
118 void comm::Send(std::vector<double> &vec,
int dst,
int tag)
const {
119 Send_core(vec, dst, tag,
get_comm());
121 void comm::Send(std::vector<float> &vec,
int dst,
int tag)
const {
122 Send_core(vec, dst, tag,
get_comm());
124 void comm::Send(std::vector<int> &vec,
int dst,
int tag)
const {
125 Send_core(vec, dst, tag,
get_comm());
127 void comm::Send(std::vector<size_t> &vec,
int dst,
int tag)
const {
128 Send_core(vec, dst, tag,
get_comm());
132 Send_core(vec, dst, tag,
get_comm());
135 Send_core(vec, dst, tag,
get_comm());
139 return Recv_core(val, src, tag,
get_comm());
142 return Recv_core(val, src, tag,
get_comm());
145 return Recv_core(val, src, tag,
get_comm());
148 return Recv_core(val, src, tag,
get_comm());
152 return Recv_core(vec, src, tag,
get_comm());
155 return Recv_core(vec, src, tag,
get_comm());
158 return Recv_core(vec, src, tag,
get_comm());
161 return Recv_core(vec, src, tag,
get_comm());
165 return Recv_core(vec, src, tag,
get_comm());
168 return Recv_core(vec, src, tag,
get_comm());
184 void comm::Isend(
const std::vector<double> &vec,
int dst,
int tag) {
187 void comm::Isend(
const std::vector<float> &vec,
int dst,
int tag) {
193 void comm::Isend(
const std::vector<size_t> &vec,
int dst,
int tag) {
339 Gather_core(sendvec, recvvec, root,
get_comm());
343 Gather_core(sendvec, recvvec, root,
get_comm());
346 void comm::Gather(std::vector<double> &sendvec, std::vector<double> &recvvec,
348 Gather_core(sendvec, recvvec, root,
get_comm());
350 void comm::Gather(std::vector<float> &sendvec, std::vector<float> &recvvec,
352 Gather_core(sendvec, recvvec, root,
get_comm());
354 void comm::Gather(std::vector<int> &sendvec, std::vector<int> &recvvec,
356 Gather_core(sendvec, recvvec, root,
get_comm());
358 void comm::Gather(std::vector<size_t> &sendvec, std::vector<size_t> &recvvec,
360 Gather_core(sendvec, recvvec, root,
get_comm());
365 Scatter_core(sendvec, recvvec, root,
get_comm());
369 Scatter_core(sendvec, recvvec, root,
get_comm());
372 void comm::Scatter(std::vector<double> &sendvec, std::vector<double> &recvvec,
374 Scatter_core(sendvec, recvvec, root,
get_comm());
376 void comm::Scatter(std::vector<float> &sendvec, std::vector<float> &recvvec,
378 Scatter_core(sendvec, recvvec, root,
get_comm());
382 Scatter_core(sendvec, recvvec, root,
get_comm());
384 void comm::Scatter(std::vector<size_t> &sendvec, std::vector<size_t> &recvvec,
386 Scatter_core(sendvec, recvvec, root,
get_comm());