...
Instructor: | Prof. Vivek Sarkar, DH 31313080 | Graduate TA: | Kumud Bhandari | ||||
---|---|---|---|---|---|---|---|
| Please send all emails to comp322-staff at rice dot edu | Graduate TA: | Yunming Zhang | ||||
Assistant: | Sherry Nassar, sherry.nassar@ricePenny Anderson, anderson@rice.edu, DH 31373080 | Graduate TA: | TBD | ||||
Undergrad TA: | Rishi SurendranWenXuan Cai | ||||||
|
| Undergrad TA: | Annirudh PrasadKyle Kurihara | ||||
Cross-listing: | ELEC 323 | Undergrad TA: | Max Payton | ||||
|
| HJ consultants: | Vincent Cavé, Max Grossman, Shams Imam | ||||
Lectures: | Herzstein Hall 212 | Lecture times: | MWF 1:00 - 1:50pm | ||||
Labs: | Ryon 102Location TBD | Lab times: | TuesdayMonday, 4:00 - 5:15pm 30pm (Section 31, TAsLead TA: Kumud Bhandari, Yunming Zhang) | ||||
|
|
| Wednesday, 34:30 - 46:50pm 00pm (Section 2, TAs: Deepak Majeti, Sriraj Paul) |
|
|
| Thursday, 4:00 - 5:15pm (Section 1, TAs: Annirudh Prasad, Rishi Surendran)Lead TA: Kumud Bhandari) |
Course Objectives
The goal of COMP 322 is to introduce you to the fundamentals of parallel programming and parallel algorithms, using a pedagogic approach that exposes you to the intellectual challenges in parallel software without enmeshing you in the jargon and lower-level details of today's parallel systems. A strong grasp of the course fundamentals will enable you to quickly pick up any specific parallel programming model that you may encounter in the future, and also prepare you for studying advanced topics related to parallelism and concurrency in more advanced courses such as COMP 422.
To ensure that students get gain a strong grasp knowledge of parallel programming foundations, the classes and homeworks will place equal emphasis on advancing both theoretical theory and practical knowledgepractice. The programming component of the course work will initially use a simple parallel extension to the Java language called 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. Later in the The course , we will also introduce you to some real-world parallel programming models including Java Concurrency, .Net Task Parallel Library, MapReduce, CUDA and MPI. The use of Java will be confined to a subset of the Java language that should also be accessible to C programmers --- advanced Java features (e.g., wildcards in generics) will not be used, 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 ; any (Java or C). Any parallel programming primitives that you encounter in the future should be easily recognizable based on the primitives fundamentals studied in COMP 322.
Course Overview
COMP 322 provides the student with a comprehensive introduction to the building blocks of parallel software, which includes the following concepts:
...
These concepts will be introduced in four three modules:
- 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, false sharingdata movement, message-passing (MPI), communication overheads (bandwidth, latency), MapReduce, systolic arrays, accelerators, GPGPUs.Current Practice — today's Parallel Programming Models and Challenges: Java Concurrency, locks, condition variables, semaphores, memory consistency models, comparison of parallel programming models (.Net Task Parallel Library, OpenMP, CUDA, OpenCL); energy efficiency, data movement), MapReduce, accelerators, GPGPUs, CUDA, OpenCL, energy efficiency, resilience.
Prerequisite
The prerequisite course requirement is requirements are COMP 182 and COMP 215 or equivalent. This course COMP 322 should be accessible to anyone familiar with the foundations of sequential algorithms and data structures, and with basic Java programming. COMP 221 is also recommended as a co-requisite.
...
There are no required textbooks for the class. Instead, lecture handouts are provided for each module as follows:
- Module 1 handout (Deterministic Shared-Memory Parallelism)
- Module 2 handout handout (Nondeterministic Shared-Memory Parallelism and Concurrency)
- Module 3 handout (Distributed-Memory Parallelism and Locality)
- Module 4 handout (Current Practice — today's Parallel Programming Models and Challenges)
You are expected to read the relevant sections in each lecture handout before coming to the lecture. We will also provide a number of references in the slides and handouts.
...
- Java Concurrency in Practice by Brian Goetz with Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes and Doug Lea
- Principles of Parallel Programming by Calvin Lin and Lawrence Snyder
- The Art of Multiprocessor Programming by Maurice Herlihy and Nir Shavit
Past Offerings of COMP 322
...