Intel® MPI Benchmarks User Guide and Methodology Description

# What's New

This section provides changes for the Intel® MPI Benchmarks as compared to the previous versions of this product.

## Changes in Intel® MPI Benchmarks 4.1

This release includes the following updates as compared to the Intel® MPI Benchmarks 4.0:

- Introduced new benchmarks: `Uniband` and `Biband`. See Parallel Transfer Benchmarks.
- Introduced new options: `-sync` and `-root_shift`. See Command-Line Control.

## Changes in Intel® MPI Benchmarks 4.0

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.2.4:

- Introduced new components `IMB-NBC` and `IMB-RMA` that conform to the MPI-3.0 standard.
- Introduced a new feature to set the appropriate policy for automatic calculation of iterations. You can set the policy using the -`iter` and -`iter_policy` options.
- Added new targets to the Linux* OS Makefiles:

- `NBC` for building `IMB-NBC`
- `RMA` for building `IMB-RMA`

- Updated Microsoft* Visual Studio* solutions to include the `IMB-NBC` and `IMB-RMA` targets.
- Support for the Microsoft* Visual Studio* 2013. Microsoft* Visual Studio* 2008 support is removed.

## Changes in Intel® MPI Benchmarks 3.2.4

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.2.3:

- Changes of document layout.

## Changes in Intel® MPI Benchmarks 3.2.3

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.2.2:

- Option `-msglog` to control the message length. Use this option to control the maximum and the second largest minimum of the message transfer sizes. The minimum message transfer size is always 0.

- Thread safety support in the MPI initialization phase. Use `MPI_Init()`by default because it is supported for all MPI implementations. You can choose `MPI_Init_thread()` by defining the appropriate macro.

- Option `–thread_level` to specify the desired thread level support for `MPI_Init_thread.`

- Support for the Microsoft* Visual Studio* 2010 project folder.

## Changes in Intel® MPI Benchmarks 3.2.2

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.2.1:

- Support for large buffers greater than 2 GB for some MPI collective benchmarks (`Allgather`, `Alltoall`, `Scatter`, `Gather`) to support large core counts.

- New benchmarks: `PingPongSpecificSource` and `PingPingSpecificSource`. The exact destination rank is used for these tests instead of `MPI_ANY_SOURCE` as in the `PingPong` and `PingPing` benchmarks. These are not executed by default. Use the `-include` option to enable the new benchmarks. For example,

`$ mpirun n 2 IMB_MPI -include PingPongSpecificSource \`
`PingPingSpecificSource`

- New options `-include/-exclude` for better control over the benchmarks list. Use these options to include or exclude benchmarks from the default execution list.

## Changes in Intel® MPI Benchmarks 3.2.1

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.2:

- Fix of the memory corruption issue when the command-line option `-msglen` is used with the Intel® MPI Benchmarks executable files.

- Fix in the accumulated benchmark related to using the `CHECK` conditional compilation macro.

- Fix for the integer overflow in dynamic calculations on the number of iterations.

- Recipes for building IA-32 executable files within Microsoft* Visual Studio* 2005 and Microsoft* Visual Studio* 2008 project folders associated with the Intel® MPI Benchmarks.

## Changes in Intel® MPI Benchmarks 3.2

Intel® MPI Benchmarks 3.2 has the following changes as compared to the previous version:

- The default settings are different.

- Microsoft* Visual Studio* project folders are added and can be used on the Microsoft* Windows* platforms.

- Makefiles for the Microsoft* Windows* `nmake` utility provided with the Intel® MPI Benchmarks 3.1 are removed.

### Run Time Control by Default

The improved run time control that is associated with the `–time` flag. This is the default value for the Intel® MPI Benchmarks executable files (with a maximum run time per sample set to `10` seconds by the `SECS_PER_SAMPLE` parameter in the include file `IMB_settings.h`).

### Makefiles

The `nmake` files for Windows* OS were removed and replaced by Microsoft* Visual Studio* solutions.

The Linux* OS Makefiles received new targets:

- Target `MPI1` (default) for building `IMB-MPI1`

- Target `EXT` for building `IMB-EXT`

- Target `IO` for building `IMB-IO`

- Target `all` for building all three of the above

### Microsoft* Visual Studio* Project Folders

Intel® MPI Benchmarks 3.2 contains Microsoft* Visual Studio* solutions based on an installation of the Intel® MPI Library. A dedicated folder is created for the Microsoft* Windows* OS without duplicating source files. The solutions refer to the source files that are located at their standard location within the Intel® MPI Benchmarks directory structure.

As such solutions are highly version-dependent, see the information in the corresponding `ReadMe.txt` files that unpack with the folder. You are recommended to learn about the Microsoft* Visual Studio* philosophy and the run time environment of your Windows cluster.

## Changes in Intel® MPI Benchmarks 3.1

This release includes the following updates as compared to the Intel® MPI Benchmarks 3.0:

- New control flags

- Better control of the overall repetition counts, run time, and memory exploitation

- A facility to avoid cache re-usage of message buffers as far as possible

- A fix of IMB-IO semantics

- New benchmarks

- `Gather`

- `Gatherv`

- `Scatter`

- `Scatterv`

- New command-line flags for better control

- `-off_cache`

Use this flag when measuring performance on high speed interconnects or, in particular, across the shared memory within a node. Traditional Intel® MPI Benchmarks results included a very beneficial cache re-usage of message buffers which led to idealistic results. The flag -off_cache allows avoiding cache effects and lets the Intel® MPI Benchmarks use message buffers which are very likely not resident in cache.

- `-iter, -time`

Use these flags for enhanced control of the overall run time, which is crucial for large clusters, where collectives tend to run extremely long in the traditional Intel® MPI Benchmarks settings.

### CAUTION

In the Intel® MPI Benchmarks, the -time flag has been implemented as default.

- `-mem`

  Use this flag to determine an a priori maximum (per process) memory usage of the Intel® MPI Benchmarks for the overall message buffers.

### Miscellaneous Changes

In the `Exchange` benchmark, the two buffers sent by `MPI_Isend` are separate. The command line is repeated in the output. Memory management is completely encapsulated in the functions `IMB_v_alloc/IMB_v_free.`

## Changes in Intel® MPI Benchmarks 3.0

This release includes the following updates as compared to the Intel® MPI Benchmarks 2.3:

- A call to the `MPI_Init_thread` function to determine the MPI threading environment. The MPI threading environment is reported each time an Intel® MPI Benchmark application is executed.

- A call to the function `MPI_Get_version` to report the version of the Intel MPI library implementation that the three benchmark applications are linking to.

- New `Alltoallv` benchmark.

- New command-line flag `-h[elp]` to display the calling sequence for each benchmark application.

- Removal of the outdated `Makefile` templates. There are three complete `makefiles` called `Makefile`, `make_ict`, and `make_mpich`. The `make_ict` option uses the Intel® Composer XE compilers. This option is available for both Intel and non-Intel microprocessors but it may result in additional optimizations for Intel microprocessors.

- Better command-line argument checking, clean message and break on most invalid arguments.

Optimization Notice
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804