Intel® MPI Benchmarks User Guide and Methodology Description

# Classification of IMB-RMA Benchmarks

All the `IMB-RMA` benchmarks fall into the following categories:

Single Transfer

In these benchmarks, one process accesses the memory of another process, in unidirectional or bidirectional manner. Single Transfer IMB-RMA benchmarks only run on two active processes. Throughput values are measured in MBps and can be calculated as follows:

`throughput = X/``time,`

where

- `time` is measured in `μsec`.
- `X` is the length of a message, in bytes.

Multiple Transfer

In these benchmarks, one process accesses the memory of several other processes.

Throughput values are measured in MBps and can be calculated as follows:

`throughput = X/``time * N`, where

- `time` is measured in `μsec`.
- `X` is the length of a message, in bytes.
- `N` is the number of target processes.

  ### Note

  The final throughput value is multiplied by the amount of target processes since the transfer is performed to every process except the origin process itself.

Parallel Transfer

This class contains benchmarks that operate on several processes in parallel. These benchmarks show bare timing values: maximum, minimum, and the average time among all the ranks participating in the benchmark measurements.

The table below lists all `IMB-RMA` benchmarks and specifies their properties:

Benchmark | Type | Aggregated Mode
--- | --- | ---
`Unidir_put` | Single Transfer | Supported
`Unidir_get` | Single Transfer | Supported
`Bidir_put` | Single Transfer | Supported
`Bidir_get` | Single Transfer | Supported
`One_put_all` | Multiple Transfer | N/A
`One_get_all` | Multiple Transfer | N/A
`All_put_all` | Parallel Transfer | N/A
`All_get_all` | Parallel Transfer | N/A
`Put_local` | Single Transfer | Supported
`Put_all_local` | Multiple Transfer | N/A
`Exchange_put` | Parallel Transfer | N/A
`Exchange_get` | Parallel Transfer | N/A
`Accumulate` | Single Transfer | Supported
`Get_accumulate` | Single Transfer | Supported
`Fetch_and_op` | Single Transfer | Supported
`Compare_and_swap` | Single Transfer | Supported
`Truly_passive_put` | Single Transfer* | N/A
`Get_local` | Single Transfer | Supported
`Get_all_local` | Multiple Transfer | N/A

* The output format differs from the regular Single Transfer output. For details, see Truly_passive_put.