-
Students will demonstrate an understanding of the main models for parallel hardware and parallel software; and will apply techniques for decomposing problems into smaller tasks and assigning them into computing units. To know the basic constructs for building parallel programs with Java multi-threading, POSIX threads, OpenMP, MPI.
| Week | Topic |
|---|---|
| 1 | Introduction and motivation for parallel programming. |
| 2 | Parallel hardware. Flynn's taxonomy. |
| 3 | Parallel software. Performance metrics. |
| 4 | Algorithms and constructs for collective communication. |
| 5 | Analytical modeling of parallel programs. |
| 6 | Shared-memory parallel programming (in POSIX and OpenMP). Threads, their life cycles. |
| 7 | Critical sections, race conditions and thread synchronization. |
| 8 | Midterm exam. |
| 9 | Distributed memory programming (in MPI). Principles of message passing, send and receive operations. |
| 10 | Overlapping communication and computation, collective operations. |
| 11 | Parallel programming approach on dense matrix algorithms. |
| 12 | Parallel sorting algorithms. |
| 13 | Parallel graph algorithms. |
| 14 | An overview of state-of-the-art applications of parallel programming. |
| Method | % Each | Quantity |
|---|---|---|
| Homework | 7.5 | 2 |
| Midterm Exam(s) | 25 | 1 |
| Presentation | 5 | 1 |
| Project | 10 | 1 |
| Final Exam | 40 | 1 |
| Attendance | 5 |
"An Introduction to Parallel Programming", Peter Pacheco "An introduction to parallel computing" (2nd edition) Ananth Grama , Vipin Kumar, George Karypis, Anshul Gupta