# CMU 15-418/Stanford CS149: Parallel Computing

## 课程简介

- 所属大学：CMU 和 Stanford
- 先修要求：计算机体系结构，熟悉 C++
- 编程语言：C++
- 课程难度：🌟🌟🌟🌟🌟
- 预计学时：150 小时

[Kayvon Fatahalian](http://www.cs.cmu.edu/~kayvonf) 教授此前在 CMU 开了 15-418 这门课，后来他成为 Stanford 的助理教授后又开了类似的课程 CS149。但总体来说，15-418 包含的课程内容更丰富，并且有课程回放，但 CS149 的编程作业更 fashion 一些。我个人是观看的 15-418 的课程录影但完成的 CS149 的作业。

这门课会带你深入理解现代并行计算架构的设计原则与必要权衡，并学会如何充分利用硬件资源以及软件编程框架（例如 CUDA，MPI，OpenMP 等）编写高性能的并行程序。由于并行计算架构的复杂性，这门课会涉及诸多高级体系结构与网络通信的内容，知识点相当底层且硬核。与此同时，5 个编程作业则是从软件的层面培养学生对上层抽象的理解与运用，具体会让你分析并行程序的瓶颈、编写多线程同步代码、学习 CUDA 编程、OpenMP 编程以及前段时间大热的 Spark 框架等等。真正意义上将理论与实践完美地结合在了一起。

## 课程资源

- 课程网站：[CMU15418](http://15418.courses.cs.cmu.edu/spring2016/), [CS149](https://gfxcourses.stanford.edu/cs149/fall21)
- 课程视频：[CMU15418](http://15418.courses.cs.cmu.edu/spring2016/lectures), [CS149](https://youtube.com/playlist?list=PLoROMvodv4rMp7MTFr4hQsDEcX7Bx6Odp&si=txtQiRDZ9ZZUzyRn)
- 课程教材：无
- 课程作业：<https://gfxcourses.stanford.edu/cs149/fall21>，5 个编程作业

## 资源汇总

@PKUFlyingPig 在学习这门课中用到的所有资源和作业实现都汇总在 [PKUFlyingPig/CS149-parallel-computing - GitHub](https://github.com/PKUFlyingPig/CS149-parallel-computing) 中。
