use lamellar::active_messaging::prelude::*;
#[AmLocalData(Debug,Clone)]
struct HelloWorld {
originial_pe: Arc<Mutex<usize>>, }
#[lamellar::local_am]
impl LamellarAM for HelloWorld {
async fn exec(self) {
println!(
"Hello World on PE {:?} of {:?} using thread {:?}, received from PE {:?}",
lamellar::current_pe,
lamellar::num_pes,
std::thread::current().id(),
self.originial_pe.lock(),
);
}
}
fn main() {
let world = lamellar::LamellarWorldBuilder::new().build();
let my_pe = Arc::new(Mutex::new(world.my_pe()));
world.barrier();
let request = world.exec_am_local(HelloWorld {
originial_pe: my_pe,
});
world.block_on(request);
}