2.7. MPI: OMB

https://mvapich.cse.ohio-state.edu/download/mvapich/osu-micro-benchmarks-7.2.tar.gz

2.7.1. Purpose

The OSU Microbenchmarks (OMB) are widely used to measure and evaluate the performance of MPI operations for point-to-point, multi-pair, collective, and one-sided communications.

2.7.2. Characteristics

2.7.2.1. Problem

The OSU benchmarks are a suite of microbenchmarks designed to measure network characteristics on HPC systems.

2.7.3. Source code modifications

Please see Run Rules Synopsis for general guidance on allowed modifications.

2.7.4. Building

On GPU enabled systems add these flags to the following configure lines:

--enable-cuda
--with-cuda-include=/path/to/cuda/include
--with-cuda-libpath=/path/to/cuda/lib

Build and install the benchmarks.

./configure --prefix=$INSTALL_DIR
make -j
make -j install

Before configuring make sure your CXX and CC environment variables are set to an MPI compiler or wrapper. On most systems this will look like:

export CC=mpicc CXX=mpicxx

2.7.4.1. Special Considerations for Cray Systems

HPE-Cray systems may use custom wrappers:

export CC=cc CXX=CC

If using mpicc and mpicxx, note that you may need to add -lmpi_gtl_hsa or -lmpi_gtl_cuda at link time in order to get GPU-Aware Cray MPICH. If building the OSU benchmarks with Spack (recommended), then there is a convenience wrapper package located in the Phloem repository.

2.7.5. Running

Required: Project the output of osu_init for the total number of Host CPU Cores in your SU. You may use a low-noise configuration, but you must document that configuration and use it for ALL BENCHMARKS. For example, if you have 96 physical cores, but you have sequestered 12 of them for noisy system processes, then you would run with 84 processes per node:

srun -N 384 -n 32256 osu_init

Not Required: You are encouraged to use the OSU micro-benchmarks to compare against the output of Phloem as follows:

Latency and Bidirectional Bandwidth:

srun -N 1 -n 2 osu_latency
srun -N 1 -n 2 osu_latency D D
srun -N 1 -n 2 osu_bibw
srun -N 1 -n 2 osu_latency D D
srun -N 2 -n 2 -w host1,host2 osu_latency
srun -N 2 -n 2 -w host1,host2 osu_latency D D
srun -N 2 -n 2 -w host1,host2 osu_bibw
srun -N 2 -n 2 -w host1,host2 osu_latency D D
srun -N 2 -n 2 -w host1,host9001 osu_latency
srun -N 2 -n 2 -w host1,host9001 osu_latency D D
srun -N 2 -n 2 -w host1,host9001 osu_bibw
srun -N 2 -n 2 -w host1,host9001 osu_latency D D

Barrier

srun -N 384 -n 32256 osu_barrier
srun -N 384 -n 1536 osu_barrier -d openacc

Broadcast

srun -N 384 -n 32256 osu_bcast
srun -N 384 -n 1536 osu_bcast -d openacc

Allreduce

srun -N 384 -n 32256 osu_allreduce
srun -N 384 -n 1536 osu_allreduce -d openacc

Reduce

srun -N 384 -n 32256 osu_reduce
srun -N 384 -n 1536 osu_reduce -d openacc

2.7.6. Scaling on El Capitan

2.7.7. References