MPI Performance - Exercises

The purpose of these exercises is to study factors affecting the performance of MPI programs. These exercises are written for IBM POWER platforms.

Exercise 1 - Eager vs. Rendezvous Protocol

  1. Compile and run the program eager_vs_rend.c using two MPI tasks. Follow the directions in the comments at the top to run it once using eager protocol and once using rendezvous protocol.
  2. Use the output data from the runs to plot message passing bandwidth in MB/sec as a function of message size in bytes for both protocols.
  3. Summarize your observations.

Exercise 2 - Polling vs. Interrupt for Sender-receiver Synchronization

  1. Compile and run the program allreduce.c with different numbers of MPI tasks (e.g., 2, 4, 8, 16, 32, 64, 128). Follow the directions in the comments at the top to do one set of runs using polling and another set of runs using interrupt mode.
  2. Use the output data to plot the execution time as a function of the number of MPI tasks.
  3. Compile and run the program poll_interrupt.c, following the diretions in the comments at the top to run it once using polling mode and once using interrupt mode.
  4. Summarize your observations.

Exercise 3 - Message Size

  1. Compile and run the program msgsize.c with two MPI tasks.
  2. Use the output data to plot message passing bandwidth as a function of message size.
  3. Summarize your observations.

Exercise 4 - Point-to-point Routine Comparisons

  1. Compile and run the program mpi_multibandwidth.c using an even number of MPI tasks.
  2. Use the output data to plot message passing bandwidth as a function of message size for all of the routine types on the same graph (e.g., using a different color and/or symbols for different routine types).
  3. Summarize your observations.

Exercises 5 - Persistent Communications

  1. Compile and run the program persist.c which uses persistent communications.
  2. Compile and run the program persist2.c which uses MPI_Irecv and MPI_Isend for purpose of comparison.
  3. Use the output data to plot message bandwidth as a function of message size for the above two programs on the same graph.
  4. Summarize your observations.

Exercises 6 - Derived Datatypes

  1. Compile and run the program datatypes2.c with two MPI tasks.
  2. Compile and run the program datatypes.c with two MPI tasks.
  3. Study the output data and summarize your observations.

shirley@cs.utk.edu