In this program increasing sized messages are sent back and forth between processes--this is commonly called PingPong. This benchmark is based on standard blocking MPI_Send/MPI_Recv. PingPong provides information about latency of MPI_Send/MPI_Recv and uni-directional bandwidth. To ensure that anomalies in message timings are minimized the PingPong is repeated many times for each message size. The codes used for these tests were those developed by Baker and Grassl [20]. The three existing codes (MPI-C, MPI-Fortran and Winsock-C) were used for comparison and we implemented an mpiJava version for our purposes.
The main problem encountered running the PingPong code was that under
WMPI on Win32 MPI_Wtime() had been implemented with a millisecond
resolution. It was necessary to adapt each of the codes to use an alternative
times with microsecond (
s) resolution. The performance tests shown
in the next section were run on two similar systems: