...
Instructor: | Mackale Joyner, DH 20712063 | Head TA: | Srdan Milakovic |
---|---|---|---|
Co-Instructor: | Zoran Budimlić, DH 3134 | Graduate TAs: | Jonathan Sharman |
Admin Assistant: | Annepha Hurlock, annepha@rice.edu, DH 3122, 713-348-5186 | Undergraduate TAs: | Liam Bonnage, Harrison Brown, Mustafa El-Gamal, Krishna Goel, Ryan Green, Ryan Han, Rishu Harpavat, Namanh Kapur, Tian Lan, Tam Le, Eva Ma, Hamza Nauman, Rutvik Patel, Aryan Sefidi, Tory Songyang, Jiaqi Wang, Erik Yamada, Yifan Yang |
Piazza site: | https://piazza.com/class/jmwfpr1i85n7l4 (Piazza is the preferred medium for all course communications, but you can also send email to comp322-staff at rice dot edu if needed) | Cross-listing: | ELEC 323 |
Lecture location: | Herring Hall 100 | Lecture times: | MWF 1:00pm - 1:50pm |
Lab locations: | Herring Hall 100 | Lab times: | Thursday, 4:00pm - 4:50pm |
...
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:
- Module 1 handout (Parallelism)
- Module 2 handout handout (Concurrency)
- There is no lecture handout for Module 3 (Distribution and Locality). The instructors will refer you to optional resources to supplement the lecture slides and videos.
...
Week | Day | Date (2018) | Lecture | Assigned Reading | Assigned Videos (see Canvas site for video links) | In-class Worksheets | Slides | Work Assigned | Work Due |
---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 07 | Lecture 1: Task Creation and Termination (Async, Finish) | Module 1: Section 1.1 | worksheet1 | lec1-slides |
|
| |
| Wed | Jan 09 | 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 11 | 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 | Jan 14 | Lecture 4: Parallel Speedup and Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture, Topic 1.5 Demonstration | worksheet4 | lec4-slides | ||
| Wed | Jan 16 | 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 | Quiz for Unit 1 | |
| Fri | Jan 18 | Lecture 6: Memoization | Module 1: Section 2.2 | Topic 2.2 Lecture, Topic 2.2 Demonstration | worksheet6 | lec6-slides | ||
3 | Mon | Jan 21 | No lecture, School Holiday (Martin Luther King, Jr. Day) | ||||||
Wed | Jan 23 | Lecture 7: Finish Accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture, Topic 2.3 Demonstration | worksheet7 | lec7-slides | Homework 2 | Homework 1 | |
| Fri | Jan 25 | Lecture 8: Map Reduce | Module 1: Section 2.4 | Topic 2.4 Lecture, Topic 2.4 Demonstration | worksheet8 | lec8-slides |
| Quiz for Unit 1 |
4 | Mon | Jan 28 | Lecture 9: 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 | worksheet9 | lec9-slides | ||
| Wed | Jan 30 | Lecture 10: Java’s Fork/Join Library | Module 1: Sections 2.7, 2.8 | Topic 2.7 Lecture, Topic 2.8 Lecture, | worksheet10 | lec10-slides | Quiz for Unit 2 | |
| Fri | Feb 01 | Lecture 11: Loop-Level Parallelism, Parallel Matrix Multiplication, Iteration Grouping (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 | worksheet11 | lec11-slides | ||
5 | Mon | Feb 04 | Lecture 12: Barrier Synchronization | Module 1: Section 3.4 | Topic 3.4 Lecture , Topic 3.4 Demonstration | worksheet12 | lec12-slides | ||
Wed | Feb 06 | Lecture 13: Parallelism in Java Streams, Parallel Prefix Sums | Topic 3.7 Java Streams, Topic 3.7 Java Streams Demonstration | worksheet13 | lec13-slides | Homework 3 (includes 2 intermediate checkpoints) | Homework 2 | ||
- | Fri | Feb 08 | Spring Recess | ||||||
6 | Mon | Feb 11 | 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 | Quiz for Unit 2 |
| Wed | Feb 13 | Lecture 15: Data-Driven Tasks | Module 1: Section 4.5 | Topic 4.5 Lecture Topic 4.5 Demonstration | worksheet15 | lec15-slides | ||
| Fri | Feb 15 | Lecture 16: Point-to-point Synchronization with Phasers | Module 1: Sections 4.2, 4.3 | Topic 4.2 Lecture , Topic 4.2 Demonstration, Topic 4.3 Lecture, Topic 4.3 Demonstration | worksheet16 | lec16-slides | Quiz for Unit 3 | |
7 | Mon | Feb 18 | Lecture 17: Midterm Summary | lec17-slides | |||||
| Wed | Feb 20 | Midterm Review (interactive Q&A) | ||||||
| Fri | Feb 22 | Lecture 18: Abstract vs. Real Performance | worksheet18 | lec18-slides | Homework 3, Checkpoint-1 | |||
8 | Mon | Feb 25 | Lecture 19: 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, | worksheet19 | lec19-slides | Quiz for Unit 4 |
|
| Wed | Feb 27 | Lecture 20: Critical sections, Isolated construct, Parallel Spanning Tree algorithm, Atomic variables (start of Module 2) | Module 2: Sections 5.1, 5.2, 5.3, 5.4, 5.6 | Topic 5.1 Lecture, Topic 5.1 Demonstration, Topic 5.2 Lecture, Topic 5.2 Demonstration, Topic 5.3 Lecture, Topic 5.3 Demonstration, Topic 5.4 Lecture, Topic 5.4 Demonstration, Topic 5.6 Lecture, Topic 5.6 Demonstration | worksheet20 | lec20-slides |
| |
| Fri | Mar 01 | Lecture 21: Read-Write Isolation, Review of Phasers | Module 2: Section 5.5 | Topic 5.5 Lecture, Topic 5.5 Demonstration | worksheet21 | lec21-slides | Quiz for Unit 5 | Quiz for Unit 4 |
9 | Mon | Mar 04 | Lecture 22: Actors | Module 2: 6.1, 6.2 | Topic 6.1 Lecture , Topic 6.1 Demonstration , Topic 6.2 Lecture, Topic 6.2 Demonstration | worksheet22 | lec22-slides |
|
|
| Wed | Mar 06 | Lecture 23: Actors (contd) | Module 2: 6.3, 6.4, 6.5, 6.6 | Topic 6.3 Lecture, Topic 6.3 Demonstration, Topic 6.4 Lecture , Topic 6.4 Demonstration, Topic 6.5 Lecture, Topic 6.5 Demonstration, Topic 6.6 Lecture, Topic 6.6 Demonstration | worksheet23 | lec23-slides | Quiz for Unit 6 | Homework 3, Checkpoint-2 |
| Fri | Mar 08 | 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 5 | |
- | M-F | Mar 11 - Mar 15 | Spring Break | ||||||
10 | Mon | Mar 18 | Lecture 25: Java synchronized statement (contd), wait/notify | Module 2: 7.2 | Topic 7.2 Lecture | worksheet25 | lec25-slides |
| |
Wed | Mar 20 | Lecture 26: Java Locks, Linearizability of Concurrent Objects | Module 2: 7.3, 7.4 | Topic 7.3 Lecture, Topic 7.4 Lecture | worksheet26 | lec26-slides | Homework 4 (includes one intermediate checkpoint)
| Homework 3 (all) | |
| Fri | Mar 22 | Lecture 27: Safety and Liveness Properties, Java Synchronizers, Dining Philosophers Problem | Module 2: 7.5, 7.6 | Topic 7.5 Lecture, Topic 7.6 Lecture | worksheet27 | lec27-slides | Quiz for Unit 7 | Quiz for Unit 6 |
11 | Mon | Mar 25 | Lecture 28: Message Passing Interface (MPI), (start of Module 3) | Topic 8.1 Lecture, Topic 8.2 Lecture, Topic 8.3 Lecture, | worksheet28 | lec28-slides | |||
| Wed | Mar 27 | Lecture 29: Message Passing Interface (MPI, contd) | Topic 8.4 Lecture, Topic 8.5 Lecture, Topic 8 Demonstration Video | worksheet29 | lec29-slides | Quiz for Unit 8 | ||
| Fri | Mar 29 | Lecture 30: Distributed Map-Reduce using Hadoop and Spark frameworks | Topic 9.1 Lecture (optional, overlaps with video 2.4), Topic 9.2 Lecture, Topic 9.3 Lecture | worksheet30 | lec30-slides | Quiz for Unit 7 | ||
12 | Mon | Apr 01 | Lecture 31: TF-IDF and PageRank Algorithms with Map-Reduce | Topic 9.4 Lecture, Topic 9.5 Lecture, Unit 9 Demonstration | worksheet31 | lec31-slides | Quiz for Unit 9 |
| |
| Wed | Apr 03 | Guest Lecture |
| Homework 4 Checkpoint-1 | ||||
| Fri | Apr 05 | Lecture 32: Partitioned Global Address Space (PGAS) programming models | Lectures 10.1 - 10.5, Unit 10 Demonstration (all videos optional – unit 10 has no quiz) | worksheet32 | lec32-slides |
| Quiz for Unit 8 | |
13 | Mon | Apr 08 | Lecture 33: Combining Distribution and Multithreading | worksheet33 | lec33-slides |
| |||
| Wed | Apr 10 | Lecture 34: Task Affinity with Places | worksheet34 | lec34-slides | Homework 5 | Homework 4 (all) | ||
| Fri | Apr 12 | Lecture 35: Eureka-style Speculative Task Parallelism | worksheet35 | lec35-slides |
| Quiz for Unit 9 | ||
14 | Mon | Apr 15 | Lecture 36: Algorithms based on Parallel Prefix (Scan) operations | worksheet36 | lec36-slides |
| |||
| Wed | Apr 17 | Lecture 37: Algorithms based on Parallel Prefix (Scan) operations, contd. | worksheet37 | lec37-slides |
|
| ||
| Fri | Apr 19 | Lecture 38: Course Review (Lectures 1820-38) | lec38-slides | Homework 5 | ||||
- | |||||||||
...
Lab # | Date (2019) | Topic | Handouts | Examples |
---|---|---|---|---|
0 | Infrastructure Setup | lab0-handout | - | |
1 | Jan 10 | Async-Finish Parallel Programming with abstract metrics | lab1-handout | - |
2 | Jan 17 | Futures | lab2-handout | - |
3 | Jan 24 | Cutoff Strategy and Real World Performance | lab3-handout | - |
4 | Jan 31 | Java's ForkJoin Framework | lab4-handout handout | - |
- | Feb 7
| No lab this week - Spring Recess | - | |
5 | Feb 14 | DDFs
| lab5-handout | - |
6 | Feb 28 | Loop-level Parallelism | lab6-handout handout | lab6-intro |
7 | Mar 7 | Isolated Statement and Atomic Variables | lab7-handout | - |
- | Mar 14 | No lab this week - Spring Break | ||
8 | Mar 21 | Actors | lab8-handout | - |
9 | Mar 28 | Java Threads, Java Locks | lab9-handout | - |
10 | Apr 4 | Message Passing Interface (MPI) | lab10-handout | - |
11 | Apr 11 | Apache Spark | lab11-handout | - |
|
| Eureka-style Speculative Task Parallelism | ||
|
...