Assigned: Wednesday, February 9th, 2022
Pre-Assignment Due: Monday, February 14th, 2022
MPI and OpenMP/other versions Due: Thursday, March 3rd, 2022
The goal of this assignment is first to understand the role of data communication using MPI as the message passing model. Subsequently, your goal is to work with a higher-level abstraction such as OpenMP or a language/platform (e.g., GPUs) of your choice. While we provide support only for MPI and OpenMP, you are free to pick a model of your own choosing other than OpenMP to experiment with (the same does not go for MPI --- you are required to create an MPI version of your program) --- you are on your own in terms of setting up the environment in that case, although we would be happy to assist in any way. You will be working with the same application as in assignment 1: Gaussian Elimination.
The MPI forum contains some references you may find useful. The MPI tutorial from Lawrence Livermore National Labs is particularly handy.
FAQ: Debugging applications in parallel contains good tips for debugging parallel applications using MPI.
Please see the build notes for
instructions on how to get started with all three environments above.
Sample applications and makefiles are available at /u/cs258/apps
.
Please start early so that any issues can be ironed out in advance.
Pre-Assignment: So that you get started, your first task is to compile and run the mpi version of the sample program supplied -- sor. Please choose a platform, generate results for a range of number of processors (1, 2, 4, 8, and 16) for a single input data set, and plot or tabulate these numbers. Annotate the graph to indicate the hardware platform, compiler options, and input data size (as you did for Project 1). Please use blackboard/gradescope to turn it in.
Analysis and Writeup: Please see the instructions for the first assignment and follow the guidelines for documentation, evaluation, and analysis. For this assignment, one parallelization strategy is sufficient, although documentation (and evaluation) of intermediate approaches before you arrived at your best would strengthen your analysis. CSC 258 and CSC 458 students are required to analyze their results on node2x18a. Using node2x18a will allow you to compare your results across programming paradigms. Additionally, CSC 458 students should collect performance on the cluster: node01 through node06 (CSC 258 students can do so for extra credit). Compare your results across all three implementations (pthreads, MPI, OpenMP/other) on node2x18a.
report.pdf
. Note that the report is the primary basis for your
grade. In fact, you will get ZERO if you finish
all your programming but do not turn in the written report.
Your report must be in PDF and include a
basic correctness argument, along with an analysis and presentation of
performance in graphical format.