Parallel Computer Architecture and Programming

Course ID 15618

Description The fundamental principles and engineering tradeoffs involved in designing modern parallel computers, as well as the programming techniques to effectively utilize these machines. Topics include naming shared data, synchronizing threads, and the latency and bandwidth associated with communication. Case studies on shared-memory, message-passing, data-parallel and dataflow machines will be used to illustrate these techniques and tradeoffs. Programming assignments will be performed on one or more commercial multiprocessors, and there will be a significant course project.

Key Topics
Parallel programming models / frameworks; Characteristics of parallel hardware; Ubiquitous computing workloads

Required Background Knowledge
15-213 is required. Other experience with systems and C programming is valuable.

Course Relevance
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. This class covers how these systems operate and are programmed. This course 15-618 is for graduate students. Undergraduates should enroll in 15-418.

Course Goals
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.

Learning Resources
Piazza; Course website

Assessment Structure
Programming Assignments: 40 percent; Exams: 30 percent; Final Project: 25 percent; Participation: 5 percent

Course Link
https://www.cs.cmu.edu/~15418/