7void print(
const A &arr,
const mpi::communicator &comm) {
8 std::cout <<
"Rank " << comm.rank() <<
": " << arr << std::endl;
11int main(
int argc,
char *argv[]) {
13 mpi::environment env(argc, argv);
14 mpi::communicator comm;
19 if (comm.rank() == root) {
20 A.resize(2, comm.size());
21 for (
int i = 0;
auto &x : A) x = i++;
27 mpi::broadcast(A, comm);
33 if (comm.rank() == root) {
34 A(nda::range::all, root) = 1;
40 auto A_v = A(nda::range::all, comm.rank());
41 mpi::broadcast(A_v, comm);
52 auto B_g = mpi::gather(B, comm, root);
57 auto B_g_all = mpi::all_gather(B, comm);
64 auto B_rg = mpi::gather(B_r, comm, root);
85 auto C_s = mpi::scatter(C, comm, 2);
90 auto D = mpi::reduce(C, comm, root);
95 mpi::all_reduce_in_place(C, comm);
101 mpi::scatter_into(B_rg, C_into, comm, root);
auto transpose(A &&a)
Transpose the memory layout of an nda::MemoryArray or an nda::expr_call.
auto reshape(A &&a, std::array< Int, R > const &new_shape)
Reshape an nda::basic_array or nda::basic_array_view.
basic_array< ValueType, Rank, Layout, 'A', ContainerPolicy > array
Alias template of an nda::basic_array with an 'A' algebra.
Includes all MPI relevant headers.
Includes all relevant headers for the core nda library.