Computer Science 335
Parallel Processing and High Performance Computing
Fall 2024, Siena College
In this programming project, parallelize the Jacobi iteration program using the SPMD model using message passing with MPI for communication.
You may use your own serial implementation as a starting point, or use my sample solution (available on request).
You may work alone or with a partner or two on this programming project. AI assistance is permitted, but must be documented and intermediate steps in the process must be committed to your repository.
Learning goals:
Getting Set Up
In Canvas, you will find a link to follow to set up your GitHub repository, which will be named jacobimpi-proj-yourgitname, for this programming project. Only one member of the group should follow the link to set up the repository on GitHub, then others should request a link to be granted write access.
All GitHub repositories must be created with all group members having write access and all group member names specified in the README.md file by 4:00 PM, Friday, October 11, 2024. This applies to those who choose to work alone as well!
Parallelization of Jacobi Iteration
The parallelization of the Jacobi iteration program will closely follow that in the MPI version of Conway's Game of Life. Distribute the computational domain among the processors by groups of adjacent rows. As with the Game of Life simulation, you may assume the number of processes evenly divides the number of grid rows.
Your program's functionality should remain the same, and your solution output should be identical to the serial version.
For the questions below, assume a problem size of 512x512 grid cells.
Extra Credit Opportunities
For 5 bonus points, make your simulation work when the number of processes does not evenly divide the number of rows.
Submission
Commit and push!
Grading
This assignment will be graded out of 75 points.
Feature | Value | Score |
Correct Makefile | 1 | |
Command-line parameters | 2 | |
Distributed grid allocation | 10 | |
Parallel Jacobi iteration | 20 | |
Stops based on iteration limit | 2 | |
Stops based on error tolerance | 4 | |
Print simulation stats | 4 | |
Documentation | 10 | |
Code Style | 5 | |
Question 1 | 10 | |
Question 2 | 4 | |
Question 3 | 3 | |
(Bonus) Works for any size grid and numprocs | 0 | |
Total | 75 | |