Documentation

Building MPIPerf

Unpack the tar file and go to the top level directory

$ tar zxvf mpiperf.tar.gz
$ cd mpiperf

Before building specify your compiler and path to MPI library in Makefile.inc. To compile MPIPerf, type

$ make 

If no error occurs, executable file src/mpiperf will be created.

Checking timers

Before any measurements it is required to check timers in MPIPerf on target computer system. To print list of supported timers run mpiperf with option -T

$ mpiexec -n 1 ./mpiperf -T
Supported timers:
MPI_Wtime
gettimeofday
tsc

To check timer 'tsc' run mpiperf with option -j (default timer is MPI_Wtime)

$ mpiexec -n 1 ./mpiperf -j -t tsc

In the case of correct work of timer the message "PASSED" is printed.

Checking synchronization

To checking correctness of synchronization of processes run WaitPatternNull test on few nodes

$ mpiexec -n 64 ./mpiperf WaitPatternNull

The execution time of test (column [Mean]) must be 0.XX microseconds. Value greater then 1.00 microseconds indicates invalid synchronization of processes. In such case you can try to check other timers:

$ mpiexec -n 64 ./mpiperf -t tsc WaitPatternNull

Running tests

To print list of support tests run mpiperf with option -q

$ ./mpiperf -q

To run test 'Bcast'

$ mpiexec -n 16 ./mpiperf Bcast

In following example data size (count) is changed from 1024 bytes to 64 KiB in a geometric progression with common ration 2:

$ mpiexec -n 32 ./mpiperf -t tsc -x1024 -X64KiB -S2 Bcast

In following example number of processes is changed from 1 to 16 in an arithmetic progression with common difference 1, data size (count) is changed from 1024 to 8 KiB in an arithmetic progression with common difference 1024:

$ mpiexec -n 32 ./mpiperf -p1 -P16 -g1 -x1KiB -X8KiB -s1024 Bcast

In following example each test is terminated when relative standard error of measured time is less then 3% or number of test runs is greater then 1000:

$ mpiexec -n 32 ./mpiperf -x2MiB -X4MiB -S2 -R1000 -e3 Scatter

In following example MPI_Ibarrier time is measured in blockig mode (MPI_Ibarrier followed by MPI_Wait):

$ mpiexec -n 32 ./mpiperf -x1 -X1 -b ibarrier

In following example MPI_Iallgather overlap is measured:

$ mpiexec -n 64 ./mpiperf -x1 -X1024 -S2 iallgather 

Plotting graphs

Gnuplot scripts for plotting are located in directory examples/graphs. Below is an example of graph for test MPI_Barrier.