1#![deny(warnings)]
2extern crate mpi_fork_fnsp as mpi;
3
4use mpi::request::WaitGuard;
5use mpi::traits::*;
6
7const BUFFER_SIZE: usize = 10 * 1024 * 1024;
8
9fn main() {
10 let mut universe = mpi::initialize().unwrap();
11 universe.set_buffer_size(BUFFER_SIZE);
13 assert_eq!(universe.buffer_size(), BUFFER_SIZE);
15 universe.detach_buffer();
17 universe.set_buffer_size(BUFFER_SIZE);
19
20 let world = universe.world();
21
22 let x = vec![std::f32::consts::PI; 1024];
23 let mut y = vec![0.0; 1024];
24 mpi::request::scope(|scope| {
25 let _rreq = WaitGuard::from(
26 world
27 .any_process()
28 .immediate_receive_into(scope, &mut y[..]),
29 );
30 world.this_process().buffered_send(&x[..]);
31 });
32 assert_eq!(x, y);
33}