...
...
Instructor: | Mackale Joyner, DH 2063 | TAs: |
|---|
Elian Ahmar, Timothy Goh, Kelly Park, Tucker Reinhardt, Mantej Singh, Minh Vu, Thanh Vu, Robert Walsh, Frederick Wang, Xincheng Wang, Yidi Wang | | Admin Assistant: | Annepha Hurlock, annepha@rice.edu, DH 3122, 713-348-5186 | | |
Piazza site: | https://piazza.com/rice/spring2021/comp322 (Piazza is the preferred medium for all course communications) | Cross-listing: | ELEC 323 |
|---|
Lecture location: |
|---|
Fully OnlineHerzstein Amp | Lecture times: | MWF 1: |
|---|
30pm 225pm locationsFully Online timesTu 130pm 2:25pm (TV, MS, TG, RW)Th 4:50pm - 5:45pm (XW, TR, KP, YW, FW, EA)
...
...
To achieve these learning outcomes, each class period will include time for both instructor lectures and in-class exercises based on assigned reading and videos. The lab exercises will be used to help students gain hands-on programming experience with the concepts introduced in the lectures.
...
There are no required textbooks for the class. Instead, lecture handouts are provided for each module as follows. 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.The links to the latest versions of the lecture handouts are included below:
...
Week | Day | Date (2021 ) | Lecture | Assigned Reading | Assigned Videos (see Canvas site for video links) | In-class Worksheets | Slides | Work Assigned | Work Due |
|---|
| | Worksheet Solutions |
|
|---|
1 | Mon | Jan |
|---|
25Topic 1.1 Lecture, Topic 1.1 Demonstration Task Creation and Termination (Async, Finish)Module 1: Section 1.1 | slides | | | | | Wed | Jan 27 | Lecture 2: Computation Graphs, Ideal Parallelism | Module 1: Sections 1.2, 1.3 | Topic 1.2 Lecture, Topic 1.2 Demonstration, Topic 1.3 Lecture, Topic 1.3 Demonstration | worksheet2 | lec2-slides | Homework 1 | | | |
|---|
| | Fri | Jan 29 | Lecture 3: Abstract Performance Metrics, Multiprocessor Scheduling | Module 1: Section 1.4 | Topic 1.4 Lecture, Topic 1.4 Demonstration | worksheet3 | lec3-slides | | | | |
2 | Mon | Feb 01 | Lecture 4: Parallel Speedup and Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture, Topic 1.5 Demonstration | worksheet4 | lec4-slides | Quiz for Unit 1 | | | |
|---|
| Wed | Feb 03 | Lecture 5: Future Tasks, Functional Parallelism ("Back to the Future") | Module 1: Section 2.1 | Topic 2.1 Lecture, Topic 2.1 Demonstration | worksheet5 | lec5-slides | | | | |
|---|
| Fri | Feb 05 | Lecture 6: Finish Accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture, Topic 2.3 Demonstration | worksheet6 | lec6-slides | | Quiz for Unit 1 | | |
| 3 | Mon | Feb 08 | Lecture 7: Map Reduce | Module 1: Section 2.4 | Topic 2.4 Lecture, Topic 2.4 Demonstration | worksheet7 | lec7-slides | | | | |
| Wed | Feb 10 | Lecture 8: Data Races, Functional & Structural Determinism | Module 1: Section 2.5, 2.6 | Topic 2.5 Lecture, Topic 2.5 Demonstration, Topic 2.6 Lecture, Topic 2.6 Demonstration | worksheet8 | lec8-slides | Homework 2 | Homework 1 | | |
|---|
| Fri | Feb 12 | Lecture 9: Java’s Fork/Join Library | | Topic 2.7 Lecture, Topic 2.7 Demonstration, Topic 2.8 Lecture, Topic 2.8 Demonstration | worksheet9 | lec9-slides | Quiz for Unit 2 | | | |
|---|
4 | Mon | Feb 15 | No class (weather) | | | | | | | | |
|---|
| | Wed | Feb 17 | Spring "Sprinkle" Day (no class) | | | | | | | | |
| | Fri | Feb 19 | No class (weather) | | | | | | | | |
5 | Mon | Feb 22 | | slides |
|
| WS1-solution |
|
| Wed | Jan 15 | Lecture 2: Functional Programming |
|
| worksheet2 | lec02-slides |
|
| WS2-solution |
|
|---|
| Fri | Jan 17 | Lecture 3: Higher order functions |
|
| worksheet3 | lec3-slides |
|
| WS3-solution |
|
2 | Mon | Jan 20 | No class: MLK |
|
|
|
|
|
|
|
|
|---|
| Wed | Jan 22 | Lecture 4: Lazy Computation |
|
| worksheet4 | lec4-slides |
|
| WS4-solution |
|
|---|
| Fri | Jan 24 | Lecture 5: Java Streams |
|
| worksheet5 | lec5-slides | Homework 1 |
| WS5-solution |
|
| 3 | Mon | Jan 27 | Lecture 6: Map Reduce with Java Streams | Module 1: Section 2.4 | Topic 2.4 Lecture, Topic 2.4 Demonstration | worksheet6 | lec6-slides |
|
| WS6-solution |
|
| Wed | Jan 29 | Lecture 7: Futures | Module 1: Section 2.1 | Topic 2.1 Lecture , Topic 2.1 Demonstration | worksheet7 | lec7-slides |
|
| WS7-solution |
|
|---|
| Fri | Jan 31 | Lecture 8: Async, Finish, Computation Graphs | Module 1: Sections 1.1, 1.2 | Topic 1.1 Lecture, Topic 1.1 Demonstration, Topic 1.2 Lecture, Topic 1.2 Demonstration | worksheet8 | lec8-slides |
|
| WS8-solution |
|
|---|
4 | Mon
| Feb 03 | Lecture 9: Ideal Parallelism, Data-Driven Tasks | Module 1: Section 1.3, 4.5
| Topic 1.3 Lecture, Topic 1.3 Demonstration, Topic 4.5 Lecture, Topic 4.5 Demonstration | worksheet9 | lec9-slides |
|
| WS9-solution |
|
|---|
| Wed | Feb 05 | Lecture 10: Event-based programming model
|
|
| worksheet10 | lec10-slides |
| Homework 1 | WS10-solution |
|
| Fri | Feb 07 | Lecture 11: GUI programming, Scheduling/executing computation graphs
| Module 1: Section 1.4 | Topic 1.4 Lecture , Topic 1.4 Demonstration | worksheet11 | lec11-slides | Homework 2 |
| WS11-solution |
|
| 5 | Mon | Feb 10 | Lecture 12: Abstract performance metrics, Parallel Speedup, Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture , Topic 1.5 Demonstration | worksheet12 | lec12-slides |
|
| WS12-solution |
|
| Wed | Feb 12 | Lecture 13: Accumulation and reduction. Finish accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture Topic 2.3 Demonstration | worksheet13 | lec13-slides | |
| WS13-solution |
|
|---|
| Fri | Feb 14 | No class: Spring Recess
|
|
|
|
|
|
|
|
|
|---|
| 6 | Mon | Feb 17 | Lecture 14: Data Races, Functional & Structural Determinism | Module 1: Sections 2.5, 2.6 | Topic 2.5 Lecture , Topic 2.5 Demonstration, Topic 2.6 Lecture, Topic 2.6 Demonstration | worksheet14 | lec14-slides |
|
| WS14-solution |
|
| Wed | Feb 19 | Lecture 15: Limitations of Functional parallelism. Abstract vs. real performance. Cutoff Strategy |
|
| worksheet15 | lec15-slides |
| Homework 2 | WS15-solution |
|
|---|
| Fri | Feb 21 | Lecture 16: Recursive Task Parallelism |
|
| worksheet16 | lec16-slides | Homework 3 |
| WS16-solution |
|
7 | Mon | Feb 24 | Lecture 17: Midterm Review |
|
|
| lec17-slides |
|
|
|
|
|---|
| Wed | Feb 26 | Lecture 18: Midterm Review |
|
|
| lec18-slides |
|
|
|
|
|---|
| Fri | Feb 28 | Lecture 19: Fork/Join programming model |
| Topic 2.7 Lecture, Topic 2.7 Demonstration, Topic 2.8 Lecture, Topic 2.8 Demonstration | worksheet19 | lec19-slides |
|
| WS19-solution |
|
|---|
8 | Mon | Mar 03 | Lecture 20: Data-Parallel Programming model. Loop-Level Parallelism, Loop Chunking |
|---|
Lecture 10: Loop-Level Parallelism, Parallel Matrix Multiplication | Module 1: Sections 3.1, 3.2, 3.3 | Topic 3.1 Lecture, Topic 3.1 Demonstration , Topic 3.2 Lecture, Topic 3.2 Demonstration, Topic 3.3 Lecture, Topic 3. |
2 worksheet10lec10 | | |
|
| WS20-solution |
|
| Wed | Mar 05 | Lecture 21: Barrier Synchronization with Phasers |
|---|
| Wed | Feb 24 | Lecture 11: Iteration Grouping (Chunking), Barrier Synchronization 3, 3.4Topic 3.3 Lecture , Topic 3.3 Demonstration, worksheet11lec11 | Fri | Feb 26 | Lecture 12: Data-Driven Tasks | | | | |
|
| WS21-solution |
|
| Fri | Mar 07 | Lecture 22:Stencil computation. Point-to-point Synchronization with Phasers |
|---|
52, 4.3 | Topic 4.2 Lecture, Topic 4.2 Demonstration, |
5 5 worksheet12lec12 | Quiz for Unit 2 | | | 6 01Spring "Sprinkle" Day (no class) | | | | | | | | | | Wed | Mar 03 | Lecture 13: Parallelism in Java Streams, Parallel Prefix Sums | Module 1: Sections 3.7 | Topic 3.7 Lecture , Topic 3.7 Demonstration | worksheet13 | 10 | Lecture 23: Fuzzy Barriers with Phasers | Module 1: Section 4.1 | Topic 4.1 Lecture, Topic 4.1 Demonstration | worksheet23 | lec23 |
lec13includes one intermediate checkpoint
Homework 2 | | | | | Fri | Mar 05 | Lecture 14: Iterative Averaging Revisited, SPMD pattern | Module 1: Sections 3.5, 3.6 | Topic 3.5 Lecture , Topic 3.5 Demonstration , Topic 3.6 Lecture, Topic 3.6 Demonstration | worksheet14 | lec14-slides | Quiz for Unit 3 | | | |
7 | Mon | Mar 08 | Lecture 15: Point-to-point Synchronization with Phasers | Module 1: Section 4.2, 4.3 | Topic 4.2 Lecture , Topic 4.2 Demonstration, Topic 4.3 Lecture, Topic 4.3 Demonstration | worksheet15 | lec15-slides | | | | |
|---|
| Wed | Mar 10 | Lecture 16: Midterm Review | | | | lec16-slides | | | | |
|---|
| Fri | Mar 12 | Lecture 17: Pipeline Parallelism, Signal Statement, Fuzzy Barriers | Module 1: Sections 4.4, 4.1 | Topic 4.4 Lecture , Topic 4.4 Demonstration, Topic 4.1 Lecture, Topic 4.1 Demonstration | worksheet17 | lec17-slides | | | | |
|---|
8 | Mon | Mar 15 | Lecture 18: Abstract vs. Real Performance | | | worksheet18 | lec18-slides | Quiz for Unit 4 | Quiz for Unit 3 | | |
|---|
| Wed | Mar 17 | Lecture 19: Critical Sections, Isolated construct (start of Module 2) | Module 2: Sections 5.1, 5.2, 5.6, | Topic 5.1 Lecture, Topic 5.1 Demonstration, Topic 5.2 Lecture, Topic 5.2 Demonstration, Topic 5.6 Lecture, Topic 5.6 Demonstration | worksheet19 | lec19-slides | | | | |
|---|
| Fri | Mar 19 | Lecture 20: Parallel Spanning Tree algorithm, Atomic variables | Module 2: Sections 5.3, 5.4, 5.5 | Topic 5.3 Demonstration, Topic 5.4 Lecture, Topic 5.4 Demonstration, Topic 5.5 Lecture, Topic 5.5 Demonstration | worksheet20 | lec20-slides | | Quiz for Unit 4 | | |
|---|
9 | Mon | Mar 22 | Lecture 21: Actors | Module 2: 6.1, 6.2 | Topic 6.1 Lecture , Topic 6.1 Demonstration , Topic 6.2 Lecture, Topic 6.2 Demonstration | worksheet21 | lec21-slides | Quiz for Unit 5 | | | |
|---|
| Wed | Mar 24 | Lecture 22: Actors (contd) | Module 2: 6.3, 6.4 | Topic 6.3 Lecture, Topic 6.3 Demonstration, Topic 6.4 Lecture , Topic 6.4 Demonstration | worksheet22 | lec22-slides | | Homework 3, Checkpoint-1 | | |
|---|
| Fri | Mar 26 | Spring "Sprinkle" Day (no class) | | | | | | | | |
|---|
| 10 | Mon | Mar 29 | Lecture 23: Actors (contd) | Module 2: 6.5, 6.6 | Topic 6.5 Lecture, Topic 6.5 Demonstration, Topic 6.6 Lecture, Topic 6.6 Demonstration | worksheet23 | lec23-slides | | Quiz for Unit 5 | | |
| | Wed | Mar 31 | Lecture 24: Java Threads, Java synchronized statement | Module 2: 7.1, 7.2 | Topic 7.1 Lecture, Topic 7.2 Lecture | worksheet24 | lec24-slides | Quiz for Unit 6 | | | |
| Fri | Apr 02 | Lecture 25: Java Threads, Java synchronized statement (contd), wait/notify | Module 2: 7.1, 7.2 | Topic 7.1 Lecture, Topic 7.2 Lecture | worksheet25 | lec25-slides | | | | |
|---|
11 | Mon | Apr 05 | Lecture 26: TBD | | | | lec26-handout | Homework 4 (includes one intermediate checkpoint) | Homework 3 (all) | | |
|---|
| Wed | Apr 07 | Lecture 27: Java Locks | Module 2: 7.3 | Topic 7.3 Lecture | | lec27-slides | | | | |
|---|
| Fri | Apr 09 | Lecture 28: Linearizability of Concurrent Objects | Module 2: 7.4 | Topic 7.4 Lecture | | lec28-slides | | | | |
12 | Mon | Apr 12 | Lecture 30: Safety and Liveness Properties, Java Synchronizers, Dining Philosophers Problem | Module 2: 7.5, 7.6 | Topic 7.5 Lecture, Topic 7.6 Lecture | | lec30-slides | Quiz for Unit 7 | Quiz for Unit 6 | | |
|---|
| Wed | Apr 14 | Lecture 31: Message Passing Interface (MPI), (start of Module 3) | | Topic 8.1 Lecture, Topic 8.2 Lecture, Topic 8.3 Lecture | | lec31-slides | | | | |
|---|
| Fri | Apr 16 | Lecture 32: Message Passing Interface (MPI, contd) | | Topic 8.4 Lecture | | lec32-slides | | Quiz for Unit 7 | | |
|---|
13 | Mon | Apr 19 | Lecture 33: Message Passing Interface (MPI, contd) | | Topic 8.5 Lecture, Topic 8 Demonstration Video | | lec33-slides | | Homework 4 Checkpoint-1 | | |
|---|
| Wed | Apr 21 | Lecture 34: Task Affinity with Places | | | | lec34-slides | Quiz for Unit 8 | | | |
|---|
| Fri | Apr 23 | Lecture 35: Eureka-style Speculative Task Parallelism | | | | lec35-slides | | | | |
|---|
14 | Mon | Apr 26 | Lecture 36: Algorithms based on Parallel Prefix (Scan) operations | | | | lec36-slides | | | | |
|---|
| | Wed | Apr 28 | Lecture 37: Course Review (Lectures 19-34) | | | | lec37-slides | | Homework 4 (all) | | |
| | Fri | Apr 30 | TBD | | | | | | Quiz for Unit 8 | | |
Lab # | Date (2025) | Topic | Handouts | Examples |
|---|
1 | Jan 13 | Infrastructure setup | lab0-handout lab1-handout |
|
|---|
| - | Jan 20 | No lab this week (MLK) |
|
|
|---|
| 2 | Jan 27 | Functional Programming | lab2-handout |
|
|---|
3 | Feb 03 | | lab3-handout
|
|
|---|
| 4 | Feb 10 | Data-Driven Tasks | lab4-handout |
|
|---|
- | Feb 17 | |
|
|
|---|
| - | Feb 24 | No lab this week (Midterm Exam) |
|
|
|---|
| 5 | Mar 03 | Loop Parallelism | lab5-handout | image kernels |
|---|
| 6 | Mar 10 | Recursive Task Cutoff Strategy | lab6-handout |
|
|---|
| - | Mar 17 | No lab this week (Spring Break) |
|
|
|---|
| 7 | Mar 24 | Java Threads | lab7-handout |
|
|---|
| - | Mar 31 | No lab this week |
|
|
|---|
| 8 | Apr 07 | Concurrent Lists | lab8-handout |
|
|---|
| 9 | Apr 14 | Actors | lab9-handout |
|
|---|
- | Apr 21 | No lab this week |
|---|
Lab # | Date (2021) | Topic | Handouts | Examples |
|---|
| 0 | | Infrastructure Setup | lab0-handout | |
|---|
1 | Jan 26 | Async-Finish Parallel Programming with abstract metrics | lab1-handout
| |
|---|
| - | Feb 02 | No lab this week | | |
|---|
2 | Feb 09 | | lab2-handout
| |
|---|
| - | Feb 16 | No lab this week (classes cancelled) | | |
|---|
3 | Feb 23 | Cutoff Strategy and Real World Performance | lab3-handout | |
|---|
| 4 | Mar 02 | DDFs | lab4-handout | |
|---|
| - | Mar 09 | No lab this week (Midterm exam) | | |
|---|
| - | Mar 16 | No lab this week (Spring "Sprinkle" Day) | | |
|---|
| 5 | Mar 23 | Loop-level Parallelism | lab5-handout | lab5-intro |
|---|
6 | Mar 30 | Isolated Statement and Atomic Variables | lab6-handout | |
|---|
| - | Apr 06 | No lab this week (Spring "Sprinkle" Day) | | |
|---|
| - | | Actors | | |
|---|
| - | | Java Threads, Java Locks | | |
|---|
- | | Message Passing Interface (MPI) | | |
|---|
- | | Apache Spark | | |
|---|
- | | Eureka-style Speculative Task Parallelism | | |
|---|
- | | Java's ForkJoin Framework | | ...
...