...
Instructor: | Prof. Vivek Sarkar, DH 3131 | Graduate TA: | Sanjay Chatterjee Rishi Surendran |
---|---|---|---|
| Please send all emails to comp322-staff at rice dot edu | Graduate TA: | |
Assistant: | Amanda Nokleby, akn3@rice.edu, DH 3137 | Graduate TA: | |
Undergrad | Graduate TA: | Max GrossmanKumud Bhandari | |
|
| Undergrad TA: | Damien StoneYunming Zhang |
Cross-listing: | ELEC 323 | Undergrad TA: | Yunming ZhangAnnirudh Prasad |
|
| Research Programmer: | Vincent Cavé |
Lectures: | Brockman 101 (new location effective 1/18/2012)Herzstein Hall 212 | Lecture times: | MWF 1:00 - 1:50pm |
Labs: | Ryon 102 | Lab times: | Tuesday, 4:00 - 5:20pm 15pm (Section 3) |
|
|
| Wednesday, 3:30 - 4:50pm (Section 2) |
|
|
| Thursday, 4:00 - 5:20pm 15pm (Section 1) |
Introduction
The goal of COMP 322 is to introduce you to the fundamentals of parallel programming and parallel algorithms, using a pedagogical approach that exposes you to the intellectual challenges in parallel software without enmeshing you in low-level details of different parallel systems. To that end, the main pre-requisite course requirement is COMP 215 or equivalent. This course should be accessible to anyone familiar with the foundations of sequential algorithms and data structures, and with basic Java programming. COMP 221 is also recommended as a co-requisite.
...
Lecture Schedule
| Day | Date (20122013) | Topic | Slides | Audio (Panopto) | Code Examples | Homework Assigned | Homework Due | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 7 | Lecture 1: The What and Why of Parallel Programming |
|
|
|
|
| |||||||||
2 | Wed | Jan 9 | Lecture 2: Async-Finish Parallel Programming and Computation Graphs |
| PrimeSieve.hj |
|
| ||||||||||
3 | Fri | Jan 11 | Lecture 3: Computation Graphs, Abstract Performance Metrics, Array Reductions | HW1 | |||||||||||||
4 | Mon | Jan 14 | Lecture 4: Parallel Speedup, Efficiency, Amdahl's Law | lec4-audio | |||||||||||||
5 | Wed | Jan 16 | Lecture 5: Data & Control Flow with Async Tasks, Data Races | (See Lab 3) | |||||||||||||
6 | Fri | Jan 18 | Lecture 6: Memory Models, Atomic Variables | (See Lab 3) | |||||||||||||
- | Mon | Jan 1421 | School Holiday | ||||||||||||||
7 | Wed | Jan 2523 | Lecture 7: Memory Models (contd), Futures --- Tasks with Return Values | ArraySum2.hj | |||||||||||||
8 | Fri | Jan 2725 | Lecture 8: Futures (contd), Dataflow Programming, Data-Driven Tasks | binarytrees.hj | |||||||||||||
9 | Mon | Jan 3028 | Lecture 9: Abstract vs. Real Performance, seq clause, forasync loops | nqueens.hj | HW2 | ||||||||||||
10 | WedFeb | 01Jan 30 | Lecture 10: Forasync Chunking, Parallel Prefix Sum algorithm | lec10-audio | |||||||||||||
11 | Fri | Feb 031 | Lecture 11: Parallel Prefix Sum (contd), Parallel Quicksort | lec11-audio | HW3 (HJ Programming Assignment), SeqScoring.hj, X.txt, Y.txt, BigSeq.zip | ||||||||||||
12 | Mon | Feb 0604 | Lecture 12: Finish Accumulators, Forall Loops and Barrier Synchronization | lec12-audio | |||||||||||||
13 | Wed | Feb 0806 | Lecture 13: Forall Loops and Barrier Synchronization (contd) | lec13-audio | |||||||||||||
14 | Fri | Feb 1008 | Lecture 14: Point-to-point Synchronization and Phasers | lec14-audio | |||||||||||||
15 | Mon | Feb 1311 | Lecture 15: Phaser Accumulators, Bounded Phasers | lec15-audio | |||||||||||||
16 | Wed | Feb 1513 | Lecture 16: Summary of Barriers and Phasers | lec16-audio | |||||||||||||
17 | Fri | Feb 1715 | Lecture 17: Task Affinity with Places | lec17-audio | |||||||||||||
18 | Mon | Feb 2018 | Lecture 18: Task Affinity with Places (contd) | lec18-audio | |||||||||||||
19 | Wed | Feb 2220 | Lecture 19: Midterm Summarylec19-slides | ||||||||||||||
- | F | Feb 2422 | No Lecture (Take-home Exam 1 due by 4pm today) | HW3 | |||||||||||||
- | M-F | Feb 27 25- Mar 0201 | Spring Break |
|
|
|
|
| |||||||||
20 | Mon | Mar 0504 | Lecture 20: Critical sections and the Isolated statement | lec20-audio |
| ||||||||||||
21 | Wed | Mar 0706 | Lecture 21: Isolated statement (contd), Monitors, Actors | lec21-audio | HW4 (HJ Programming Assignment), hw_4.zip |
| |||||||||||
22 | Fri | Mar 0908 | Lecture 22: Actors (contd) | HJ Actor Examples |
| ||||||||||||
23 | Mon | Mar 1211 | Lecture 23: Linearizability of Concurrent Objects | lec23-audio |
|
|
| ||||||||||
24 | Wed | Mar 1413 | Lecture 24: Linearizability of Concurrent Objects (contd) | lec24-audio |
|
| |||||||||||
25 | Fri | Mar 1615 | Lecture 25: Safety and Liveness Properties | lec25-audio |
|
|
| ||||||||||
26 | Mon | Mar 1918 | Lecture 26: Parallel Programming Patterns | lec26-audio |
|
|
| ||||||||||
27 | Wed | Mar 2120 | Lecture 27: Introduction to Java Threads |
| HW4 | - | Fri | Mar 23 | Midterm Recess |
| |||||||
28 | MonFri | Mar 2622 | Lecture 28: Bitonic Sort (guest lecture by Prof. John Mellor-Crummey)lec28-slides |
|
|
| |||||||||||
29 | WedMon | Mar 2825 | Lecture 29: Java Threads (contd), Java synchronized statement | lec29-audio |
|
|
| ||||||||||
30 | FriWed | Mar 3027 | Lecture 30: Java synchronized statement (contd), advanced locking | lec30-audio |
|
|
| ||||||||||
- | Fri | Mar 29 | Midterm Recess | ||||||||||||||
31 | Mon | Apr 0201 | Lecture 31: Java Executors and Synchronizers | lec31-audio |
|
| |||||||||||
32 | Wed | Apr 0403 | Lecture 32: Volatile Variables and Java Memory Model | lec32-audio |
|
|
| ||||||||||
33 | Fri | Apr 0605 | Lecture 33: Message Passing Interface (MPI) | lec33-audio |
|
| HW5 | ||||||||||
34 | Mon | Apr 0908 | Lecture 34: Message Passing Interface (MPI, contd) | lec34-audio | HW6 (Java Programming Assignment) , hw_6.zip |
| |||||||||||
35 | Wed | Apr 1110 | Lecture 35: Cloud Computing, Map Reduce | lec35-audio |
|
|
| ||||||||||
36 | Fri | Apr 1312 | Lecture 36: Map Reduce (contd) | lec36-audio |
|
|
| ||||||||||
37 | Mon | Apr 1615 | Lecture 37: Speculative parallelization of isolated blocks (Guest lecture by Prof. Swarat Chaudhuri)lec37-slides |
|
|
| |||||||||||
38 | Wed | Apr 1817 | Lecture 38: Comparison of Parallel Programming Models | lec38-audio |
|
|
| ||||||||||
39 | Fri | Apr 2019 | Lecture 39: Course Review | lec39-audio | Exam 2 (Take-home) | HW6 | |||||||||||
- | Fri | Apr 2725 | Exam 2 due |
|
|
|
| Exam 2 |
Lab Schedule
Lab # | Date (2011) | Topic | Handouts | Code Examples | Solutions | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1 | Jan 1008, 1109, 1210 | DrHJ setup, Async-Finish Parallel Programming | HelloWorld.hj, ReciprocalArraySum.hj, PrimeSieve.hj |
| |||||||
2 | Jan 1715, 1816, 1917 | Abstract performance metrics with async & finish |
| ||||||||
3 | Jan 22, 23, 25, 2624 | Data race detection and repair | RacyArraySum1.hj, RacyFib.hj, RacyNQueens.hj, RacyFannkuch.hj |
| |||||||
4 | Jan 29, 30 Feb 01, 0231 | Real performance, work-sharing and work-stealing runtimes, futures |
| ||||||||
5 | Feb 0705, 0806, 0907 | Data-driven futures |
| ||||||||
6 | Feb 1412, 1513, 1614 | Barriers and Phasers |
| ||||||||
- | Feb 2119, 2220, 2321 | No lab (Exam 1 week) |
|
|
| ||||||
7 | Mar 05, 06, 07, 08 | Atomic Variables and Isolated Statement | |||||||||
8 | Mar 12, 13, 14, 15 | Actors | |||||||||
-9 | Mar 19, 20, 21, 22 | No lab (HW4 deadline, midterm recess) |
|
|
| 9 | Mar 27, 28, 29 | Java Threads | |||
- | Mar 26, 27, 28 | No lab (HW4 deadline, midterm recess) | |||||||||
10 | Apr 02, 03, 04, 05 | Java Locks |
| ||||||||
11 | Apr 09, 10, 11, 12 | Message Passing Interface (MPI) |
| ||||||||
12 | Apr 16, 17, 18, 19 | Map Reduce |
|
...