Visible to Intel only — GUID: GUID-6D9A0598-D716-40FB-87D7-C03AAA51E63F
Visible to Intel only — GUID: GUID-6D9A0598-D716-40FB-87D7-C03AAA51E63F
Buffer Initialization
Communication and I/O buffers are dynamically allocated as void* and used as MPI_BYTE buffers for all benchmarks except Accumulate, see Memory Requirements. To assign the buffer contents, a cast to an assignment type is performed. This facilitates result checking which may become necessary. Besides, a sensible data type is mandatory for Accumulate.
Intel(R) MPI Benchmarks sets the buffer assignment type assign_type in IMB_settings.h/IMB_settings_io.h. Currently, int is used for IMB-IO, float for IMB-EXT. The values are set by a macro definition as follows.
For IMB-EXT benchmarks:
#define BUF_VALUE(rank,i) (0.1*((rank)+1)+(float)( i)
For IMB-IO benchmarks:
#define BUF_VALUE(rank,i) 10000000*(1+rank)+i%10000000
In every initialization, communication buffers are seen as typed arrays and initialized as follows:
((assign_type*)buffer)[i] = BUF_VALUE(rank,i;
where rank is the MPI rank of the calling process.