Choose a problem from the topics below or other topics and design two different algorithms for this problem. For each algorithm, write a parallel program. Students will be asked to present their problem description, algorithm(s) employed, program description, and performance plots to the class using 5-10 minutes.
Submit the following: A 3-5 page single-spaced project report (hard copy) containing the following sections:
1. your problem,
2. chosen algorithms,
3. associated data structures,
4. underlying communication pattern,
5. parallel time complexity for each implementation
6. performance of each program with reference to the plots for (a) execution time and for (b) speedup as number of processes varies, and
9. your conclusions containing your interpretation of the performance of these programs, their limitations, and possible future improvements.
1. Sorting: Bitonic sort, hyperquick sort, sorting by regular sampling, bucket and sample sort
2. Fast Fourier Transform: hypercube topology
3. Solving Linear Systems: Row oriented Gaussian elimination on hypercube topology, Jacobi algorithm, Gauss Seidel algorithm, Conjugate gradient.
4. Shortest Paths in a Graph
5. Traveling Sales Person
6. Minimum spanning tree
7. Graph Coloring