COMP 322: Fundamentals of Parallel Programming (Spring 2014)
Instructor: | Prof. Vivek Sarkar, DH 3080 | Graduate TA: | Kumud Bhandari |
---|---|---|---|
| Please send all emails to comp322-staff at rice dot edu | Graduate TA: | Rishi Surendran |
Assistant: | Penny Anderson, anderson@rice.edu, DH 3080 | Graduate TA: | Yunming Zhang |
Undergrad TA: | Wenxuan Cai | ||
|
| Undergrad TA: | Kyle Kurihara |
Cross-listing: | ELEC 323 | Undergrad TA: | Max Payton |
|
| Course consultants: | Vincent Cavé, Shams Imam, Maggie Tang, Bing Xue |
Lectures: | Herzstein Hall 212 | Lecture times: | MWF 1:00 - 1:50pm |
Labs: | Symonds II | Lab times: | Monday, 4:00 - 5:30pm (Section A01, Staff: Yunming, Kumud, Wenxuan, Maggie) |
|
|
| Wednesday, 4:30 - 6:00pm (Section A02, Staff: Rishi, Kyle, Max, Bing) |
...
To ensure that students gain a strong knowledge of parallel programming foundations, the classes and homeworks will place equal emphasis on both theory and practice. The programming component of the course will mostly use the Habanero-Java Library (HJ-lib) pedagogic extension to the Java language developed in the Habanero Multicore Software Research project at Rice University. The course will also introduce you to real-world parallel programming models including Java Concurrency, MapReduce, MPI, OpenCL and CUDA. An important goal is that, at the end of COMP 322, you should feel comfortable programming in any parallel language for which you are familiar with the underlying sequential language (Java or C). Any parallel programming primitives that you encounter in the future should be easily recognizable based on the fundamentals studied in COMP 322.
...
- Primitive constructs for task creation & termination, synchronization, task and data distribution
- Abstract models: parallel computations, computation graphs, Flynn's taxonomy (instruction vs. data parallelism), PRAM model
- Parallel algorithms for data structures that include arrays, lists, strings, trees, graphs, and key-value pairs
- Common parallel programming patterns including task parallelism, pipeline parallelism, data parallelism, divide-and-conquer parallelism, map-reduce, concurrent event processing including graphical user interfaces.
...
- Deterministic Shared-Memory Parallelism: creation and coordination of parallelism (async, finish), abstract performance metrics (work, critical paths), Amdahl's Law, weak vs. strong scaling, data races and determinism, data race avoidance (immutability, futures, accumulators, dataflow), deadlock avoidance, abstract vs. real performance (granularity, scalability), collective & point-to-point synchronization (phasers, barriers), parallel algorithms, systolic arrays.
- Nondeterministic Shared-Memory Parallelism and Concurrency: critical sections, atomicity, isolation, high level data races, nondeterminism, linearizability, liveness/progress guarantees, actors, request-response parallelism, Java Concurrency, locks, condition variables, semaphores, memory consistency models.
- Distributed-Memory Parallelism and Locality: memory hierarchies, cache affinity, data movement, message-passing (MPI), communication overheads (bandwidth, latency), MapReduce, accelerators, GPGPUs, CUDA, OpenCL, energy efficiency, resilience.
...
Lab # | Date (2014) | Topic | Handouts | Code Examples | |||||
---|---|---|---|---|---|---|---|---|---|
1 | Jan 13, 15 | Infrastructure setup, Async-Finish Parallel Programming | lab1-handout | HelloWorldError.java, ReciprocalArraySum.java | |||||
- | Jan 20, 22 | No lab this week — Jan 20 is Martin Luther King, Jr. Day | |||||||
2 | Jan 27, 29 | Abstract performance metrics with async & finish | lab2-handout | ArraySum1.java, Search2.java, ArraySumLoop.java, ArraySumRecursive.java | 2 | Jan 27, 29 | Abstract performance metrics with async & finish | ||
3 | Feb 03, 05 | Data race detection and repair | |||||||
4 | Feb 10, 12 | Futures, Finish Accumulators |
| ||||||
5 | Feb 17, 19 | Real performance, work-sharing and work-stealing runtimes | |||||||
6 | Feb 24, 26 | Barriers, Data-Driven Futures |
|
| |||||
- | Mar 03, 05 | No lab this week — Spring Break | |||||||
7 | Mar 10, 12 | Isolated Statement and Atomic Variables | |||||||
8 | Mar 17, 19 | Actors | |||||||
9 | Mar 24, 26 | Java Threads | |||||||
10 | Mar 31, Apr 02 | Java Locks | |||||||
11 | Apr 07, 09 | Message Passing Interface (MPI) | |||||||
12 | Apr 14, 16 | Map Reduce |
...