Project Three -- MPI (Understanding Communication) and OpenMP, Cilk, or language of your choice

Assigned: Thursday, February 25th, 2016 

Pre-Assignment Due: In class, Thursday, March 5th, 2015
MPI and OpenMP/Cilk versions Due: Thursday, March 17th, 2016

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 Cilk. While we provide support for only these two parallel programming environments, you are free to pick a model of your own choosing 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.

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/cs"2or4"58/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 these numbers in the form of a graph. Annotate the graph to indicate the hardware platform, compiler options, and input data size (as you did for Project 1).

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 students are required to analyze their results on only one platform. CSC 458 students should do so on two platforms. You should compare your results across all three implementations (pthreads, MPI, OpenMP/Cilk). In order to make a fair comparison, make sure you run your codes on the same hardware (MPI programs can be run on a single shared-memory multiprocessor).

Turn-in for the main assignment:

You should put your solutions in a directory called cs(2or)458_proj3 under your home directory. Please use the TURN_IN script (in /u/cs(2 or 4)58/bin) to turn in your directory. Your directory must include a written report. Name your report 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.

Deadlines: SEE ABOVE.

Sandhya Dwarkadas