use lamellar::array::prelude::*;
#[lamellar::main]
fn main() {
let timer = std::time::Instant::now();
let world = lamellar::LamellarWorldBuilder::new().build();
let num_pes = world.num_pes();
let _my_pe = world.my_pe();
let local_length = 1_000_000; let global_length = num_pes * local_length;
let init_time = timer.elapsed();
println!("init_time: {:?}", init_time);
let timer = std::time::Instant::now();
let local_vec = vec![0usize; local_length];
let local_vec_time = timer.elapsed();
println!("local_vec_time: {:?}", local_vec_time);
let timer = std::time::Instant::now();
let array = AtomicArray::<usize>::new(world.team(), global_length, Distribution::Block).block();
let array_time = timer.elapsed();
println!("array_time: {:?}", array_time);
let timer = std::time::Instant::now();
let one_sided_time = timer.elapsed();
println!("one_sided_time: {:?}", one_sided_time);
let timer = std::time::Instant::now();
let _ = array.batch_add(0, &local_vec[0..100]).spawn();
array.wait_all();
array.barrier();
let add_time = timer.elapsed();
println!("add_time: {:?}", add_time);
}