The Intel® MPI Benchmarks perform a set of MPI performance measurements for point-to-point and global communication operations for a range of message sizes. The generated benchmark data fully characterizes:
- Performance of a cluster system, including node performance, network latency, and throughput
- Efficiency of the MPI implementation used
Key Features
The Intel® MPI Benchmarks package consists of the following components:
- Two components covering MPI-1 functionality:
- IMB-MPI1 - benchmarks for MPI-1 functions
- IMB-P2P – shared memory transport-oriented benchmarks for MPI-1 point-to-point communications
- Two components covering MPI-2 functionality:
- IMB-EXT - one-sided communications benchmarks
- IMB-IO - input/output (I/O) benchmarks
- Two components covering MPI-3 functionality:
- IMB-NBC - non-blocking collectives benchmarks that provide measurements of the computation/communication overlap and of the pure communication time
- IMB-RMA - Remote Memory Access (RMA) benchmarks that use passive target communication to measure one-sided communication
- IMB-MT - eliminates most of the cross-thread synchronization points in the MPI workflow. Available for Intel® MPI Benchmarks 2019 only.
Each component corresponds to a separate executable file. You can run all of the supported benchmarks, or specify a single executable file in the command line to get results for a specific subset of benchmarks.
Read the Intel® MPI Benchmarks User's Guide for more information on all runtime options.
Prerequisites
Memory and Disk Space Requirements
The memory required to run the Intel MPI Benchmarks is determined by the number of active processes with the default settings (standard mode) or the maximum size of the MPI message with user-defined settings (optional mode). Those vary from static values of 80 MB or below to dynamic values of up to 8 MB * # of active processes. The Intel MPI Benchmarks User Guide has full descriptions for the memory requirements for each benchmark.
Software Requirements
To run the Intel® MPI Benchmarks, you need:
- cpp, ANSI C compiler, libstdc++-devel, gmake on Linux* OS or Unix* OS
- Enclosed Microsoft Visual* C++ solutions as the basis for Microsoft Windows* OS
- MPI installation, including a startup mechanism for parallel MPI programs
Launch the Intel MPI Benchmarks
Installing the benchmarks
The benchmarks are available for download at the Intel MPI Benchmarks GitHub repository.
They are also installed as part of:
- Intel® MPI Library
- Intel® Parallel Studio XE Cluster Edition
For more information on the installed files, see:
<install_dir>/imb/<version>/ReadMe_IMB.txt
where,
- <install_dir> is the Intel Parallel Studio XE installation directory, by default C:\Program Files (x86)\IntelSWTools on Windows, and /opt/intel/ on Linux
- <version> is the Intel MPI Benchmarks version
Building the benchmarks
Building the benchmarks on Linux* OS
To build the benchmarks on Linux, do the following:
host$ source <path to Intel Compilers directory>/bin/compilervars.sh intel64
host$ source <path to Intel MPI Library directory>/intel64/bin/mpivars.sh
host$ cd <path to Intel MPI Benchmarks directory>/src
host$ make -f make_ict
Building the benchmarks on Windows OS*
Use the enclosed solution files located in the component-specific subdirectories under the WINDOWS/ directory. Click on the respective .vcproj or .vcxproj project file and use the Microsoft* Visual Studio* menu to run the associated benchmark application.
- Check that the Include, Lib, and Path environment variables are set as follows:
- %I_MPI_ROOT%\intel64\include
- %I_MPI_ROOT%\intel64\lib
- %I_MPI_ROOT%\mpi\intel64\bin
- Open the .vcproj or .vcxproj file for the component you would like to build. From the Visual Studio Project panel:
- Change the Solution Platforms dialog box to x64
- Change the Solution Configurations dialog box to Release
- Check other settings as required, for example:
- General > Project Defaults
- Set Character Set to Use Multi-Byte Character Set
- C/C++ > General
- Set Additional Include Directories to $(I_MPI_ROOT)\intel64\include
- Set Warning Level to Level 1 (/W1)
- C/C++ > Preprocessor
- For the Preprocessor definitions within the Visual Studio projects, add the conditional compilation macros WIN_IMB and _CRT_SECURE_NO_DEPRECATE. Depending on the components you intend to use, add one or more of the following macros: MPI1, EXT, MPIIO, NBC, RMA.
- Linker > Input
- Set Additional Dependencies to $(I_MPI_ROOT)\intel64\lib\impi.lib. Make sure to add quotes.
- General > Project Defaults
- Use F7 or Build > Build Solution to create an executable
Running the benchmarks
To run the Intel® MPI Benchmarks, use the following command-line syntax:
host$ mpirun -np <P> IMB-<component> [arguments]
where
- P is the number of processes. P=1 is recommended for all I/O and message passing benchmarks except the single transfer ones.
- <component> is the component-specific suffix that can take MPI1, EXT, IO, NBC, and RMA values
By default, all benchmarks run on Q active processes defined as follows: Q=[1,] 2, 4, 8, ..., largest 2x.
Links
Intel MPI Benchmarks GitHub repository - download the benchmarks
Intel® MPI Benchmarks User Guide - more information on runtime options
Creating Custom Benchmarks for Intel® MPI Benchmarks 2019
The Complete Open-Source and Business Software Platform
Visit the Intel MPI Benchmarks GitHub repository to download the benchmarks.