COMP 322: Fundamentals of Parallel Programming (Spring
...
2018)
Instructor: | Prof. Vivek SarkarMackale Joyner, DH 31312071 | Head TA: | Max GrossmanAbbey Baker |
---|---|---|---|
Co-Instructor: | Dr. Mackale JoynerZoran Budimlić, DH 3081 | Graduate TAs: | Jonathan Sharman, Ryan Spring, Bing Xue, Lechen Yu |
Admin Assistant: | Annepha Hurlock, annepha@rice.edu, DH 30803122, 713-348-5186 | Undergraduate TAs: | Marc Canby, Anna Chi, Peter Elmers, Joseph Hungate, Cary Jiang, Gloria Kim, Kevin Mullin, Victoria Nazari, Ashok Sankaran, Sujay Tadwalkar, Anant Tibrewal, Eugene Wang, Yufeng Zhou Ashok Sankaran, Austin Bae, Avery Whitaker, Aydin Zanager, Eduard Danalache, Frank Chen, Harrison Brown, Jahid Adam, Jeemin Sim, Kitty Cai, Madison Lewis, Ryan Han, Teju Manchenella, Victor Gonzalez, Victoria Nazari |
Piazza site: | https://piazza.com/class/ixdqx0x3bjl6enj3w0pi8pl9s8s (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 |
Lab locations: | DH 1064, DH 1070 | Lab times: | Wednesday, 07:00pm - 08:30pm |
...
Finally, here are some additional resources that may be helpful for you:
- Slides titled "MPI-based Approaches for Java" by Bryan Carpenter
Past Offerings of COMP 322
- Spring 2017 (Rice University)
- Spring 2016 (Rice University)
- Spring 2015 (Rice University)
- Spring 2014 (Rice University)
- Spring 2013 (Rice University)
- Fall 2012 (Harvey Mudd College CS 181E, half-semester class, co-instructor: Prof. Ran Libeskind-Hadas)
- Spring 2012 (Rice University)
- Spring 2011 (Rice University)
- Fall 2009 (Rice University)
Lecture Schedule
Homework 4 (includes one intermediate checkpoint)
Week | Day | Date (20172018) | Lecture | Assigned Reading | Assigned Videos (see Canvas site for video links) | In-class Worksheets | Slides | Work Assigned | Work Due | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 0908 | Lecture 1: Task Creation and Termination (Async, Finish) | Module 1: Section 1.1 | worksheet1 | lec1-slides |
|
| |||||||||||||||||
| Wed | Jan 1110 | 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 1312 | 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 1615 | No lecture, School Holiday (Martin Luther King, Jr. Day) | ||||||||||||||||||||||
| Wed | Jan 1817 | 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 2019 | 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 | ||||||||||||||||||
3 | Mon | Jan 2322 | Lecture 6: Memoization | Module 1: Section 2.2 | Topic 2.2 Lecture, Topic 2.2 Demonstration | worksheet6 | lec6-slides | ||||||||||||||||||
Wed | Jan 2524 | 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 2726 | 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 3029 | 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 | ||||||||||||||||||
| WedFeb | 01Jan 31 | 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 | ||||||||||||||||||
| Fri | Feb 0302 | 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 0605 | Lecture 12: Barrier Synchronization | Module 1: Section 3.4 | Topic 3.4 Lecture , Topic 3.4 Demonstration | worksheet12 | lec12-slides | ||||||||||||||||||
Wed | Feb 0807 | Lecture 13: Parallelism in Java Streams, Parallel Prefix Sums | worksheet13 | lec13-slides | Homework 3 (includes two intermediate checkpoints) | Homework 2 | |||||||||||||||||||
- | Fri | Feb 1009 | Spring Recess | Quiz for Unit 2 | |||||||||||||||||||||
6 | Mon | Feb 1312 | 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 | ||||||||||||||||||
| Wed | Feb 1514 | Lecture 15: Data-Driven Tasks, Point-to-Point Synchronization with Phasers | Module 1: Sections 4.5, 4.2, 4.3 | Topic 4.5 Lecture Topic 4.5 Demonstration, Topic 4.2 Lecture , Topic 4.2 Demonstration, Topic 4.3 Lecture, Topic 4.3 Demonstration | worksheet15 | lec15-slides | ||||||||||||||||||
| Fri | Feb 1716 | Lecture 16: Phasers Review | Module 1: Sections 4.2 | Topic 4.2 Lecture , Topic 4.2 Demonstration | worksheet16 | lec16-slides | Quiz for Unit 3 | |||||||||||||||||
7 | Mon | Feb 2019 | Lecture 17: Midterm Summary | lec17-slides | |||||||||||||||||||||
| Wed | Feb 2221 | Midterm Review (interactive Q&A) | Exam 1 held during lab time (7:00pm - 10:00pm), scope of exam limited to lectures 1-16 | |||||||||||||||||||||
| Fri | Feb 2423 | Lecture 18: Abstract vs. Real Performance | worksheet18 | lec18-slides | Homework 3, Checkpoint-1 | |||||||||||||||||||
8 | Mon | Feb 2726 | 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 |
| |||||||||||||||||
| WedMar | 01Feb 28 | 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 0302 | 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 4 | |||||||||||||||||
9 | Mon | Mar 0605 | 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 0807 | 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 |
| Homework 3, Checkpoint-2 | ||||||||||||||||
| Fri | Mar 1009 | 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 13 12 - Mar 1716 | Spring Break | ||||||||||||||||||||||
10 | Mon | Mar 2019 | Lecture 25: Java synchronized statement (contd), wait/notify | Module 2: 7.2 | Topic 7.2 Lecture | worksheet25 | lec25-slides |
| |||||||||||||||||
Wed | Mar 2221 | 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 2423 | 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 6 | |||||||||||||||||
11 | Mon | Mar 2726 | 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 2928 | Lecture 29: Message Passing Interface (MPI, contd) | Topic 8.4 Lecture, Topic 8.5 Lecture, Topic 8 Demonstration Video | worksheet29 | lec29-slides |
| ||||||||||||||||||
| Fri | Mar 3130 | 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 0302 | Lecture 31: TF-IDF and PageRank Algorithms with Map-Reduce | Topic 9.4 Lecture, Topic 9.5 Lecture, Unit 9 Demonstration | worksheet31 | lec31-slides |
| ||||||||||||||||||
| Wed | Apr 0504 | Lecture 32: Partitioned Global Address Space (PGAS) programming models | worksheet32 | lec32-slides |
| Homework 4 Checkpoint-1 | ||||||||||||||||||
| Fri | Apr 0706 | Lecture 33: Combining Distribution and Multithreading | Lectures 10.1 - 10.5, Unit 10 Demonstration (all videos optional – unit 10 has no quiz) | worksheet33 | lec33-slides |
| Quiz for Unit 8 | |||||||||||||||||
13 | Mon | Apr 1009 | Lecture 34: Task Affinity with Places | worksheet34 | lec34-slides |
| |||||||||||||||||||
| Wed | Apr 1211 | Lecture 35: Eureka-style Speculative Task Parallelism | worksheet35 | lec35-slides |
| Homework 4 (all) | ||||||||||||||||||
| Fri | Apr 1413 | Lecture 36: Algorithms based on Parallel Prefix (Scan) operations | worksheet36 | lec36-slides | Homework 5 (Due April 21st, with automatic extension until May 1st after which slip days may be used) | Quiz for Unit Quiz for Unit 9 | ||||||||||||||||||
14 | Mon | Apr 1716 | Lecture 37: Algorithms based on Parallel Prefix (Scan) operations, contd. | worksheet37 | lec37-slides |
| |||||||||||||||||||
| Wed | Apr 1918 | Lecture 38: GPU Computing | worksheet38 | lec38-slides |
|
| ||||||||||||||||||
| Fri | Apr 2120 | Lecture 39: Course Review (Lectures 18-38) | lec39-slides | Homework 5 (automatic extension until May 1st, after which slip days may be used) | ||||||||||||||||||||
- | Mon | Apr 24 | Group Office Hours, 2pm - 3pm, DH 3092 | - | Wed | Apr 26 | Group Office Hours, 2pm - 3pm, DH 3092 | - | Fri | Apr 28 | Group Office Hours, 2pm - 3pm, DH 3076 | ||||||||||||||
- | Tue | May 2 | 9am - 12noon, scheduled final exam in Keck 100 (Exam 2 – scope of exam limited to lectures 18 - 38)
Lab Schedule
Lab # | Date (2017) | Topic | Handouts | Code Examples |
---|---|---|---|---|
0 | Infrastructure Setup | lab0-handout | - | |
1 | Jan 11 | Async-Finish Parallel Programming with abstract metrics | lab1-handout, lab1-slides | lab_1.zip |
2 | Jan 18 | Futures and HJ-Viz | lab2-handout, lab2-slides | lab_2.zip |
3 | Jan 25 | Cutoff Strategy and Real World Performance | lab3-handout, lab3-slides | lab_3.zip |
4 | Feb 01 | Java's ForkJoin Framework | lab4-handout, lab4-slides | lab_4.zip |
5 | Feb 08 | Loop-level Parallelism | lab5-handout, lab5-slides | lab_5.zip |
6 | Feb 15 | Phasers | lab6-handout | lab_6.zip |
- | Feb 22 | No lab this week — Exam 1 | - | - |
7 | Mar 01 | Isolated Statement and Atomic Variables | lab7-handout, lab7-slides | |
8 | Mar 08 | Actors | lab8-handout | |
- | Mar 15 | No lab this week — Spring Break | ||
9 | Mar 22 | Java Threads, Java Locks | lab9-handout | |
- | Mar 29 | No lab this week — Willy Week! | ||
10 | Apr 05 | Message Passing Interface (MPI) | lab10-handout | |
11 | Apr 12 | Apache Spark | lab11-handout | |
12 | Apr 19 | Eureka-style Speculative Task Parallelism | lab12-handout |
...