IMB-MPI-2 Benchmark Classification#

Intel(R) MPI Benchmarks introduces three classes of benchmarks:

  • Single Transfer

  • Parallel Transfer

  • Collective

Each class interprets results in a different way.

Note

The following benchmarks do not belong to any class:

  • Window - measures overhead of one-sided communications for the MPI_Win_create / MPI_Win_free functions

  • Open_close - measures overhead of input/output operations for the MPI_File_open / MPI_File_close functions

Single Transfer Benchmarks#

This class contains benchmarks of functions that operate on a single data element transferred between one source and one target. For MPI-2 benchmarks, the source of the data transfer can be an MPI process or, in the case of Read benchmarks, an MPI file. The target can be an MPI process or an MPI file.

For I/O benchmarks, the single transfer is defined as an operation between an MPI process and an individual window or a file.

  • Single transfer IMB-EXT benchmarks only run with two active processes.

  • Single transfer IMB-IO benchmarks only run with one active process.

Parallel Transfer Benchmarks#

This class contains benchmarks of functions that operate on several processes in parallel. The benchmark timings are produced under a global load. The number of participating processes is arbitrary.

In the Parallel Transfer, more than one process participates in the overall pattern.

The final time is measured as the maximum of timings for all single processes. The throughput is related to that time and the overall amount of transferred data (sum over all processes).

Collective Benchmarks#

This class contains benchmarks of functions that are collective as provided by the MPI standard. The final time is measured as the maximum of timings for all single processes. The throughput is not calculated.

MPI-2 Benchmarks Classification#

Single Transfer

Parallel Transfer

Collective

Other

Unidir_Get

Multi_Unidir_Get

Accumulate

Window

Unidir_Put

Multi_Unidir_Put

Multi_Accumulate

Multi_Window

Bidir_Get

Multi_Bidir_Get

Bidir_Put

Multi_Bidir_Put

S_[I]Write_indv

P_[I]Write_indv

C_[I]Write_indv

Multi-C_[I]Write_indv

S_[I]Write_indv

P_[I]Write_indv

C_[I]Write_indv

Multi-C_[I]Write_indv

Open_close

Multi-Open_close

S_[I]Read_indv

P_[I]Read_indv

C_[I]Read_indv

Multi-C_[I]Read_indv

S_[I]Write_expl

P_[I]Write_expl

C_[I]Write_expl

Multi-C_[I]Write_expl

S_[I]Read_expl

P_[I]Read_expl

C_[I]Read_expl

Multi-C_[I]Read_expl

P_[I]Write_shared

C_[I]Write_shared

Multi-C_[I]Write_shared

P_[I]Read_shared

C_[I]Read_shared

Multi-C_[I]Write_shared

P_[I]Write_priv

P_[I]Read_priv