Environment Baseline
Before you evaluate a GASNet-compatible system, stabilize the environment so performance data stays reproducible.
Hardware checklist
- CPU model, NUMA layout, and SMT configuration.
- NIC model, firmware revision, and PCIe slot topology.
- Switch fabric details (topology, oversubscription, routing).
Software checklist
- Kernel and OFED/driver version.
- Compiler and MPI/PGAS runtime versions.
- Frequency governor and turbo/boost policies.
Baseline workflow
- Lock CPU frequency where possible.
- Pin processes and threads to explicit cores.
- Record NIC firmware and driver settings in the lab notebook.
When you later compare microbenchmarks, this baseline becomes the “control”.
Linux (Ubuntu/Debian)
Install build essentials and common transports:
sudo apt-get update
sudo apt-get install -y build-essential cmake pkg-config \
libibverbs-dev librdmacm-dev libfabric-dev
Then configure GASNet with the transport you intend to test:
./configure --prefix=$HOME/gasnet-install \
--with-ofi --with-ucx
make -j
make install
Linux (RHEL/Rocky/CentOS)
sudo dnf groupinstall -y \"Development Tools\"
sudo dnf install -y rdma-core-devel libfabric-devel
If your cluster provides vendor OFED, record the exact driver version so you can reproduce the environment later.
macOS
brew install gasnet
For reproducible benchmarks, disable App Nap and ensure the system is on AC power to avoid frequency throttling.
HPC clusters (modules)
Most centers deliver GASNet and transports as modules:
module purge
module load gcc/12 openmpi/4.1 ucx/1.15
module load gasnet
Capture the module list in your notes:
module list > gasnet-module-snapshot.txt
Containers
For containerized workflows, prefer Apptainer or Podman with host networking enabled. Bind-mount device files for RDMA:
apptainer exec --bind /dev/infiniband gasnet.sif ./microbenchmarks
Be explicit about CPU pinning inside the container to avoid noisy results.