Versions Compared

Key

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

COMP 322: Fundamentals of Parallel Programming (Spring 2014)

Instructor:

Prof. Vivek Sarkar, DH 3080

Graduate TA:

Kumud Bhandari

 

Please send all emails to comp322-staff at rice dot edu

Graduate TA:

Rishi Surendran

Assistant:

Penny Anderson, anderson@rice.edu, DH 3080

Graduate TA:

Yunming Zhang

  Undergrad TA:Wenxuan Cai

 

 

Undergrad TA:

Kyle Kurihara

Cross-listing:

ELEC 323

Undergrad TA:

Max Payton

 

 

Course consultants:

Vincent Cavé, Shams Imam, Maggie Tang, Bing Xue

Lectures:

Herzstein Hall 212

Lecture times:

MWF 1:00 - 1:50pm

Labs:

Symonds II

Lab times:

Monday, 4:00 - 5:30pm (Section A01, Staff: Yunming, Kumud, Wenxuan, Maggie)

 

 

 

Wednesday, 4:30 - 6:00pm (Section A02, Staff: Rishi, Kyle, Max, Bing)

...

To ensure that students gain a strong knowledge of parallel programming foundations, the classes and homeworks will place equal emphasis on both theory and practice. The programming component of the course will mostly use the Habanero-Java Library (HJ-lib) pedagogic extension to the Java language developed in the Habanero Multicore Software Research project at Rice University.  The course will also introduce you to real-world parallel programming models including Java Concurrency, MapReduce, MPI, OpenCL and CUDA. An important goal is that, at the end of COMP 322, you should feel comfortable programming in any parallel language for which you are familiar with the underlying sequential language (Java or C). Any parallel programming primitives that you encounter in the future should be easily recognizable based on the fundamentals studied in COMP 322.

...

  • Primitive constructs for task creation & termination, synchronization, task and data distribution
  • Abstract models: parallel computations, computation graphs, Flynn's taxonomy (instruction vs. data parallelism), PRAM model
  • Parallel algorithms for data structures that include arrays, lists, strings, trees, graphs, and key-value pairs
  • Common parallel programming patterns including task parallelism, pipeline parallelism, data parallelism, divide-and-conquer parallelism, map-reduce, concurrent event processing including graphical user interfaces.

...

  1. Deterministic Shared-Memory Parallelism: creation and coordination of parallelism (async, finish), abstract performance metrics (work, critical paths), Amdahl's Law, weak vs. strong scaling, data races and determinism, data race avoidance (immutability, futures, accumulators, dataflow), deadlock avoidance, abstract vs. real performance (granularity, scalability), collective & point-to-point synchronization (phasers, barriers), parallel algorithms, systolic arrays.
  2. Nondeterministic Shared-Memory Parallelism and Concurrency: critical sections, atomicity, isolation, high level data races, nondeterminism, linearizability, liveness/progress guarantees, actors, request-response parallelism, Java Concurrency, locks, condition variables, semaphores, memory consistency models.
  3. Distributed-Memory Parallelism and Locality: memory hierarchies, cache affinity, data movement, message-passing (MPI), communication overheads (bandwidth, latency), MapReduce, accelerators, GPGPUs, CUDA, OpenCL, energy efficiency, resilience.

...

Lab #

Date (2014)

Topic

Handouts

Code Examples

1

Jan 13, 15

Infrastructure setup, Async-Finish Parallel Programming

lab1-handoutHelloWorldError.java, ReciprocalArraySum.java

-

Jan 20, 22

No lab this week — Jan 20 is Martin Luther King, Jr. Day

  

2

Jan 27, 29

Abstract performance metrics with async & finish

lab2-handoutArraySum1.java, Search2.java, ArraySumLoop.java, ArraySumRecursive.java

2

Jan 27, 29

Abstract performance metrics with async & finish

  

3

Feb 03, 05

Data race detection and repair

  

4

Feb 10, 12

Futures, Finish Accumulators

 

 

5

Feb 17, 19

Real performance, work-sharing and work-stealing runtimes

  

6

Feb 24, 26

Barriers, Data-Driven Futures

 

 

-

Mar 03, 05

No lab this week — Spring Break

  

7

Mar 10, 12

Isolated Statement and Atomic Variables

  

8

Mar 17, 19

Actors

  
9

Mar 24, 26

Java Threads

  

10

Mar 31, Apr 02

Java Locks

  

11

Apr 07, 09

Message Passing Interface (MPI)

  

12

Apr 14, 16

Map Reduce

  

...