

CISC 367: INTRODUCTION TO PARALLEL PROGRAMMING
Spring 2000
Individual Lab Assignment 1
Due Date: start of class, Thursday, February 17, 2000
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. If you
get spurious timings because other people are using the system, then do
not include those spurious timings, but instead run your program again
until you get 3 fairly close timings. Create a single chart that contains
all of your (nonspurious) 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. Make copies and Modify your copies of
the program to time the basic communication of messages of type char, integer,
and double. You will need to use the MPI types for these types. For each
data type, run the program (with 2 processors) 3 times (not including spurious
timings) to collect timings and again take the average. If the program
will not run for larger message lengths for certain data types, change
the program to stop before those lengths, and report up to the lengths
that will run correctly. 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 with circles
for the average. 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:
-
(a)
-
Collected Timing Data. This section includes both a chart of the
raw collected timings, and the graph depicting the data pictorially.
-
(b)
-
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.
Criteria for Evaluation
Your lab will be evaluated according to the following criteria:
-
1.
-
10 pts: compile, run, and collect stats on original ping pong program;
chart of raw timings.
-
2.
-
20 pts: Modify code and run and collect stats on different data types (int,
char, double).
-
3.
-
10 pts: graph depicting results of different data types
-
4.
-
5 pts: cover page
-
5.
-
10 pts: project summary
-
6.
-
10 pts: analysis of hello world
-
7.
-
15 pts: analysis of ping pong data
-
8.
-
10 pts: conclusions
-
9.
-
10 pts: appendix with code
About this document ...
This document was generated using the
LaTeX2HTML
translator Version 98.1p1 release (March 2nd, 1998)
Copyright © 1993, 1994, 1995, 1996, 1997,
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 2000-02-10


Lori Pollock
2000-02-10