Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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: 

  1. 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.
  2. 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.
  3. 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.

...

...