This schedule is subject to change, so check frequently
References to Pacheco refer to the course reader: An Introduction to Parallel Programming, by Peter Pacheco, Morgan Kaufmann, 2011. Page numbers refer to text not the reader (numbers at the top of the page).
References to Williams refer to C++ Concurrency in Action: Practical Multithreading, by Anthony Williams, Manning Publications, 2012. Here are the errrata for the Willams text
A tag posted will be added to indicate that lecture slides have become available.
| Lecture | Date | Topic | Notes |
|---|---|---|---|
| 1 | 3/30 | Introduction | slides notes |
| 2 | 4/ 1 | Hardware organization; | |
| software execution models; | |||
| threads Programming | slides notes | ||
| 3 | 4/ 3 | Synchronization; | |
| Performance | slides notes | ||
| 4 | 4/ 6 | Synchronization | slides notes |
| 5 | 4/ 8 | Applying Synchronization; | |
| Measuring Performance | slides notes | ||
| 6 | 4/ 10 | Code Design; | |
| Testing and Debugging | slides notes | ||
| 7 | 4/ 13 | The Memory Hiearchy | slides notes |
| 8 | 4/ 15 | Cache Coherence and Consistency | |
| False Sharing | slides notes | ||
| 9 | 4/ 17 | Memory consistency; sorting | |
| Barrier Synchronization | slides notes | ||
| 10 | 4/20 | Parallel Merge; | |
| Odd/Even Transposition sort; | |||
| Barrier Synchronization | slides notes | ||
| 11 | 4/22 | Implementing Synchronization; | |
| Condition Variables | slides notes | ||
| 12 | 4/24 | Midterm #1 Review | slides |
| 13 | 4/27 | Midterm #1 | |
| 14 | 4/29 | Condition variables; | |
| Introduction to OpenMP | slides notes | ||
| 15 | 4/29 | OpenMP: Work-sharing; | |
| Reduction; Applications | slides notes | ||
| 16 | 5/4 | Gaussian Elimination | slides notes |
| 17 | 5/6 | Partial Pivoting; | |
| C++ memory model (introduction) and Atomic types | slides notes | ||
| 18 | 5/8 | Memory Model (II); | |
| Implementing synchronization | slides notes | ||
| 19 | 5/11 | More on synchronization; | |
| Load Balancing | slides notes | ||
| 20 | 5/13 | NUMA Systems | slides notes |
| 21 | 5/15 | SSE and vectorization | slides notes |
| 22 | 5/18 | SSE and Floating Point Arithmetic | slides notes |
| 23 | 5/20 | Floating Point Arithmetic | slides notes |
| 24 | 5/22 | Midterm #2 Review | slides |
| 5/25 | No class. Memorial Day Holiday | ||
| 5/27 | Midterm #2 | ||
| 26 | 5/29 | Managing cache locality | slides notes |
| 27 | 6/1 | Graphical Processing Units (GPUs) | slides notes |
| 28 | 6/3 | GPU Programming | slides notes |
| 29 | 6/5 | Supercomputing/Final exam review | slides notes |
| 6/8 | Final Exam |