Stanford CS149 并行计算 · 开篇与课程概览

目录 · l1 →

课程基本信息

项目内容
课程Stanford CS149: Parallel Computing(并行计算),Fall 2025
授课时间周二 / 周四 10:30–11:50am
地点NVIDIA Auditorium
授课教师Kayvon Fatahalian、Kunle Olukotun
先修要求强烈推荐 CS111(操作系统原理);需要熟练的 C/C++ 读写调试能力,并有使用线程(std::thread / pthreads)的基础
教材无指定教材;架构主题可参考 Hennessy & Patterson《Computer Architecture: A Quantitative Approach》(6th ed.)
视频2025 年视频不对外公开;2023 年版课程视频在 Stanford YouTube 频道 公开可看

课程定位

从智能手机、多核 CPU、GPU,到 AI 加速器、全球最大的超级计算机与网站,并行处理在现代计算中无处不在。本课程的目标是让学生深刻理解现代并行计算系统设计中的基本原理与工程权衡,并掌握有效利用这些机器所必需的并行编程技术。由于写出好的并行程序需要理解关键机器性能特征,本课程同时覆盖并行硬件与并行软件设计。

课程的三大主线(Theme)

  1. 并行思维(Parallel Thinking):如何把一个问题分解为可以安全并行执行的工作(分解 Work),如何把工作分配给处理器(Assign Work),以及如何管理处理器之间的通信与同步,使其不成为加速比的瓶颈——并学习用主流并行编程语言(C++ 线程、ISPC、CUDA、Cilk/OpenMP、事务内存等)实现这些思想。
  2. 并行硬件实现(Hardware Implementation):现代并行计算机如何工作——多核处理器、SIMD、GPU、缓存一致性、内存一致性、专用加速器;理解实现机制的性能特征与”性能 vs 便利性 vs 成本”的设计权衡。
  3. 效率思维(Thinking About Efficiency)FAST ≠ EFFICIENT——程序跑得快不代表高效利用硬件。衡量加速比、效率、扩展性,理解 Amdahl 定律、通信开销、负载均衡、局部性与算术强度对性能的根本性影响。

课程结构(按主题分四个阶段)

阶段讲座主题
I. 并行基础与编程模型(第 1–6 讲)L1–L6为什么需要并行与效率;现代多核处理器架构(ILP/SIMD/多线程);ISPC 编程抽象;并行化代码的思考过程;工作分配与调度(Cilk 工作窃取);局部性与通信(消息传递、流水线、算术强度)
II. GPU 与数据并行(第 7–8 讲)L7–L8GPU 架构与 CUDA 编程;数据并行思维(map / reduce / scan / groupByKey)
III. AI 与专用硬件(第 9–13 讲)L9–L13GPU 上的 DNN 高效评估(卷积→GEMM、Transformer、层融合);硬件特化(DNN 加速器、脉动阵列);专用硬件编程系统(TVM / Triton / TileLang / MLIR);AI 应用的数据中心级映射(serving、batching、KV cache);AI 驱动的性能优化
IV. 系统级同步与一致性(第 14–18 讲)L14–L18缓存一致性(MSI/MESI、伪共享);同步实现与内存一致性(锁、原子操作、放松一致性);细粒度锁与无锁编程(无锁栈/队列、ABA 问题);事务内存(STM/HTM)

时间线总览(2025 秋季学期)

日期讲座 / 事件
Sep 23L1: Why Parallelism? Why Efficiency?
Sep 25L2: A Modern Multi-Core Processor (Part I)
Sep 30L3: Modern Multi-Core Architecture (Part II) + ISPC
Oct 02L4: Parallelizing Code: An Example Thought Process
Oct 06PA1 截止:四核 CPU 并行程序性能分析
Oct 07L5: Program Optimization 1: Work Distribution and Scheduling
Oct 09L6: Program Optimization 2: Locality and Communication;WA1 截止
Oct 14L7: GPU Architecture and CUDA Programming
Oct 16L8: Data-Parallel Thinking;PA2 截止
Oct 21L9: Efficiently Evaluating DNNs on GPUs;WA2 截止
Oct 23L10: Hardware Specialization
Oct 28L11: Programming Systems for Specialized Hardware
Oct 30L12: Mapping AI Applications to the Datacenter Computer;PA3 截止
Nov 04民主日(停课)
Nov 06L13: Domain-Specific Programming Systems and AI-Driven Performance Optimization;WA3 截止
Nov 11L14: Cache Coherence
Nov 13L15: Implementing Synchronization + Memory Consistency;PA4 截止
Nov 18期中考试(晚间,停课)
Nov 20L16: Fine-Grained Locking and Lock-Free Programming
Dec 02L17: Transactional Memory (Part I)
Dec 03WA4 截止
Dec 04L18: Transactional Memory (Part II) + AMA;PA5 截止(不可用晚交天数)
Dec 11期末考试 3:30–6:30pm

作业与评分

类别占比说明
编程作业 ×58% + 12%×4 = 56%用 C++ 线程、ISPC、CUDA 等完成;可两人组队
书面作业 ×43%×4 = 12%三人组队,每次由课程组随机分配队友
每讲课堂参与4%每讲一次随堂小测验(或课后替代测验)
期中考试12%11 月 18 日晚间
期末考试16%12 月 11 日 3:30–6:30pm

本笔记说明

本笔记基于课程网站所有公开可获取的资料整理而成:

  • 课程主页、课程信息页、讲座索引页的全部文本;
  • 全部 18 讲幻灯片 PDF(已下载并提取全文);
  • 4 份书面作业 PDF(已下载并提取全文);
  • 5 个编程作业的公开 GitHub README。

访问受限内容(本笔记未包含):2025 年讲座视频(网站明确说明今年不向公众分发)、Ed Discussion 论坛(需校内账号)、Canvas 内资料。如需学习视频,可使用 2023 年公开版 YouTube 播放列表。

每讲笔记均遵循统一结构:概述 → 核心概念与定义(含现实类比与公式/图示)→ 代码示例与详细解说(含”代码做了什么”与”并行机制解说”)→ 关键要点 → 常见陷阱与注意事项 → 思考题(带答案)。所有代码示例均可独立运行或清晰说明运行方式,并明确标注其对应的讲座概念。