Ticket #2051: mpi_scatter.cpp

File mpi_scatter.cpp, 896 bytes (added by Erik Zeek <zeekec@…>, 14 years ago)

Test program.

Line 
1
2#include <boost/mpi.hpp>
3#include <boost/serialization/valarray.hpp>
4#include <vector>
5#include <iostream>
6
7namespace mpi = boost::mpi;
8
9/**
10 * The main program.
11 * @param argc the number of command line arguments.
12 * @param argv[] the command line arguments.
13 * @retval 0 on success.
14 * @retval non-zero on error.
15 */
16int main(int argc, char* argv[])
17{
18 mpi::environment env(argc, argv);
19 mpi::communicator world;
20
21 std::vector<size_t> buff0(world.size() * 2);
22
23 for (size_t i = 0; i < buff0.size(); ++i) {
24 buff0[i] = i;
25 }
26
27 size_t i[2];
28
29 scatter(world, buff0, i, 2, 0);
30
31 if (world.rank() > 0) {
32 int j;
33 world.recv(world.rank() - 1, 0, j);
34 }
35 std::cout << "I am process " << world.rank() << " of " << world.size() << ". ";
36 std::cout << "I got " << i[0] << " and " << i[1] << std::endl;
37 if (world.rank() < (world.size() - 1)) {
38 world.send(world.rank() + 1, 0, 1);
39 }
40
41 return 0;
42}