Parameters Controlling Intel MPI Benchmarks

Intel® MPI Benchmarks User Guide and Methodology Description

# Parameters Controlling Intel® MPI Benchmarks

Parameters controlling the default settings of the Intel® MPI Benchmarks are set by preprocessor definition in files `IMB_settings.h` (for IMB-MPI1 and IMB-EXT benchmarks) and `IMB_settings_io.h` (for IMB-IO benchmarks). Both include files have identical structure, but differ in the predefined parameter values.

To enable the optional mode, define the `IMB_OPTIONAL` parameter in the `IMB_settings.h/IMB_settings_io.h`. After you change the settings in the optional section, you need to recompile the Intel® MPI Benchmarks.

The following table describes the Intel MPI Benchmarks parameters and lists their values for the standard mode.

Parameter | Values in IMB_settings.h | Values in IMB_settings_io.h | Description
--- | --- | --- | ---
`USE_MPI_INIT_THREAD` | Not set | Not set | Set to initialize Intel® MPI Benchmarks by `MPI_Init_thread()` instead of `MPI_Init()`
`IMB_OPTIONAL` | Not set | Not set | Set to activate optional settings
`MINMSGLOG` | 0 | 0 | The second smallest data transfer size is `max(unit,2MINMSGLOG` (the smallest size is always 0), where `unit=sizeof(float)` for reductions, `unit=1` for all other cases. You can override this parameter value using the `-msglog` flag.
`MAXMSGLOG` | 22 | 24 | The largest message size used is `2MAXMSGLOG` You can override this parameter value using the`-msglog` flag.
`ITER_POLICY` | imode_dynamic |  | The policy used for calculating the number of iterations. You can override this parameter value using the `-iter_policy` or `-iter` flag.
`MSGSPERSAMPLE` | 1000 | 50 | The maximum repetition count for all IMB-MPI1 benchmarks. You can override this parameter value using the`-iter` flag.
`MSGS_NONAGGR` | 100 | 10 | The maximum repetition count for non-aggregate benchmarks (relevant only for `IMB-EXT`). You can override this parameter value using the `-time` flag.
`OVERALL_VOL` | 40 Mbytes | 16*1048576 | For all sizes smaller than `OVERALL_VOL`, the repetition count is reduced so that not more than `OVERALL_VOL` bytes are processed all in all. This permits you to avoid unnecessary repetitions for large message sizes. Finally, the real repetition count for message size X is `MSGSPERSAMPLE (X=0)`, `min(MSGSPERSAMPLE, max(1,OVERALL_VOL/X)) (X>0)` Note that `OVERALL_VOL` does not restrict the size of the maximum data transfer. `2MAXMSGLOG `OVERALL_VOL.`` You can override this parameter value using the `-mem` flag.
`SECS_PER_SAMPLE` | 10 |  | Number of iterations is dynamically set so that this number of run time seconds is not exceeded per message length.
`N_BARR` | 2 | 2 | Number of `MPI_Barrier` for synchronization.
`TARGET_CPU_SECS` | 0.01 seconds | 0.1 seconds | CPU seconds (as float) to run concurrently with nonblocking benchmarks (irrelevant for IMB-MPI1)

In the example below, the `IMB_settings_io.h`. file has the `IMB_OPTIONAL` parameter enabled, so that user-defined parameters are used. I/O sizes of 32 and 64 MB, and a smaller repetition count are selected, extending the standard mode tables. You can modify the optional values as required.

    #define FILENAME IMB_out
    #define IMB_OPTIONAL
    #ifdef IMB_OPTIONAL
    #define MINMSGLOG  25
    #define MAXMSGLOG  26
    #define MSGSPERSAMPLE  10
    #define MSGS_NONAGGR  10
    #define OVERALL_VOL  16*1048576
    #define SECS_PER_SAMPLE  10
    #define TARGET_CPU_SECS 0.1 /* unit seconds */
    #define N_BARR   2
    #else
    /*Do not change anything below this line*/
    #define MINMSGLOG  0
    #define MAXMSGLOG  24
    #define MSGSPERSAMPLE  50
    #define MSGS_NONAGGR  10
    #define OVERALL_VOL 16*1048576
    #define TARGET_CPU_SECS  0.1 /* unit seconds */
    #define N_BARR   2
    #endif

If `IMB_OPTIONAL` is deactivated, Intel MPI Benchmarks uses the default standard mode values.