Introducing Intel® MPI Benchmarks

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:

  • IMB-MPI1 - benchmarks for MPI-1 functions
  • 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, 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.

  1. 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
    The %I_MPI_ROOT% environment variable is set to the Intel MPI Library installation directory. The default installation directory is C:\Program Files (x86)\IntelSWTools\mpi\<version>, where <version> is the product version.
  2. Open the .vcproj or .vcxproj file for the component you would like to build. From the Visual Studio Project panel:
    1. Change the Solution Platforms dialog box to x64
    2. Change the Solution Configurations dialog box to Release
    3. 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.
  3. 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 2018 - more information on runtime options

Creating Custom Benchmarks for Intel® MPI Benchmarks 2019

Visit the Intel MPI Benchmarks GitHub repository to download the benchmarks.

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.