CISC 367: INTRODUCTION TO PARALLEL PROGRAMMING
Spring 1998
Programming Assignment 1

Due Date: start of class, Thursday, February 19, 1998

Objectives

The objective of this assignment is to become familiar with the use of MPI on the University of Delaware Alpha cluster, to learn how to time MPI programs, and to learn how to write experimental reports.

Procedure

  1. Read through Sections 1 and 2 of the Beginner's Guide to MPI on the University of Delaware DEC Alpha Cluster. Make sure that you can compile and run the example hello world and Mandelbrot programs with several different numbers (2, 4, and 8) of processors, and understand how they work. These programs can be found in ~ pollock/public and ~ pollock/public/mandel, respectively, on porsche.

  2. Playing Ping Pong: Copy the ping_pong.c program from ~ pollock/public on porsche, and compile and run the program. Run your program (with 2 processors) 3 times to collect timings and take the average of the timings, not including any spurious ones in the average calculation. Create a single chart that contains all of your raw timings and the averages for each message length.

  3. Ping pong is a common way of timing the basic communication of a message passing system on a given system. Modify your copy of the program to time the basic communication of messages of type char, integer, and double. You will need to look up the MPI types for these types and replace the appropriate type information in the program. Otherwise, the program does not need modification. For each data type, run the program (with 2 processors) 3 times to collect timings and again take the average. Create a single chart that contains all of your raw timings and the averages for each message length.

  4. Create a single graph that displays all of your timings. The horizontal axis should be the length of the messages sent, that is how many of the given data type were sent in a single message. The vertical axis should be the timings. The graph should have a line for each data type. For this assignment, you can either create the graph by hand or on the computer using a tool that automatically creates the graph based on the data inputs. For later assignments, you need to use a computer to generate the graphs. Two different approaches to generating these graphs from output of your MPI programs are given on the CISC 367 web site.

Hints of Getting Good Timing Data

In order to get reliable timing data, you need to make sure that no one else is using the cluster. To do this, you should run the spyall command just prior to making a performance run. Also, from past experience, leaving the timings until last evenings before the assignment due date makes getting reliable timing runs very difficult to obtain due to the many other folks trying to get access to the cluster for timings.

Experimental Report

Your experimental report should consist of the following sections in this order. It is strongly recommended that you type your report using a word processor rather than handing in a hand-written report.

  1. Cover Page:
    Title, author, course number and semester, date.
  2. Project Summary:
    In one paragraph, summarize the activities of the lab.

  3. Analysis of Hello World:
    Explain why the messages are printed in an arbitrary order. In English, describe an approach that might be used to force the messages to be printed in increasing order by rank.
  4. Ping Pong:
    1. Collected Timing Data. This section includes both a chart of the raw collected timings, and the graph depicting the data pictorially.
    2. Analysis. In English, explain your timing results for ping pong on different data types. You want to describe your observations about the way the timings vary as the length of messages increases, as well as how the timings vary between the different data types.

  5. Conclusions:
    This section consists of a discussion of what you learned from the various aspects of the lab. Discuss possible reasons for inconsistencies or discrepancies in your data versus what you would have expected to happen.

  6. Appendix:
    The code for the modified Ping Pong program for one single data type.

Please staple all parts of your lab together, and label each piece. Be prepared to discuss your results on the day that the assignment is due.

About this document ...

This document was generated using the LaTeX2HTML translator Version 95.1 (Fri Jan 20 1995) Copyright © 1993, 1994, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -split 0 lab1.tex.

The translation was initiated by Lori Pollock on Wed Feb 11 21:39:47 EST 1998


Lori Pollock
Wed Feb 11 21:39:47 EST 1998