Parallel Computer Architecture and Programming (CMU 15-418/618)

From smart phones, to multi-core CPUs and GPUs, to the world's largest supercomputers and web sites, parallel processing is ubiquitous in modern computing. The goal of this course is to provide a deep understanding of the fundamental principles and engineering trade-offs involved in designing modern parallel computing systems as well as to teach parallel programming techniques necessary to effectively utilize these machines. Because writing good parallel programs requires an understanding of key machine performance characteristics, this course will cover both parallel hardware and software design.

When We Meet
Mon/Wed 3:00 - 4:20pm
Doherty Hall A302
Instructor: Kayvon Fatahalian
Spring 2015 Schedule
Jan 12
Jan 14
Assignment 1 out
Jan 19
No Class (CMU MLK holiday)
Jan 21
Quiz 1 due (on Thu Jan 22)
Assignment 1 due (on Fri Jan 23)
Jan 26
Parallel Programming Basics (the parallelization thought process)
Jan 28
GPU Architecture and CUDA Programming
Assignment 2 out
Feb 2
Performance Optimization I: Work Distribution
Feb 4
Performance Optimization II: Locality, Communication, and Contention
Quiz 2 due (on Thu Feb 5)
Feb 9
Parallel Application Case Studies
Feb 11
Workload-Driven Performance Evaluation
Assignment 2 due
Assignment 3 out
Feb 16
Snooping-Based Cache Coherence I
Feb 18
Snooping-Based Cache Coherence II
Quiz 3 due (on Thu Feb 19)
Feb 23
Directory-Based Cache Coherence
Feb 25
Memory Consistency (+ Course-So-Far Review)
Assignment 3 due
Mar 2
Exam I
Mar 4
Scaling a Web Site: Scale-Out Parallelism, Elasticity, and Caching
Assignment 4 out
Mar 9-13
Spring Break. Partaaay!
Mar 16
Basic Snooping-Based Multiprocessor Implementation
Mar 18
Interconnection Networks
Quiz 4 due (on Thu Mar 19)
Mar 23
Implementing Synchronization
Mar 25
Kayvon out of town: Guest Lecture TBD
Assignment 4 due
Mar 30
Fine-Grained Synchronization and Lock-Free Data Structures
Apr 1
Transactional Memory
Project Proposal Due
Quiz 5 due (on Thu Apr 2)
Apr 6
Heterogeneous Parallelism and Hardware Specialization
Apr 8
Domain-Specific Parallel Programming Systems
Apr 13
Domain-Specific Parallel Programming on Graphs
Apr 15
Kayvon out of town: Guest Lecture TBD
Project Checkpoint Due
Quiz 6 due (on Thu Apr 16)
Apr 20
Addressing the Memory Wall
Apr 22
Scheduling Fork-Join Parallelism
Apr 27
Exam II
Apr 29
Course Wrap Up and Project Presentation Tips (How to Give a Clear Talk)
May 11 (tentative)
4th Annual Parallelism Competition
Final Projects Due
Assignments and Projects
due Jan 23Assignment 1: Analyzing Parallel Program Performance on a Quad-Core CPU
due Feb 11Assignment 2: A Simple Renderer in CUDA
due Feb 25Assignment 3: Two Algorithms, Many Cores
due Mar 25Assignment 4: to be announced!
weeklyGuidelines and Tips for Making Good Lecture Comments
 Fourth Annual Parallelism Competition
Acknowledgments

Special thanks to NVIDIA Corporation for their equipment donation to support GPU-computing assignments and projects. Intel Corporation has also provided financial support for course development. Todd Mowry created the original version of 15-418 and much of the structure of his innovative course persists today. Thanks to Matt Pharr for technical assistance with ISPC. Alex Reece, Manish Burman, and Cary Yang developed the course web site.