Catalog Description: Models for parallel programming. Overview of parallelism in scientific applications and study of parallel algorithms for linear algebra, particles, meshes, sorting, FFT, graphs, machine learning, etc. Survey of parallel machines and machine structures. Programming shared- and distributed-memory parallel computers, GPUs, and cloud platforms. Parallel programming languages, compilers, libraries and toolboxes. Data partitioning techniques. Techniques for synchronization and load balancing. Detailed study and algorithm/program development of medium sized applications.

Units: 3-4

Prerequisites: No formal pre-requisites. Prior programming experience with a low-level language such as C, C++, or Fortran is recommended but not required. CS C267 is intended to be useful for students from many departments and with different backgrounds, although we will assume reasonable programming skills in a conventional (non-parallel) language, as well as enough mathematical skills to understand the problems and algorithmic solutions presented.

Spring: 3.0-3.0 hours of lecture and 1.0-1.0 hours of laboratory per week
Fall: 3.0-3.0 hours of lecture and 1.0-1.0 hours of laboratory per week

Grading basis: letter

Final exam status: No final exam

Also listed as: ENGIN C233

Class Schedule (Spring 2024):
CS C267 – TuTh 11:00-12:29, Soda 306 – Aydin Buluc, James W Demmel

Class homepage on inst.eecs

Related Areas: