CISC 372: INTRODUCTION TO PARALLEL PROGRAMMING
Spring 2000
Group Project 1
Due Dates:
Deliverable 1: start of class, Tuesday, March 14, 2000
Deliverable 2: start of class, Tuesday, March 21, 2000
Deliverable 3: start of class, Thursday, April 6, 2000
The main objectives of this project are:
- to gain the experience of the project group
environment common in the computer industry,
- to creatively solve a somewhat open-ended problem after investigating
multiple
solutions with varying tradeoffs,
- to learn skills, apply knowledge, and seek new knowledge through
a problem-based approach more resembling the real-world situation,
- and to write code for which the specification is being refined
to fit the customer's changing requirements.
You are working on a big project for the National Security Agency (NSA).
The NSA and the Department of Defense want to design a computer system named
ATTACK (Automated Threat Trouncer and Covert Kruncher) that will
be able to scan images acquired from satellite cameras, determine locations
of military stockades,
and orchestrate an ATTACK.
This system is to be a very large and rather complex system, so the work
has been broken up into manageable pieces. Each unit of work will be
assigned to a project group for completion.
Your group has been charged with the image processing phase to enable
computer visualization and target recognition.
Your job is to implement a module which when given an image, returns an altered version of that
image that delineates all the edges within the original image.
Such a system is called an edge detection processor.
To get a feel for what your project should do, try running the edge
detection processor located at:
/usa/jochen/bin/edge on the fast car cluster.
In that same directory, there is a readme file that explains how to
get this edge detector up and running (also where some initial test files can be
found). The test files are in /usa/jochen/pgm/.
It is important that your code be fast and correct; lives depend on your work.
The initial specifications for your module are as follows:
- 1.
- Your software will run on an 8 processor cluster of machines in
a mobile command unit. The machines will run MPICH v1.0.12 (coincidentally
the same configuration available at University of Delaware!). Your code
will use the MPI library with the C programming language.
- 2.
- Images are stored in ascii PGM format. Given a filename at runtime,
your software must read the PGM file, process the image, and then save
the resulting version of the image to a PGM file with the file name
also specified at runtime.
- 3.
- Your program should accept any arbitrary size image, for which
the matrix to store the image is evenly divisible by 8.
- 4.
- Your software must perform all computations as quickly as possible.
- 5.
- Your software must perform all computations correctly.
- 6.
- You should be prepared to give a demo of your software by the third
deliverable deadline.
- 7.
- You must clearly and thoroughly document your code. You must
also provide a well written user manual that covers all aspects of
use, explains algorithms used, describes any problems or shortcomings
and why they exist, describes possible approaches to eliminating
any problems or bugs, and clearly
delineates all specifications of your software.
You should include a section on how you tested your software.
By the first deadline, you should turn in a report that answers the following
questions:
- 1.
- What algorithms are available for edge detection? Give general descriptions
of the algorithms, pros and cons, and sources (citations to books, articles,
web sites) where you found information on the algorithms.
- 2.
- What general approach(es) could be used to parallelize the edge detection
process? In each approach, where are the communication overheads?
- 3.
- What is needed to handle the borders of the image and what
solutions do you see?
- 4.
- How are you going to do the file input/ouput?
- 5.
- What performance issues do you expect to have to address for this project?
- 6.
- How does load balancing come into play in this task?
- 7.
- What characteristics are desirable in a good suite of benchmarks for
testing your code thoroughly for both correctness and performance?
- 8.
- What responsibility did each of your group members take on for this
first deliverable?
A first prototype implementation. This prototype may
be a correct sequential version of your system, or a first
correct version of a parallel system.
The first draft of Item 7 above should also be included with this deliverable.
(more details to come)
A final parallel solution that meets the requirements specified
in the problem description (more details to come).
Your project will be evaluated according to the following criteria:
- 1.
- (30 pts) Deliverable 1.
- (10) research: thorough investigation of solutions and their tradeoffs.
- (7) writing: detailed and clearly written discussion of solutions to the research questions.
- (8) citations: adequate documentation of sources of information.
- (5) group work: fair and working breakdown of the workload among group members.
- 2.
- (30 pts) Deliverable 2.
(more to come)
- 3.
- (30 pts) Deliverable 3.
(more to come)
- 4.
- (10 pts) Peer Review.
(more to come)
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 group1.tex.
The translation was initiated by Lori Pollock on 2000-03-07
Lori Pollock
2000-03-07