CIS 640: Introduction to Multiprocessor Programming, Spring 2009
Class: Mon Wed 10.30--12, Levine 307
Office hours: Wed 4-5, and by appointment
Introduction
Our ability to effectively harness the computational power of the next
generation of multiprocessor and multicore architectures is predicated upon
advances in programming languages and tools for developing concurrent
software. This has resulted in a surge of concurrency-related research activity
from different viewpoints, such as rethinking of programming abstractions for
concurrency, and design of efficient data structures and algorithms for
multiprocessor architectures.
This course will focus on foundations of concurrent programming for modern multiprocessor
architectures. Topics covered include synchronization primitives, programming abstractions
for concurrency, concurrent data structures, memory consistency models, and transactional memory.
Prerequisites
The course requires undergraduate coursework in
Computer Architecture, Programming Languages, Algorithms, and Operating Systems
If you need more information to decide, contact the instructor.
Textbook
The Art of Multiprocessor Programming
Herlihy and Shavit, Morgan Kaufmann, 2008.
Coursework and Grading
There will be periodic homework assignments consisting of
theoretical problems, concurrent programming, and experimental evaluation
on a multiprocessor machine (send CETS an email to get an account on the SEAS
machine arachnid).
There will be no exams.
A major component of the evaluation will be the course project.
The project can be done in groups of two, and will
require a presentation in the final week.
Tentative Schedule
- Jan 14: Introduction slides
- Jan 21, 26: Mutual exclusion and reasoning about concurrency (Ch. 2) slides
- Jan 28, Feb 2: Spin locks (Ch. 7) slides
- Feb 4, 9: Theory of concurrent objects (Ch. 3)
slides
Note: Feb 4 Lecture is in Towne 337 instead of the usual Levine 307
- Feb 11, 16: Concurrent Lists (Ch. 9) slides
- Feb 18: Concurrent Queues (Ch. 10) slides
- Feb 23, 25, March 2: Foundations of shared memory (Ch. 4,5)
slides
- March 4: Universality of consensus (Ch. 6) slides
- March 16, 18: Parallel Counting (Ch. 12) slides
- March 23, 25: No lectures
- March 30: Concurrent Hashing (Ch. 13) slides
- April 1: Guest Lecture by Benjamin Pierce on Programming abstractions for concurrency
- April 6: Work scheduling (Ch. 16) slides
- April 8: WPE Presentation by Sela Mador-Haim on Language-level memory models
- April 13: Guest lecture by Pavol Cerny on Concurrent programming with
sociable objects slides
- April 15: WPE Presentation by Arun Raghavan on Debugging shared memory multiprocessors
- April 20: Guest Lecture by Milo Martin on Transactional memory
- April 22: Guest lecture by Aarti Gupta, NEC Labs, on Verification of
concurrent programs slides
- April 27, 29: Project presentations
Selected Relevant Papers and Projects
Maintained by Rajeev Alur