CSE Courses

Engineering at Illinois Engineering at Illinois

Term Projects

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 Campus Cluster, 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 Jumpshot or ParaGraph 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.