...
Instructor: | Prof. Vivek Sarkar, DH 30803131 | Head TA: | Max Grossman |
---|---|---|---|
Admin Assistant: | Annepha Hurlock, annepha@rice.edu, DH 3080, 713-348-5186 | Graduate TAs: | Prasanth Chatarasi, Arghya Chatterjee, Yuhan Peng, Jonathan Sharman |
Co-Instructor: | Dr. Mackale Joyner | Undergraduate TAs: | Prudhvi Boyapalli, Peter Elmers, Nicholas Hanson-Holtry, Ayush Narayan, Timothy Newton, Alitha Partono, Tom Roush, Hunter Tidwell, Bing Xue |
Piazza site: | https://piazza.com/class/iirz0u74egl2q9 (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: | Herzstein Hall 210 | Lecture times: | MWF 1:00pm - 1:50pm (followed by group office hours during 2pm - 3pm, usually in DH 3092) |
Lab locations: | DH 1042, DH 1064 | Lab times: | Wednesday, 07:00pm - 08:30pm |
...
Week | Day | Date (2016) | Topic | Assigned Reading | Assigned Videos (Quizzes due by Friday of each week) | In-class Worksheets | Slides | Work Assigned | Work Due |
---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 09 | Lecture 1: Task Creation and Termination (Async, Finish) | Module 1: Section 1.1 | worksheet1 | lec1-slides |
|
| |
| Wed | Jan 11 | 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 |
|
|
Fri | Jan 13 | Lecture 3: Abstract Performance Metrics, Multiprocessor Scheduling | Module 1: Section 1.4 | Topic 1.4 Lecture, Topic 1.4 Demonstration | worksheet3 | lec3-slides | Homework 1 (2 weeks) | Lecture & demo quizzes for topics 1.1, 1.2, 1.3, 1.4 | |
2 | Mon | Jan 16 | No lecture, School Holiday (Martin Luther King, Jr. Day) | ||||||
| Wed | Jan 18 | Lecture 4: Parallel Speedup and Amdahl's Law | Module 1: Section 1.5 | Topic 1.5 Lecture, Topic 1.5 Demonstration | worksheet4 | lec4-slides | ||
| Fri | Jan 20 | Lecture 5: Future Tasks, Functional Parallelism | Module 1: Section 2.1 | Topic 2.1 Lecture , Topic 2.1 Demonstration | worksheet5 | lec5-slides | Lecture & demo quizzes for topics 1.5, 2.1 (topic 1.6 is optional) | |
3 | Mon | Jan 23 | Lecture 6: Memoization | Module 1: Section 2.2 | Topic 2.2 Lecture , Topic 2.2 Demonstration | worksheet6 | lec6-slides | ||
Wed | Jan 25 | Lecture 7: Finish Accumulators | Module 1: Section 2.3 | Topic 2.3 Lecture , Topic 2.3 Demonstration | worksheet7 | lec7-slides | |||
| Fri | Jan 27 | Lecture 8: 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 | worksheet8 | lec8-slides | (2 weeks) | Homework 1, Lecture & demo quizzes for topics 2.2, 2.3, 2.5, 2.6 |
4 | Mon | Jan 30 | Lecture 9: Map Reduce | Module 1: Section 2.4 | Topic 2.4 Lecture , Topic 2.4 Demonstration | worksheet9 | lec9-slides | ||
| Wed | Feb 01 | Lecture 10: Java’s Fork/Join Library | FJP chapter: Sections 7.3 & 7.5 | worksheet10 | lec10-slides | |||
| Fri | Feb 03 | 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 | Lecture & demo quizzes for topics 2.4, 3.1, 3.2, 3.3 | |
5 | Mon | Feb 06 | Lecture 12: Barrier Synchronization | Module 1: Section 3.4 | Topic 3.4 Lecture , Topic 3.4 Demonstration | worksheet12 | lec12-slides | ||
| Wed | Feb 08 | Lecture 13: 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 | worksheet13 | lec13-slides | Worksheet12.java | |
- | Fri | Feb 10 | Spring Recess | ||||||
6 | Mon | Feb 13 | Lecture 14: Data-Driven Tasks and Data-Driven Futures | Module 1: Section 4.5 | Topic 4.5 Lecture , Topic 4.5 Demonstration | worksheet14 | lec14-slides | (5 weeks, with two intermediate checkpoints) | Homework 2, Lecture & demo quizzes for topics |
| Wed | Feb 15 | Lecture 15: Phasers, Point-to-point Synchronization | Module 1: Sections 4.2, 4.3 | Topic 4.2 Lecture , Topic 4.2 Demonstration, Topic 4.3 Lecture, Topic 4.3 Demonstration | worksheet15 | lec15-slides | ||
| Fri | Feb 17 | Lecture 16: 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, | worksheet16 | lec16-slides | Lecture & demo quizzes for topics 4.1, 4.2, 4.3, 4.4 | |
7 | Mon | Feb 20 | Lecture 17: Midterm Summary | lec18-slides | |||||
| Wed | Feb 22 | Midterm Review (interactive Q&A only, no lecture) | Exam 1 held during lab time (7:00pm - 10:00pm), scope of exam limited to lectures 1-17 | |||||
| Fri | Feb 24 | Lecture 18: Abstract vs. Real Performance | worksheet17 | lec17-slides | Homework 3 Checkpoint-1, Lecture & demo quizzes for topic 4.6 | |||
8 | Mon | Feb 27 | Lecture 19: Task Scheduling Policies | Topic 4.6 Lecture , Topic 4.6 Demonstration | worksheet19 | lec19-slides | Lec19HelpFirstWorkStealing.java |
| |
| Wed | Mar 01 | Lecture 20: Critical sections, Isolated construct, Parallel Spanning Tree algorithm (start of Module 2) | Module 2: Sections 5.1, 5.2, 5.3, 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 | worksheet20 | lec20-slides |
| |
| Fri | Mar 03 | Lecture 21: Atomic variables, Read-Write Isolation | Module 2: Sections 5.4, 5.5 | Topic 5.4 Lecture, Topic 5.4 Demonstration, Topic 5.5 Lecture, Topic 5.5 Demonstration, Topic 5.6 Lecture, Topic 5.6 Demonstration | worksheet21 | lec21-slides | Homework 3 Checkpoint-2, Lecture & demo quizzes for topics 5.1 to 5.6 | |
9 | Mon | Mar 06 | Lecture 22: Parallelism in Java Streams, Parallel Prefix Sums
| worksheet22 | lec22-slides |
|
| ||
| Wed | Mar 08 | Lecture 23: Java Threads, Java synchronized statement | Topic 7.1 Lecture, Topic 7.2 Lecture | worksheet23 | lec23-slides |
|
| |
| Fri | Mar 10 | Lecture 24: Java synchronized statement (contd), wait/notify | Topic 7.3 Lecture | worksheet24 | lec24-slides |
| Homework 3, Lecture quizzes for topics 7.1 - 7.4 | |
- | M-F | Mar 13 - Mar 17 | Spring Break | ||||||
10 | Mon | Mar 20 | Lecture 25: Concurrent Objects, Linearizability of Concurrent Objects | Topic 7.4 Lecture | worksheet25 | lec25-slides | (3 weeks, with one intermediate checkpoint) |
| |
| Wed | Mar 22 | Lecture 26: Linearizability (contd), Java locks | Topic 7.3 Lecture (recap), Topic 7.4 Lecture (recap) | worksheet26 | lec26-slides |
| ||
| Fri | Mar 24 | Lecture 27: Parallel Design Patterns, Safety and Liveness Properties | Topic 7.5 Lecture | worksheet27 | lec27-slides | Lecture & demo quizzes for topics 7.5 | ||
11 | Mon | Mar 27 | Lecture 28: Actors | Topic 6.1 Lecture , Topic 6.1 Demonstration , Topic 6.2 Lecture, Topic 6.2 Demonstration, Topic 6.3 Lecture, Topic 6.3 Demonstration | worksheet28 | ||||
| Wed | Mar 29 | Lecture 29: Actors (contd) | Topic 6.4 Lecture , Topic 6.4 Demonstration , Topic 6.5 Lecture, Topic 6.5 Demonstration, Topic 6.6 Lecture, Topic 6.6 Demonstration | worksheet29 | lec29-slides | Lec29Slide2ThreadRing.java | ||
| FriApr | 01Mar 31 | Lecture 30: Java Synchronizers, Dining Philosophers Problem | Topic 7.6 Lecture | worksheet30 | lec30-slides | Lecture quiz for topic 7.6 | ||
12 | Mon | Apr 0403 | Lecture 31: Eureka-style Speculative Task Parallelism | worksheet31 | lec31-slides | Homework 4 Checkpoint-1 | |||
| Wed | Apr 0605 | Lecture 32: Task Affinity with Places (start of Module 3) | worksheet32 | lec32-slides |
|
| ||
| Fri | Apr 0807 | Lecture 33: Message Passing Interface (MPI) | worksheet33 | lec33-slides |
|
| ||
13 | Mon | Apr 1109 | Lecture 34: Message Passing Interface (MPI, contd) | worksheet34 | lec34-slides | Homework 4 | |||
| Wed | Apr 1312 | Lecture 35: GPU Computing | worksheet35 | lec35-slides | (Due April 22nd, with automatic extension till May 2nd after which slip days may be used) |
| ||
| Fri | Apr 1514 | Lecture 36: Partitioned Global Address Space (PGAS) programming models | worksheet36 | |||||
14 | Mon | Apr 18NO CLASS TODAY DUE TO INCLEMENT WEATHER17 | Lecture 37: Apache Spark framework | worksheet37 | lec37-slides |
| |||
| Wed | Apr 2019 | Lecture 38: Topic TBD 37: Apache Spark framework | worksheet37 | lec37-slides |
|
| ||
| Fri | Apr 2221 | Lecture 3839: Course Review (lectures 20-37), Last day of classes | lec38-slides | Homework 5 (automatic extension till May 2nd) | ||||
- | Mon | Apr 2524 | Review session / Office Hours, 1pm - 3pm, Herzstein 212 (different room from usual) | ||||||
- | Wed | Apr 2726 | Review session / Office Hours, 1pm - 3pm, Herzstein 212 (different room from usual) | ||||||
- | Thu | Apr 2928 | Review session / Office Hours, 1pm - 3pm, Herzstein 212 (different room from usual) | ||||||
- | Tue | May 3 | Scheduled final exam in Herzstein Hall Auditorium, 9am - 12noon, May 3rd (Exam 2 – scope of exam limited to lectures 2018-37), location and time TBD by registrar |
|
|
|
Lab Schedule
Lab # | Date (2015) | Topic | Handouts | Code Examples |
---|---|---|---|---|
0 | Infrastructure Setup | lab0-handout | - | |
1 | Jan 13 | Async-Finish Parallel Programming | lab1-handout, lab1-slides | lab_1.zip |
2 | Jan 20 | Abstract performance metrics with async & finish | lab2-handout, lab2-slides | lab_2.zip |
3 | Jan 27 | DIY HJ-lib Programming, Futures, HJ-Viz | lab3-handout, lab3-slides | lab_3.zip |
4 | Feb 03 | Finish Accumulators and Loop-Level Parallelism | lab4-handout and lab4-slides | lab_4.zip |
5 | Feb 10 | Loop Chunking and Barrier Synchronization | lab5-handout and lab5-slides | lab_5.zip |
6 | Feb 17 | Data-Driven Futures and Phasers | lab6-handout | lab_6.zip |
- | Feb 24 | No lab this week — Exam 1 | - | - |
- | Mar 02 | No lab this week — Spring Break | - | - |
7 | Mar 09 | Isolated Statement and Atomic Variables | lab7-handout | |
8 | Mar 16 | Java Threads | lab8-handout | |
9 | Mar 23 | Java Locks | lab9-handout | |
10 | Mar 30 | Actors and Selectors | lab10-handout | |
11 | Apr 06 | Eureka-style Speculative Task Parallelism | lab11-handout | |
12 | Apr 13 | Message Passing Interface (MPI) | lab12-handout | |
13 | Apr 20 | Apache Spark | lab13-handout |
...