YCP Logo Assignment 3: Message-Passing Performance

Due: Friday, March 20th by 11:59 PM

Updated March 16th: Added link to example code showing how to collect microsecond-resolution timing data

Your Task

Perform experiments to determine the following characteristics of the network switch used in the computing cluster:

  1. The minimum latency. Suggestion: write a "ping-pong" program, and measure the round-trip time for a single message to be sent and its reply received. Assume that the latency is half the round trip time.
  2. The maximum communication bandwith between a pair of communicating nodes.
  3. The effect of the number of simultaneously communicating pairs of nodes on the maximum bandwith achieved by each pair. In other words: presumably, a single pair of communicating nodes can achieve the maximum bandwidth. Can two pairs simultaneously achieve maximum bandwidth? If not, what percentage of maximum bandwidth do they see?

Use OpenMPI for each experiment.

Measuring time

The following example program defines a function called utime which returns a microsecond-resolution timestamp:


Feel free to use this function in your programs.

Getting Started

Download CS497_Assign3.zip. Unzip it somewhere in your home directory on the cluster head node.

The project skeleton is set up with three source files: experiment1.c, experiment2.c, and experiment3.c. Use these to write test programs for the three experiments described above.

A shell script, runpar, is provided to help run the programs on multiple nodes using OpenMPI. Use it like this:

./runpar experiment1 2

The above command will run the experiment1 program on 2 nodes.

Deliverables, Submitting

Submit the following:

  1. A report describing each experiment: how the program you wrote attempted to perform the measurement, and the results of the experiment. For the third experiment, include a plot of the average bandwidth per pair of communicating nodes as the number of pairs increases.
  2. The source code for each program, along with the Makefile and any other files needed to compile the programs.

You can submit your work directly to the server by making sure your report is included in the directory containing your source code, and running the command

make submit

from the cluster head node. When prompted, enter your Marmoset username and password. You should see a message indicating that the submission was successfully uploaded to the server.

Important: You should log into the server and download your submitted files. Check to make sure that the files you submitted were the ones you intended. The server URL is