#[cfg(target_arch = "wasm32")]
use jsmpi as mpi;
use mpi::traits::*;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
fn run() {
let universe = mpi::initialize().expect("failed to initialize MPI runtime");
let world = universe.world();
let rank = world.rank();
let size = world.size();
if rank == 0 {
log::info!("[hello_ranks] starting demo with {size} ranks");
}
log::info!("[hello_ranks] rank {rank}/{size} initialized");
log::info!("[hello_ranks] rank {rank} entering barrier");
world.barrier();
log::info!("[hello_ranks] rank {rank} left barrier");
if rank == 0 {
log::info!("[hello_ranks] all ranks reached the barrier, demo completed");
}
}
fn main() {
#[cfg(not(target_arch = "wasm32"))]
env_logger::init();
run();
}
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen(start)]
pub fn start() {
console_log::init().expect("could not initialize logger");
run();
}