EECE 432 / CS 442 Spring 1999 Final Project Due Monday, May 10, 1999 by 5:15 PM [THIS IS A SHARP DEADLINE: NO EXTENSIONS WILL BE GIVEN] For the final project, you must select a problem to parallelize and implement on a parallel machine. You may choose any problem that has a nontrivial parallel implementation: the parallel algorithm must have several steps that require communication. You may use any available resources (including your colleagues) as long as you document each source, with one exception: you may not use an already-written parallel code. Submit a final report with the following sections. 1) Introduction -- describe the problem and cite any references to the problem, sequential, or parallel implementations. 2) Sequential Algorithm -- describe the sequential implementation of the problem, giving an asymptotic analysis of complexity. The sequential implementation may use code written by someone else. In this case, please document the source of the code. 3) Parallel Algorithm -- describe how the problem may be parallelized, and any trade-offs between various parallel designs. Analyze the parallel algorithm using asymptotic analysis, by giving the running time, speedup, efficiency, and optimality. 4) Experimental Analysis -- implement the parallel algorithm using any parallel machine of your choice, and the Message Passing Interface (MPI). Graph the running time of the algorithm as the number of processors and problem sizes change (for a reasonable number of machine and problem sizes). Also graph the scalability of the problem compared with the sequential implementation (from part 2). 5) Discussion -- report your observations, whether the analysis predicted the performance, and any ways to further improve the parallel implementation. 6) References -- list a bibliography of any references used in this report.