nextupprevious
 

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


nextupprevious
Lori Pollock

2000-02-10