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.

Basic Info
Mon/Wed 1:30-2:50pm (recitation on Fri 1:30-2:50pm)
GHC 4401 (Rashid Auditorium)
Instructors: Kayvon Fatahalian and Randy Bryant
See the course info page for more info on policies and logistics.
Spring 2017 Schedule
Jan 16
No Class (CMU MLK holiday)
Jan 18
Assignment 1 out
Jan 20
Jan 23
Jan 25
Exercise 1 due (on Fri Jan 27)
Jan 30
Assignment 1 due
Assignment 2 out
Feb 1
Feb 6
Feb 8
Exercise 2 due (on Fri Feb 10)
Feb 13
Feb 15
Assignment 2 due
Assignment 3 out
Feb 20
Feb 22
Exercise 3 due (on Fri Feb 24)
Feb 27
Mar 1
Exam I
Mar 6
Mar 8
Assignment 3 due
Mar 13-17
Spring Break. Partaaay!
Mar 20
Mar 22
Exercise 4 due (on Fri Mar 24)
Mar 27
Transactional Memory
Mar 29
Heterogeneous Parallelism and Hardware Specialization
Apr 3
Domain-Specific Parallel Programming Systems
Assignment 4 due
Apr 5
Domain-Specific Programming on Graphs
Exercise 5 due (on Fri Apr 7)
Apr 10
In-Memory Distributed Computing in Spark
Project Proposal due
Apr 12
Addressing the Memory Wall
Apr 17
The Future of High-Performance Computing
Apr 19
Efficiently Evaluating Deep Neural Networks
Exercise 6 due (on Wed Apr 19)
Apr 24
Parallel Deep Neural Network Training
Project checkpoint due (on Tues April 25)
Apr 26
Topic TBD
May 1
Topic TBD
Exam 2 (evening exam)
May 3
Course Wrap Up and Project Presentation Tips (How to Give a Clear Talk)
May 12
6th Annual Parallelism Competition
Final Projects Due
Assignments and Projects
Jan 30Assignment 1: Analyzing Parallel Program Performance on an Eight-Core CPU
Feb 15Assignment 2: A Simple Renderer in CUDA
Mar 8Assignment 3: Processing Big Graphs on the Xeon Phi
Apr 4Assignment 4: A Simple, Elastic Web Server
May 12Final Project / Parallelism Competition
weeklyGuidelines and Tips for Making Good Lecture Comments
Acknowledgments

Special thanks to the Intel Corporation, the NVIDIA Corporation, and to DELL for equipment donations and/or 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.