Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

 

 

HW1 (Written Assignment)

 

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


lec11-slides  

 

HW3

13

Wed

Feb 08

Lecture 13: Barrier Synchronization in Forall Loops (contd)

lec12and13-handout

lec12-slides  


HW4 (Written Assignment)

 

14

Fri

Feb 10

Lecture 14: Point-to-point Synchronization and Phasers

lec12and13-handout

 

  lec13-slides

 

 

15

Mon

Feb 13

Lecture 15: Point-to-point Synchronization and Phasers (contd)

lec14and15-handout

lec14-slides

 

 

16

Wed

Feb 15

Lecture 16: Advanced Phaser topics

lec14and15-handout

lec15-slides

 

HW4

17

Fri

Feb 17

Lecture 17: Dataflow Programming and Data-Driven Futures

 

lec16-slides

 

 

18

Mon

Feb 20

Lecture 18: Dataflow Programming and Data-Driven Futures, contd.

lec17-handout

lec17-slides

 

 

19

Wed

Feb 22

Lecture 19: Midterm Summary

 

lec18-slides

 

 

-

Fri

Feb 24

Exam 1 (in class)

 

 

 

 

-

M-F

Feb 27 - Mar 02

Spring Break

 

 


 

20

Mon

Mar 05

Lecture 20: Java Atomic Variables

lec19-handout

lec19-slides

 

 

21

Wed

Mar 07

Lecture 21: Java Concurrent Collections

lec20-handout

lec20-slides

 

 

22

Fri

Mar 09

Lecture 22: Linearizability of Concurrent Objects

lec21-handout

lec21-slides

HW5 (Written Assignment)

 

23

Mon

Mar 12

Lecture 23: Task Affinity with Places

lec22-handout

lec22-slides



24

Wed

Mar 14

Lecture 24: Task Affinity with Places, contd.

lec23-handout

lec23-slides

 

 

25

Fri

Mar 16

Lecture 25: Map Reduce

lec24-handout

lec24-slides


 

26

Mon

Mar 19

Lecture 26: Map Reduce, contd.

lec25-handout

lec25-slides


HW5

27

Wed

Mar 21

Lecture 27: Dataflow Programming with Intel Concurrent Collections

lec26-handout

lec26-slides

HW6 (Programming Assignment)

 

-

Fri

Mar 23

Midterm Recess

 

 

 

 

28

Mon

Mar 26

Lecture 28: Java Threads

lec27-handout

lec27-slides

 

 

29

Wed

Mar 28

Lecture 29: Java Threads (contd), synchronized statement

 

lec28-slides

 

 

30

Fri

Mar 30

Lecture 30: Java synchronized statement with wait/notify

 

lec29-slides

 

 

31

Mon

Apr 02

Lecture 31: Advanced locking in Java

 

lec30-slides



32

Wed

Apr 04

Lecture 32: Java Executors and Synchronizers

 

lec31-slides


HW6

33

Fri

Apr 06

Lecture 33: Volatile Variables and Java Memory Model

 

lec32-slides

HW7 (Programming Assignment)

 

34

Mon

Apr 09

Lecture 34: GPGPU programming with CUDA

lec33-handout

lec33-slides

 

 

35

Wed

Apr 11

Lecture 35: CUDA contd.

 

lec34-slides

 

 

36

Fri

Apr 13

Lecture 36: Liveness and Progress Guarantees

 

lec35-slides

 

 

37

Mon

Apr 16

Lecture 37: Introduction to MPI

 

lec36-slides

 

 

38

Wed

Apr 18

Lecture 38: Introduction to MPI (contd)

 

lec37-slides

 

 

39

Fri

Apr 20

Lecture 39: Course Summary

 

lec38-slides

Final Exam (Take-home)

HW7

-

Fri

Apr 27

Exam 2 (in class)

 

 

 

 

...