Each student is required to do a term project for this course, which
counts toward the final grade.
You may choose to work in teams, but each member's contribution must be
clearly specified, and a team project must be proportionally larger than
an individual project, so that the amount of effort per person is about
the same as with an individual project. All members of a team receive
the same grade.
Your choice of project must be approved by the instructor in advance,
including specifying any collaborative arrangement you may have.
Project proposals (maximum one page) are due in class or by email by
Thursday, Oct 10. You will be notified by Thursday,
Oct 17, whether your proposed project is approved, possibly with
some suggestions or modifications.
To encourage you not to put off working on your project until the end
of the term, a progress report will be due on Tuesday, November 12.
The due date for completed projects is Tuesday, Dec 10. Turn
in a brief write-up of your completed project describing the problem
you chose, the approach you took in your parallel implementation, the
issues you addressed, and your results. Please produce your write-up
on a computer word processing system and print it on a laser printer,
including computer-generated graphics (an emailed pdf file is also
acceptable). You should also submit listings of any programs you
write as part of your project.
Option 1: Parallel Algorithm Implementation and Performance Studies
Choose one or more algorithms from the lecture notes, implement them
using MPI, and carry out performance studies on the
focusing on issues such as
1-D vs. 2-D partitioning
row vs. column partitioning
different mapping strategies (e.g., cyclic, block, reflection)
different algorithms for collective communication (broadcast, reduction, etc.)
different algorithms for same problem
Your performance studies should be roughly analogous to MP1, i.e.,
Run your program for a series of values of the problem size n
and number of processors p and plot and discuss the resulting
speedup and efficiency you observe.
Compare the performance you observe with that predicted by a performance model
(of your own or from the lecture notes).
Plot isoefficiency curves given by your performance model and compare
with your observations of actual efficiency.
Use a parallel performance visualization tool such as
to produce visualizations of the behavior and performance of your
program. Note that such tools typically require a trace log of
your program, such as those produced by
SLOG (for Jumpshot) or
MPICL (for ParaGraph).
Option 2: Parallel Implementation of Your Own Application
Some students take this class because they plan to parallelize an
algorithm or application from their own research. This can be an
acceptable project, but the approach and objectives must be clearly
stated from the outset. Your project proposal should specify the
problem your code will address, what parts have already been
parallelized, if any, and what further progress you expect to make as
part of your class project. This option should also include
performance studies along the lines of those for Option 1 for at least
a portion of the parallel code, although a detailed performance model
may be less tractable for a complex application.