This repo holds benchmark tools for MPI/RDMA, using Mellanox ConnectX-5 NICs. The repo is organized as follows:
src: includes all source code:microbenchmark: includes micro-benchmark code for RDMA and MPI
script: includes script wrappers to run programsbuild: default CMake output directory (it'sgit-ignored)docs: includes documentation
MPI transport is currently being developed, which is on feature/mpi_transport branch.
This project is CMake-based, so cmake is required to build it.
I tested all programs on Ubuntu 18.04 machines, with Mallenox OFED v4.4.
To get started, go to script directory and run build.sh -f (subsequent builds can omit the -f flags, see below). This will generate outputs in build directory, following CMake output format.
build.shrunscmakeandmakefor you. Here are the flags:-f: removes everything underbuildfolder and re-generatecmakeoutput. This is needed for the first time.-d: setscmakebuild type to DEBUG. Must be used with-f.-c: runsmake cleanbeforemake.
- MPI is required to build MPI code:
setup-hpcx.shloads the MPI library.- OpenMPI is used by default, and is included with OFED v4.4 (installed at
/usr/mpi/gcc/openmpi-3.1.1rc1). - HPC-X can also be used by changing the flag in the script, but the default OpenMPI is recommended.
- Configuration files:
configfiles underscriptand sub-directories set up environment variables.hosts.configis a plaintext list of hostnames, used for launching parallel ssh and MPI commands.
- Miscellaneous files:
install-tools.shincludes the packages needed.setup-host.shincludes end host setup script for HPC environment.
There are a few scripts to run the program, run the standard Mellanox perftest tool, run the program over parallel ssh, and to plot the result.
ib_all_length.shrunsperftestlatency and bandwidth benchmark programs.run_all_length.shruns RDMA latency/bandwidth benchmark programs.mpi-launch.shlaunches MPI latency/bandwidth benchmark programs.pssh_launch.shlaunches a command over parallel-ssh.pssh_node.shis the default command to run on target machines when invokingpssh_launch.sh.process_result.pyplots both RDMA (Mellanoxperftesttool) and MPI (my tool) logs, and supports latency and throughput.