29
29
using namespace rheolef;
30
30
int main(int argc, char** argv) {
31
31
mpi::environment rheolef(argc, argv);
32
mpi::communicator world;
33
if (world.rank() == 0) {
32
mpi::communicator comm;
33
check_macro (comm.size() == 2, "expect np=2");
35
if (comm.rank() == 0) {
34
36
mpi::request reqs[2];
39
reqs[0] = world.isend(1, 0, out_msg);
40
reqs[1] = world.irecv(1, 1, msg);
40
reqs[0] = comm.isend(1, 0, out_msg);
41
reqs[1] = comm.irecv(1, 1, msg);
41
42
mpi::wait_all(reqs, reqs + 2);
42
std::cout << "proc 0 : " << msg << std::endl;
44
44
mpi::request reqs[2];
49
reqs[0] = world.isend(0, 1, out_msg);
50
reqs[1] = world.irecv(0, 0, msg);
48
reqs[0] = comm.isend(0, 1, out_msg);
49
reqs[1] = comm.irecv(0, 0, msg);
51
50
mpi::wait_all(reqs, reqs + 2);
52
std::cout << "proc 1 : " << msg << std::endl;
52
std::string filename = "mpi_boost_nonblocking_idxset_tst-" + itos(comm.rank());
53
std::ofstream out (filename.c_str());
54
out << "proc " << comm.rank() << ": " << msg << std::endl;
56
56
#endif // _RHEOLEF_HAVE_MPI