CSCE569

Assignment 3 – CSCE569, Spring 2018

Due: 11:55PM March 30th, Friday 2018


In this assignment, you will parallelize the Jacobi iterative method using MPI for execution on bridges supercomputer. The program skeleton are given as jacobi.c file. Row-wise decomposition of the 2-dimensional matrix should be applied for decomposing the computation of Jacobi method among all MPI processes. Please check course lecture Dense Matrices and Decomposition for row-wise decomposition.

Source Code to Start

The program skeleton are given as jacobi.c file. Please read the source code first to understand the algorithm and how it implemented. The code and function you need to implement are commented as TODO. There are three TODO items and the grade distribution for the TODO items are in the following grading section. You free to use codes in MPI Examples and internet resources for this assignmenment. But you solutions must be within the provided jacobi.c code and you should not make significant changes to the program other than implementing the three TODO items.

The commands to compile and run the programs on the development machine are as follows:

   mpicc jacobi.c -lm -o jacobi
   mpirun -np 4 ./jacobi #Only for development machine in Swearingen

You can only use mpirun to execute the program on the development machine. On bridges, you need to use sbatch to submit the MPI job. Check next section for details. The source code also tells you how to give different parameters (e.g. matrix size) for the jacobi method.

Machines for Development and for Collecting Results

Your development can be done in any machine that has the MPI tools and environment setup, including those in Swearingen 1D39 and 3D22 for MPI development. In this assingment, if you want to report your performance results, you should use Bridges supercomputer from PSC. Please check batch job submission on XSEDE PSC Bridges Supercomputer section for details about how to submit a sbatch MPI job to bridges for MPI execution.

Submission

Your submission should be a single zipped file named LastNameFirstName.zip that includes ONLY the following: jacobi.c ands one optional PDF file for your report. Please remove all other files, including the executables, Excel sheet, etc. The source file contains your implementation, and should be compiled to generate executable.

The report is max 3-page PDF document that includes the following. The report for this assignment is optional, 20 bonus points will be given for a complete report.

  1. Short description on how you parallelize Jacobi.
  2. Performance report using two figures (execution time and speedup). An excel sheet is provided for creating those figures after you input the execution times you will collect (The numbers in the current sheet are dummy numbers). Seedup, which is the ratio of the execution time using 1 process to the execution time using x processes, will be automatically calculated based on the numbers in executime time table. The two figures will be automatically populated and generated by Excel as well. Please include those figures in your report.
  3. Explanation of the performance results shown in your figures and draw meaningful conclusions.

Grading:

  1. Function implementation: 100 points for the three TODO items,

    1. TODO #1: 25
    2. TODO #2.a: 10
    3. TODO #2.b: 20
    4. TODO #2.c: 20
    5. TODO #3: 25
    

    For source file that cannot be compiled, you only receive max 60% of function implementation points. For compliable, but with execution errors or incorrectness, you receive max 80% of function implementation points.

  2. Report: 20 bonus points.

Assignment Policy

  1. Programming assignments are to be done individually. You may discuss assignments with others, but you must code your own solutions and submit them with a write-up in your own words. Indicate clearly the name(s) of student(s) you collaborated with, if any.
  2. Although homework assignments will not be pledged, per se, the submitted solutions must be your work and not copied from other students’ assignments or other sources.
  3. You may not transmit or receive code from anyone in the class in any way–visually (by showing someone your code), electronically (by emailing, posting, or otherwise sending someone your code), verbally (by reading your code to someone), or in any other way.
  4. You may not collaborate with people who are not your classmates, TAs, or instructor in any way. For example, you may not post questions to programming forums.
  5. Any violations of these rules will be reported to the honor council. Check the syllabus for the late policy and academic conduct.