OpenSHMEM-rs
Rust bindings for the OpenSHMEM 1.5 (and soon 1.6) communication API.
Quick start:
let ctx = init?;
let my_pe = ctx.my_pe.raw;
let npes = ctx.n_pes;
println!;
Examples
See ./examples/ for example programs.
Building
This library depends on openshmem-sys. Building the sys crate
requires the environment variable SHMEM_INSTALL_DIR to point to
a directory containing your OpenSHMEM installation. Your
SHMEM_INSTALL_DIR should contain a lib/ and a
include/. For example, this is the output of tree on the
SHMEM_INSTALL_DIR for Sandia OpenSHMEM.
We currently test with Sandia OpenSHMEM as the underlying OpenSHMEM implementation.
Developing
If you want rust-analyzer to function correctly, you'll need to pass
SHMEM_INSTALL_DIR to rust-analyzer.
VSCode
Add this to your user settings JSON.
...
"rust-analyzer.server.extraEnv": ,
...
Emacs (lsp-mode)
Add this to your configuration.
(setq lsp-rust-analyzer-cargo-extra-env ["SHMEM_INSTALL_DIR", "~/my-shmem-install-dir"])
Prior Work
Rebecca Hassett and Tony Curtis at Stony Brook University created the RustySHMEM project, which this library draws heavy inspiration from.