Installation
Prerequisites
Rust toolchain
obikmer requires Rust 1.85 or later (edition 2024). Install or update via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update stable
C build environment (required for hwloc)
obikmer embeds hwloc (Hardware Locality) for NUMA-aware thread placement on multi-socket machines. hwloc is built from source at compile time, which requires a standard C build environment.
Linux (Debian/Ubuntu)
apt install build-essential automake libtool autoconf pkg-config
Linux (RHEL/Rocky/AlmaLinux)
dnf install gcc make automake libtool autoconf pkgconfig
HPC clusters
Most HPC clusters provide these tools via the module system:
module load gcc automake libtool autoconf
If in doubt, check that autoreconf --version and libtool --version return successfully.
macOS
brew install automake libtool autoconf pkg-config
Building
git clone <repository-url>
cd obikmer/src
cargo build --release
The compiled binary is at target/release/obikmer.
Building on HPC clusters (network filesystems)
HPC home directories are typically on a network filesystem (Lustre, NFS) optimized for large sequential reads, not for the many small file operations Cargo generates during compilation. Building directly on such a filesystem can be extremely slow.
Redirect the build directory to a local scratch disk:
CARGO_TARGET_DIR=/scratch/$USER/cargo-target cargo build --release
Adapt the path to the scratch space available on your cluster (/var/tmp, /tmp, /scratch/local, etc.). Once built, copy the binary to a permanent location:
cp /scratch/$USER/cargo-target/release/obikmer ~/bin/
NUMA support
NUMA-aware thread placement is active automatically on multi-socket Linux machines, detected at runtime via hwloc. No build flag is required — it falls back gracefully to a single-pool strategy on:
- macOS (Apple Silicon, unified memory)
- single-socket Linux machines
- any system where hwloc reports only one NUMA node
Verifying the installation
obikmer --help