...
Laboratory assignments will explore these topics through a simple parallel extension to the Java language called Habanero-Java (HJ), developed in the Habanero Multicore Software Research project at Rice University. The use of Java will be confined to a subset of the Java 1.4 language that should also be accessible to C programmers --- no advanced Java features (e.g., generics) will be used. An abstract performance model for HJ programs will be available to aid you in complexity analysis of parallel programs before you embark on performance evaluations on real parallel machines. We will conclude the course by introducing you to some real-world parallel programming models including the Java Concurrency Utilities, Google's MapReduce, CUDA and MPI. The foundations gained in this course will prepare you for advanced courses on Parallel Computing offered at Rice (COMP 422, COMP 522).
Since the aim of the course is for you to gain both theoretical and practical knowledge of the foundations of parallel programming, the weightage for course work will be balanced across written assignmentshomeworks, programming assignmentsexams, and exams. Students interested in taking COMP 322 in Spring 2012 can find summary information here.lab attendance.
Textbooks
There are no required textbooks for the class. You will be expected to read each lecture handout before coming to the lecture. We will also provide a number of references in the slides and handouts.
...
| Day | Date (2012) | Topic | Handouts | Slides | Homework Assigned | Homework Due | |
---|---|---|---|---|---|---|---|---|
1 | Mon | Jan 9 | Lecture 1: The What and Why of Parallel Programming |
|
|
| ||
2 | Wed | Jan 11 | Lecture 2: Task Creation & Termination using Async & Finish |
|
|
|
| |
3 | Fri | Jan 13 | Lecture 3: Computation Graphs, Abstract Performance Metrics |
| HW2 | HW1 | ||
- | Mon | Jan 16 | School Holiday |
|
|
|
| |
4 | Wed | Jan 18 | Lecture 4: Futures --- Tasks with Return Values |
|
| |||
5 | Fri | Jan 20 | Lecture 5: Parallel Array Sum and Array Reductions |
| HW2 | |||
6 | Mon | Jan 23 | Lecture 6: Data Races and How to Avoid Them | HW3 |
| |||
7 | Wed | Jan 25 | Lecture 7: Parallel Prefix Sum, Forall parallel loops |
|
|
| ||
8 | Fri | Jan 27 | Lecture 8: Parallel Quicksort |
|
|
| ||
9 | Mon | Jan 30 | Lecture 9: PRAM model, Amdahl's Law |
|
|
|
| |
10 | Wed | Feb 01 | Lecture 10: Critical sections and the Isolated statement |
|
|
| ||
11 | Fri | Feb 03 | Lecture 11: Abstract vs Real Performance, Work-sharing & Work-stealing schedulers |
|
|
|
| |
12 | Mon | Feb 06 | Lecture 12: Barrier Synchronization in Forall Loops |
| HW3 | |||
13 | Wed | Feb 08 | Lecture 13: Barrier Synchronization in Forall Loops (contd) | HW4 (Written Assignment) |
| |||
14 | Fri | Feb 10 | Lecture 14: Point-to-point Synchronization and Phasers |
|
|
| ||
15 | Mon | Feb 13 | Lecture 15: Point-to-point Synchronization and Phasers (contd) |
|
| |||
16 | Wed | Feb 15 | Lecture 16: Advanced Phaser topics |
| HW4 | |||
17 | Fri | Feb 17 | Lecture 17: Dataflow Programming and Data-Driven Futures |
|
|
| ||
18 | Mon | Feb 20 | Lecture 18: Dataflow Programming and Data-Driven Futures, contd. |
|
| |||
19 | Wed | Feb 22 | Lecture 19: Midterm Summary |
|
|
| ||
- | Fri | Feb 24 | Exam 1 (in class) |
|
|
|
| |
- | M-F | Feb 27 - Mar 02 | Spring Break |
|
|
| ||
20 | Mon | Mar 05 | Lecture 20: Java Atomic Variables |
|
| |||
21 | Wed | Mar 07 | Lecture 21: Java Concurrent Collections |
|
| |||
22 | Fri | Mar 09 | Lecture 22: Linearizability of Concurrent Objects |
| ||||
23 | Mon | Mar 12 | Lecture 23: Task Affinity with Places | |||||
24 | Wed | Mar 14 | Lecture 24: Task Affinity with Places, contd. |
|
| |||
25 | Fri | Mar 16 | Lecture 25: Map Reduce |
| ||||
26 | Mon | Mar 19 | Lecture 26: Map Reduce, contd. | HW5 | ||||
27 | Wed | Mar 21 | Lecture 27: Dataflow Programming with Intel Concurrent Collections |
| ||||
- | Fri | Mar 23 | Midterm Recess |
|
|
|
| |
28 | Mon | Mar 26 | Lecture 28: Java Threads |
|
| |||
29 | Wed | Mar 28 | Lecture 29: Java Threads (contd), synchronized statement |
|
|
| ||
30 | Fri | Mar 30 | Lecture 30: Java synchronized statement with wait/notify |
|
|
| ||
31 | Mon | Apr 02 | Lecture 31: Advanced locking in Java |
| ||||
32 | Wed | Apr 04 | Lecture 32: Java Executors and Synchronizers |
| HW6 | |||
33 | Fri | Apr 06 | Lecture 33: Volatile Variables and Java Memory Model |
|
| |||
34 | Mon | Apr 09 | Lecture 34: GPGPU programming with CUDA |
|
| |||
35 | Wed | Apr 11 | Lecture 35: CUDA contd. |
|
|
| ||
36 | Fri | Apr 13 | Lecture 36: Liveness and Progress Guarantees |
|
|
| ||
37 | Mon | Apr 16 | Lecture 37: Introduction to MPI |
|
|
| ||
38 | Wed | Apr 18 | Lecture 38: Introduction to MPI (contd) |
|
|
| ||
39 | Fri | Apr 20 | Lecture 39: Course Summary |
| Final Exam (Take-home) | HW7 | ||
- | Fri | Apr 27 | Exam 2 (in class) |
|
|
|
|
...