...
COMP 322: Fundamentals of Parallel Programming (Spring 2023)
Instructor: | Mackale Joyner, DH 2063 | TAs: | Mohamed Abead, Chase Hartsell, Taha Hasan, Harrison Huang, Jerry Jiang, Jasmine Lee, Michelle Lee, Hung Nguyen, Quang Nguyen, Ryan Ramos, Oscar Reynozo, Delaney Schultz, Tina Wen, Raiyan Zannat, Kailin Zhang |
---|---|---|---|
Piazza site: | https://piazza.com/rice/spring2022spring2023/comp322 (Piazza is the preferred medium for all course communications) | Cross-listing: | ELEC 323 |
Lecture location: | TBD | Lecture times: | MWF 1:00pm - 1:50pm |
Lab locations: | TBD | Lab times: | Mon 3:00pm - 3:50pm () Tue 4:00pm - 4:50pm () |
...
- Fork-Join Parallelism with a Data-Structures Focus (FJP) by Dan Grossman (Chapter 7 in Topics in Parallel and Distributed Computing)
- 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
Lecture Schedule
...
Week | Day | Date (20222023) | Lecture | Assigned Reading | Assigned Videos (see Canvas site for video links) | In-class Worksheets | Slides | Work Assigned | Work Due | Worksheet Solutions | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 09 | Lecture 1: Introduction |
| worksheet1 | lec1-slides |
| WS1-solution | ||||||||||||
Wed | Jan 11 | Lecture 2: Functional Programming | GList.java | worksheet2 | lec02-slides |
| WS2-solution | |||||||||||||
Fri | Jan 13 | Lecture 3: Higher order functions | worksheet3 | lec3-slides |
| WS3-solution | ||||||||||||||
2 | Mon | Jan 16 | No class: MLK | |||||||||||||||||
| Wed | Jan 18 | Lecture 4: Lazy Computation | LazyList.java Lazy.java | worksheet4worksheet4 | lec4-slides | WS4-solution | |||||||||||||
Fri | Jan 20 | Lecture 5: Java Streams | worksheet5 | lec5-slides | Homework 1 | WS5-solution | ||||||||||||||
3 | Mon | Jan 23 | 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 25 | Lecture 7: Futures | Module 1: Section 2.1 | Topic 2.1 Lecture , Topic 2.1 Demonstration | worksheet7 | lec7-slides |
| WS7-solution | ||||||||||||
| Fri | Jan 27 | Lecture 8: 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 | worksheet8 | lec8-slides | WS8-solution | ||||||||||||
4 | Mon | Jan 30 | Lecture 9: Async, Finish, Data-Driven Tasks | Module 1: Section 1.1, 4.5 | Topic 1.1 Lecture, Topic 1.1 Demonstration, Topic 4.5 Lecture, Topic 4.5 Demonstration | worksheet9 | lec9-slides | WS9-solution | ||||||||||||
Wed | Feb 01 | Lecture 10: Event-based programming model
| worksheet10 | lec10-slides | Homework 1 | WS10-solution | ||||||||||||||
Fri | Fri | Feb 03 | Lecture 11: GUI programming as an example of event-based, futures/callbacks in GUI programming | worksheet11 | lec11-slides | Homework 2 | WS11-solution | |||||||||||||
5 | Mon | Feb 06 | Lecture 12: Scheduling/executing computation graphs Abstract performance metrics | Module 1: Section 1.4 | Topic 1.4 Lecture , Topic 1.4 Demonstration | worksheet12 | lec12-slides | WS12-solution | ||||||||||||
Wed | Feb 08 | Lecture 13: Parallel Speedup, Critical Path, Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture , Topic 1.5 Demonstration | worksheet13 | lec13-slides | WS13-solution | |||||||||||||
Fri | Feb 10 | No class: Spring Recess
| ||||||||||||||||||
6 | Mon | Feb 13 | Lecture 14: Accumulation and reduction. Finish accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture Topic 2.3 Demonstration | worksheet14 | lec14-slides | WS14-solution | ||||||||||||
| Wed | Feb 15 | Lecture 15: Recursive Task Parallelism |
| worksheet15 | lec15-slides |
| WS15-solution | ||||||||||||
FriFri | Feb 17 | Lecture 16: 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 | worksheet16 | lec16-slides | Homework 3 | Homework 2 | WS16-solution | |||||||||||
7 | Mon | Feb 20 | Lecture 17: Midterm Review | lec17-slides | ||||||||||||||||
Wed | Feb 22 | Lecture 18: Limitations of Functional parallelism. | worksheet18 | lec18-slides | WS18-solution | |||||||||||||||
| Fri | Feb 24 | Lecture 19: Fork/Join programming model. OS Threads. Scheduler Pattern | Topic 2.7 Lecture, Topic 2.7 Demonstration, Topic 2.8 Lecture, Topic 2.8 Demonstration, | worksheet19 | lec19-slides | WS19-solution | |||||||||||||
8 | Mon | Feb 27 | Lecture 20: Confinement & Monitor Pattern. Critical sections | 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 | worksheet20 | lec20-slides | WS20-solution | ||||||||||||
| Wed | Mar 01 | Lecture 21: Atomic variables, Synchronized statements | Module 2: Sections 5.4, 7.2 | Topic 5.4 Lecture, Topic 5.4 Demonstration, Topic 7.2 Lecture | worksheet21 | lec21-slides | WS21-solution | ||||||||||||
| Fri | Mar 03 | Lecture 22: Parallel Spanning Tree, other graph algorithms | worksheet22 | lec22-slides | Homework 4 | Homework 3 | WS22-solution | ||||||||||||
9 | Mon | Mar 06 | Lecture 23: Java Threads and Locks | Module 2: Sections 7.1, 7.3 | Topic 7.1 Lecture, Topic 7.3 Lecture | worksheet23 | lec23-slides |
| WS23-solution | |||||||||||
| Wed | Mar 08 | Lecture 24: Java Locks - Soundness and progress guarantees | Module 2: 7.5 | Topic 7.5 Lecture | worksheet24 | lec24-slides | WS24-solution | ||||||||||||
Fri | Mar 10 | Lecture 25: Dining Philosophers Problem | Module 2: 7.6 | Topic 7.6 Lecture | worksheet25 | lec25-slides |
| WS25-solution | ||||||||||||
Mon | Mar 13 | No class: Spring Break |
| |||||||||||||||||
Wed | Mar 15 | No class: Spring Break |
| |||||||||||||||||
Fri | Mar 17 | No class: Spring Break |
| |||||||||||||||||
10 | Mon | Mar 20 | Lecture 26: N-Body problem, applications and implementations |
| worksheet26 | lec26-slides | WS26-solution | |||||||||||||
Wed | Mar 22 | Lecture 27: Read-Write Locks, Linearizability of Concurrent Objects | Module 2: 7.3, 7.4 | Topic 7.3 Lecture, Topic 7.4 Lecture | worksheet27 | lec27-slides |
| WS27-solution | ||||||||||||
Fri | Mar 24 | Lecture 28: Message-Passing programming model with Actors | Module 2: 6.1, 6.2 | Topic 6.1 Lecture, Topic 6.1 Demonstration, Topic 6.2 Lecture, Topic 6.2 Demonstration | worksheet28 | lec28-slides |
|
| WS28-solution | |||||||||||
11 | Mon | Mar 27 | Lecture 29: Active Object Pattern. Combining Actors with task parallelism | Module 2: 6.3, 6.4 | Topic 6.3 Lecture, Topic 6.3 Demonstration, Topic 6.4 Lecture, Topic 6.4 Demonstration | worksheet29 | lec29-slides |
| WS29-solution | |||||||||||
| Wed | Mar 29 | Lecture 30: Task Affinity and locality. Memory hierarchy |
| worksheet30 | lec30-slides |
| WS30-solution | ||||||||||||
Fri | Mar 31 | Lecture 31: Data-Parallel Programming model. Loop-Level Parallelism, Loop Chunking | 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.3 Demonstration | worksheet31 | lec31-slides | Homework 5 | Homework 4 | WS31-solution | |||||||||||
12 | Mon | Apr 03 | Lecture 32: Barrier Synchronization with Phasers | Module 1: Section 3.4 | Topic 3.4 Lecture, Topic 3.4 Demonstration | worksheet32 | lec32-slides |
|
| WS32-solution | ||||||||||
Wed | Apr 05 | Lecture 33: Stencil computation. 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 | worksheet33 | lec33-slides |
| WS33-solution | ||||||||||||
Fri | Apr 07 | Lecture 34: Fuzzy Barriers with Phasers | Module 1: Section 4.1 | Topic 4.1 Lecture, Topic 4.1 Demonstration | worksheet34 | lec34-slides | WS34-solution | |||||||||||||
13 | Mon | Apr 10 | Lecture 35: Eureka-style Speculative Task Parallelism | worksheet35 | lec35-slides |
| WS35-solution | |||||||||||||
Wed | Apr 12 | Lecture 36: Scan Pattern. Parallel Prefix Sum | worksheet36 | lec36-slides | WS36-solution | |||||||||||||||
Fri | Apr 14 | Lecture 37: Parallel Prefix Sum applications | worksheet37 | lec37-slides | ||||||||||||||||
14 | Mon | Apr 17 | Lecture 38: Overview of other models and frameworks | lec38-slides | ||||||||||||||||
Wed | Apr 19 | Lecture 39: Course Review (Lectures 19-38) | ) | lec39-slides | ||||||||||||||||
Fri | Apr 21 | Lecture 40: Course Review (Lectures 19-38) | lec40-slides | Homework 5 |
Lab Schedule
Lab # | Date (2023) | Topic | Handouts | Examples | ||
---|---|---|---|---|---|---|
1 | Jan 09 | Infrastructure setup | lab0-handout lab1-handout | |||
- | Jan 16 | No lab this week (MLK) | ||||
2 | Jan 23 | Functional Programming | lab2-handout | |||
3 | Jan 30 | Java Streams | lab3-handout | |||
4 | Feb 06 | Futures | lab4-handout | |||
5 | Feb 13 | Data-Driven Tasks | lab5-handout | |||
- | Feb 20 | No lab this week (Midterm) | ||||
6 | Feb 27 | Async / Finish | lab6-handout | |||
7 | Mar 06 | Recursive Task Cutoff Strategy | lab7-handout | |||
- | Mar 13 | No lab this week (Spring Break) | ||||
8 | Mar 20 | Java Threads | lab8-handout | |||
9 | Mar 27 | Concurrent Lists | lab9-handout | |||
10 | Apr 03 | Actors | lab10-handout | |||
11 | Apr 10 | Loop Parallelism | lab11-handout | |||
- | Apr 17 | No lab this week |
Grading, Honor Code Policy, Processes and Procedures
...