#include #include #include #include "boost/mpi.hpp" int main(int argc, char* argv[]) { namespace mpi = boost::mpi; mpi::environment env(argc, argv); mpi::communicator world; std::vector in(10, world.rank()); std::vector out(10, 0); std::vector& sendbuf = argc == 1 ? in : out; mpi::all_reduce(world, &(sendbuf[0]), sendbuf.size(), &(out[0]), std::plus()); int result = 0; for (int i = 0; i < world.size(); ++i) { result += i; } for (int i = 0; i < world.size(); ++i) { world.barrier(); if (i == world.rank()) { std::cout << "This is P" << i; if (std::equal_range(out.begin(), out.end(), result) == std::make_pair(out.begin(), out.end())) { std::cout << " good\n"; } else { std::cout << " bad ->"; std::copy(out.begin(), out.end(), std::ostream_iterator(std::cout, " ")); std:: cout << " instead of " << result << '\n'; } } } return 0; }