Parallel Computer Architecture and Programming

Course ID 15418

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. This course 15-418 is for undergraduates. Graduate students should enroll in 15-618.

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.

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/