最近在跟着团队中的强者们学习并行编程,选用的参考材料如下:

  1. Parallel Computer Architecture and Programming (CMU 15-418/618 Spring 2016)
  2. Stanford CS149, Fall 2020 PARALLEL COMPUTING
  3. 15-418/15-618: Parallel Computer Architecture and Programming, Spring 2021

内部主要用的材料是第 3 项,即 CMU 今年春季学期的课程,提供课件和编程练习,优点是内容较新,但是没有视频。我另外寻找的两个材料均和其有关,第 1 项是 2016 年春季学期的同一课程,讲师是 Kayvon FatahalianRandal Bryant ,后者是 CSAPP 的作者之一。听说 Kayvon 在 16 年的课程讲得挺好,而且 CMU 官方的 panopto 也提供了这一学期的课程录像,所以就拿来参考了。至于第 2 项,是 Kayvon 跑到 Stanford 之后对应于 CMU 这门课所开设的课程(他还教授图形学);另一名讲师是 Kunle Olukotun ,被誉为多核处理器之父,教授 CS315B 。几门课在不同学期的课程编排和编程练习都不太一样,可以互相参考。对于并行性(Parallelism),一种较为常见的解释是:“A parallel computer is a collection of processing elements that cooperate to solve problems quickly.” 通过这门课的学习,我们在进行程序设计时将更加讲究 性能效率

注意:并发(Concurency)和并行不是一个概念,可以参考 Bob Harper 的两篇文章:

Why Parallelism