all_to_all/
all_to_all.rs

1#![deny(warnings)]
2extern crate mpi_fork_fnsp as mpi;
3
4use mpi::traits::*;
5
6fn main() {
7    let universe = mpi::initialize().unwrap();
8    let world = universe.world();
9    let rank = world.rank();
10    let size = world.size();
11
12    let u = vec![rank; size as usize];
13    let mut v = vec![0; size as usize];
14
15    world.all_to_all_into(&u[..], &mut v[..]);
16
17    println!("u: {:?}", u);
18    println!("v: {:?}", v);
19
20    assert!(v.into_iter().zip(0..size).all(|(i, j)| i == j));
21}