全部课程/CS267

CS267:并行计算机应用

从内存层次、Roofline 与通信成本出发,系统学习 OpenMP、MPI、CUDA、线性代数、图算法和科学计算中的并行方法。

当计算可以并行而数据搬运不行时,怎样安排工作与通信才能真正加速?

加州大学伯克利分校Aydin Buluç、James Demmel、Kathy Yelick2025 年春季27 讲官方课程 ↗

从这里开始

导论与概述

已完成 0 / 27 讲 · 记录保存在当前浏览器
开始学习

学习进度

0 / 27讲义已完成

已完成 0 / 7 份实践
由你确认,不自动标记

课程地图

  1. 1机器与局部性第 1–3 讲

    数据移动为何比计算更贵?

  2. 2并行编程第 4–11 讲

    线程、进程与 GPU 怎样协作?

  3. 3学习系统第 12–14 讲

    如何调度大规模学习任务?

  4. 4数值算法第 15–20 讲

    矩阵与网格怎样分解?

  5. 5图与负载均衡第 22–26 讲

    不规则任务怎样高效运行?

三种学习方式

学习

读讲义,理解原理与机制。
把算力、内存带宽、延迟与通信量放在同一张成本图上。

查看讲义

思考

做推演与自测,检验理解。
沿线程、rank、GPU block 和同步点检查每份数据由谁持有。

进入推演

实践

用工作簿与实验验证方法。
改变规模、布局或负载,解释性能曲线而不只报一个 speedup。

查看实践

课程讲义

机器与局部性

数据移动为何比计算更贵?

  1. 01导论与概述讲义
  2. 02内存层次结构与矩阵乘法讲义
  3. 03矩阵乘法与 Roofline 性能模型讲义

并行编程

线程、进程与 GPU 怎样协作?

  1. 04共享内存并行编程讲义
  2. 05模拟中的并行性与局部性讲义
  3. 06模拟中的并行性与局部性讲义
  4. 6b通信避免矩阵乘法讲义
  5. 07分布式内存机器与 MPI 编程讲义
  6. 08高级 MPI 与集合通信算法讲义
  7. 09CUDA 与 GPU 导论讲义
  8. 10数据并行算法讲义
  9. 11UPC++ 分区全局地址空间讲义

学习系统

如何调度大规模学习任务?

  1. 12机器学习讲义
  2. 13Ray 分布式框架讲义
  3. 14机器学习讲义

数值算法

矩阵与网格怎样分解?

  1. 15并行矩阵乘法讲义
  2. 16稠密线性代数讲义
  3. 17随机化算法讲义
  4. 18结构化网格讲义
  5. 19稀疏矩阵-向量乘法与迭代求解器讲义
  6. 20快速傅里叶变换讲义

图与负载均衡

不规则任务怎样高效运行?

  1. 22图算法讲义
  2. 23选择与排序讲义
  3. 24计算生物学讲义
  4. 25图划分与负载均衡讲义
  5. 25b动态负载均衡与 Work Stealing讲义
  6. 26N-Body 层次化方法:Barnes–Hut、FMM 与通信下界讲义

思考 · 推演与自测

推演与概念检查已编排在各讲中。

从第一讲的练习开始 →

实践 · 工作簿与实验

把理解落到可检查的推导、测试与实现证据。

  1. 01矩阵乘法优化工作簿
  2. 2-1粒子模拟(OpenMP)工作簿
  3. 2-2粒子模拟(MPI)工作簿
  4. 2-3粒子模拟(GPU)工作簿
  5. 03基因组组装工作簿
  6. 04分布式 PCG 求解器工作簿
  7. 01并行计算实践工作簿