Skip to content
Gains Summary
Main Navigation 首页 / Home
C++ 编程 / C++ Programming
系统与高性能 / Systems & Performance
Web 开发 / Web Development
人工智能 / Artificial Intelligence
工业软件 / Industrial Software
其他内容 / Other Topics
C++ 编程 / C++系统与性能 / SystemsWeb 开发 / Web人工智能 / AI工业软件 / Industrial

外观

Sidebar Navigation

← 系统与高性能 / Systems & Performance

计算系统 / Computing Systems

1. 计算系统:计算机如何执行与加速程序

2. 从 C++ 源码到 CPU 执行

3. CPU 流水线、乱序执行与分支预测

4. Cache、一致性、伪共享与 NUMA

5. GPU、SM、Warp 与显存

6. 计算执行模型:程序怎样映射到机器

7. SIMD 与编译器向量化

8. C++ 多线程与 OpenMP

9. CUDA 平台与编程模型

10. CUDA Kernel、内存与性能

11. CPU-GPU 异构流水线

12. MPI 与分布式并行

13. 并行算法模式

14. 性能模型与工具

15. 递进学习项目:从单线程到集群

历史完整正文 / Original Deep Dives

1. 历史完整正文:统一前文章逐篇保留

原体系结构与硬件 / Original Architecture

1. 硬件编程与高性能计算:一张可走通的学习地图 / A Practical Learning Map for Hardware Programming and HPC

2. 计算机体系结构:CPU、内存与 GPU / Computer Architecture: CPUs, Memory, and GPUs

3. 计算机架构基础——为什么 GPU 比 CPU 更快 / Computer Architecture Fundamentals: Why GPUs Outperform CPUs

4. 并行计算理论——30 天训练能优化到多快? / Parallel Computing Theory and the Limits of Training Acceleration

5. GPU 架构深入——上万个核心如何分工协作 / GPU Architecture and Massive Parallel Execution

6. CUDA 编程模型——把矩阵乘法映射到 GPU / The CUDA Programming Model for Mapping Matrix Multiplication to GPUs

7. CUDA 内存管理——百亿参数如何装进显存 / CUDA Memory Management for Large Models

8. CUDA 性能优化——从 30 天缩短到 10 天 / CUDA Performance Optimization

9. CPU 并行编程——OpenMP 与 SIMD 向量化 / CPU Parallel Programming with OpenMP and SIMD

10. HPC 集群与 MPI——多节点分布式训练 / HPC Clusters and MPI for Distributed Training

11. 异构计算——CPU 与 GPU 如何协同工作 / Heterogeneous Computing with CPUs and GPUs

12. 深度学习训练优化实战——从 30 天到 3 天 / Deep Learning Training Optimization from Thirty Days to Three

13. 性能分析工具——找到真正的瓶颈 / Performance Analysis Tools for Finding Real Bottlenecks

14. NPU 全景——昇腾/寒武纪/TPU/苹果生态 / The NPU Landscape: Ascend, Cambricon, TPU, and Apple

15. 未来趋势——2030 年的计算机会是什么形态 / Future Computing Trends Toward 2030

16. 硬件与高性能计算:从“程序为什么慢”开始 / Hardware and HPC Starting from Why Programs Are Slow

原并行计算 / Original Parallel Computing

1. 并行计算:从 SIMD 到 MPI / Parallel Computing from SIMD to MPI

2. 并行计算全景:从晶体管、CPU、GPU 到计算集群 / Parallel Computing from Transistors, CPUs, and GPUs to Clusters

3. 并行计算基础:任务分解、加速比与可扩展性 / Parallel Computing Fundamentals: Decomposition, Speedup, and Scalability

4. 处理器体系结构:从指令流水线到多核芯片 / Processor Architecture from Instruction Pipelines to Multicore Chips

5. CPU 并行:多线程、SIMD、Cache 一致性与 NUMA / CPU Parallelism with Threads, SIMD, Cache Coherence, and NUMA

6. 内存层次:Cache、带宽、局部性与一致性 / Memory Hierarchies, Bandwidth, Locality, and Coherence

7. GPU 体系结构:SIMT、Warp、SM 与吞吐优先设计 / GPU Architecture with SIMT, Warps, and Streaming Multiprocessors

8. CUDA 编程模型:Thread、Block、Grid 与内存协作 / CUDA Threads, Blocks, Grids, and Cooperative Memory Access

9. 并行算法模式:Map、Reduce、Scan、Stencil 与任务图 / Parallel Patterns: Map, Reduce, Scan, Stencil, and Task Graphs

10. 异构计算:CPU、GPU、NPU 如何协同工作 / Heterogeneous Computing with CPUs, GPUs, and NPUs

11. 分布式并行:MPI、集合通信、RDMA 与多机多卡 / Distributed Parallelism with MPI, Collective Communication, and RDMA

12. 性能工程:测量、Roofline、瓶颈定位与优化闭环 / Performance Engineering with Measurement, Roofline, and Bottleneck Analysis

13. 并行计算实战:AI、CAE、图像与科学计算 / Parallel Computing for AI, CAE, Imaging, and Scientific Computing

14. 并行计算实践路线:从单核优化到多机多卡 / A Parallel Computing Project Path from Single-Core to Multi-Node GPUs

本页目录

硬件与高性能计算:从“程序为什么慢”开始 / Hardware and HPC Starting from Why Programs Are Slow ​

这套笔记不是硬件名词词典。它只围绕一个问题展开:

一段程序为什么慢,我们能从哪里把时间省下来?

先别急着记 CUDA Core、Warp、HBM 和 NCCL。面对任何性能问题,先问下面四句话:

  1. 算得慢吗? 算术单元来不及完成工作。
  2. 取得慢吗? 数据没有及时送到计算单元。
  3. 等得久吗? CPU、GPU 或多张卡在彼此等待。
  4. 装得下吗? 内存或显存容量不足。

后面的所有术语,都是为回答这四个问题服务的。

先建立一个心智模型 ​

把计算机想成一家餐厅:

计算机概念餐厅里的角色真正要关注的事
CPU经验丰富的主厨擅长复杂、变化多的任务
GPU大量分工一致的厨师擅长同时重复同一种操作
寄存器 / Cache手边和操作台上的食材很快,但放不下太多
内存 / 显存后厨仓库容量更大,取用更慢
SSD楼下的大仓库容量很大,搬运耗时
PCIe / NVLink / 网络传送带和运输道路决定数据搬运速度
CUDA / OpenMP / MPI排班和协作规则告诉不同工人如何分工

这个类比不负责解释所有细节,但能帮你判断一个新名词处于哪一层、解决什么问题。

推荐路线:先主干,后支线 ​

历史原文入口说明 ​

本目录保存课程重组前的体系结构与高性能原文。

它用于:

  • 恢复旧链接;
  • 查找原始图示;
  • 核对旧代码;
  • 比较术语变化;
  • 追踪课程合并;
  • 保留实验与面试问答。

最新学习顺序和勘误以当前权威课程为准。

历史内容的使用方法 ​

text
current course
  -> establish current concept and terminology
historical original
  -> recover examples and earlier explanation
official documentation
  -> verify version-sensitive facts
1
2
3
4
5
6

不要把旧硬件参数和旧工具命令直接当作当前保证。

章节 1:计算机架构基础 ​

本章建立“指令必须等待数据”的核心直觉。

阅读重点:

  • CPU 执行指令;
  • 寄存器与 Cache;
  • 主存和存储;
  • 延迟与带宽;
  • 数据局部性;
  • 性能测量。

完成后应能解释为什么同样的计算,不同访问顺序可能有巨大差异。

章节 2:并行计算理论 ​

本章解释为什么增加资源不会无限加速。

重点:

  • Work 与关键路径;
  • Amdahl;
  • Gustafson;
  • 加速比;
  • 并行效率;
  • 强弱扩展;
  • 通信和同步。

公式必须与固定工作量和测量口径一起使用。

章节 3:GPU 架构 ​

本章解释 GPU 为什么用大量线程追求吞吐。

重点:

  • SM;
  • Warp;
  • 调度;
  • 分支发散;
  • 寄存器;
  • 共享内存;
  • 全局内存;
  • Occupancy。

Occupancy 是资源驻留指标,不是最终性能分数。

章节 4:CUDA 编程模型 ​

CUDA 把 Host 程序和 Device Kernel 连接起来。

重点:

  • Grid/Block/Thread;
  • 线程索引;
  • Kernel 启动;
  • 同步范围;
  • 错误检查;
  • Stream;
  • 设备选择;
  • 端到端时间。

章节 5:CUDA 内存 ​

本章关注数据如何到达 GPU 执行单元。

重点:

  • Global Memory;
  • Shared Memory;
  • Register;
  • Constant/Texture;
  • Pinned Memory;
  • Unified Memory;
  • 合并访问;
  • 数据传输。

章节 6:CUDA 优化 ​

优化从 Nsight 证据开始。

检查:

  • CPU/GPU 时间线;
  • Kernel 占比;
  • Warp Stall;
  • Memory SOL;
  • Compute SOL;
  • 数据传输;
  • 启动间隙;
  • 正确性。

不要把固定阈值当作所有 GPU 的通用结论。

章节 7:OpenMP 与 SIMD ​

本章连接 CPU 线程和向量单元。

重点:

  • Parallel Region;
  • Loop Scheduling;
  • Reduction;
  • Data Sharing;
  • SIMD;
  • False Sharing;
  • NUMA;
  • 线程亲和性。

章节 8:MPI 与 HPC ​

MPI 使用独立进程和消息扩展到多节点。

重点:

  • Rank;
  • Communicator;
  • Point-to-Point;
  • Collective;
  • Domain Decomposition;
  • Halo;
  • Latency/Bandwidth;
  • Checkpoint。

章节 9:异构计算 ​

异构计算设计 CPU 与加速器之间的任务和数据流。

text
CPU control and irregular work
  -> batch transfer
  -> accelerator kernel
  -> overlap independent work
  -> synchronize required result
1
2
3
4
5

频繁往返会抵消加速收益。

章节 10:训练优化 ​

训练性能由计算、通信、内存和数据管线共同决定。

重点:

  • Mixed Precision;
  • Data/Model/Pipeline Parallel;
  • Optimizer State;
  • Activation;
  • Gradient Communication;
  • Checkpoint;
  • Data Loader;
  • GPU 利用时间线。

章节 11:性能分析工具 ​

历史文章最初集中于 Nsight 与 PyTorch Profiler。

当前工具指南还加入:

  • WPR;
  • WPA;
  • Intel VTune Hotspots;
  • VTune Threading;
  • VTune Memory Access;
  • Microarchitecture Exploration。

参见当前 性能分析工具。

章节 12:NPU ​

NPU 评估不能只看 TOPS。

检查:

  • 数据类型;
  • 算子覆盖;
  • 动态形状;
  • 内存;
  • 编译器;
  • Host 回退;
  • 工具链;
  • 实际模型延迟和吞吐。

章节 13:未来趋势 ​

判断新技术时继续使用三条主线:

text
compute
memory and storage
communication
1
2
3

新硬件是否有效,取决于完整应用能否使用,而不是单项峰值。

历史实验复现 ​

复现旧实验前记录:

  • 原提交;
  • 编译器;
  • CUDA/驱动;
  • 硬件;
  • 输入;
  • 命令;
  • 线程与设备;
  • 原始结果;
  • 当前差异。

无法复原环境时,应把结果标为历史参考。

历史代码迁移 ​

迁移步骤:

  1. 先理解原例子要证明什么;
  2. 固定正确性测试;
  3. 更新构建与 API;
  4. 保留原实现对照;
  5. 重新测量;
  6. 说明语义变化;
  7. 把现代版本放入当前课程。

不要无记录覆盖原代码。

阅读完成标准 ​

读者应能:

  • 沿计算、存储、通信定位概念;
  • 区分 CPU、GPU、NPU 的执行特点;
  • 解释并行扩展限制;
  • 设计基本性能实验;
  • 选择 WPR/WPA、VTune 或 Nsight;
  • 区分历史结论与当前事实;
  • 找到对应权威文章;
  • 用 Git 验证来源。

第一遍:建立直觉(约 2~3 小时) ​

按顺序只读每章的“先抓住直觉”和“升华/核心记忆点”:

  1. 计算机架构基础:为什么数据位置会影响速度
  2. 并行计算理论:为什么加机器不等于等比例变快
  3. GPU 架构:GPU 为什么适合大量重复计算
  4. CUDA 编程模型:代码如何变成许多 GPU 线程
  5. CUDA 内存:为什么“搬数据”常比“做计算”更贵

这一遍遇到公式、具体型号参数和完整代码,可以先跳过。

第二遍:学会定位与优化 ​

  1. 性能分析工具:先用证据判断时间花在哪里
  2. CUDA 性能优化:针对计算、访存和调度瓶颈下手
  3. CPU 并行:OpenMP 与 SIMD:别让 CPU 端拖住 GPU
  4. CPU 与 GPU 协同:让搬运和计算重叠

注意:性能分析应当先于优化。原编号保留,是为了不破坏已有链接。

第三遍:扩展到训练和集群 ​

  1. MPI 与 HPC 集群:多机多卡为何受通信限制
  2. 深度学习训练优化:把硬件原理落到训练配置
  3. NPU 全景:理解不同加速器的共同点与生态差异
  4. 未来趋势:用“计算、存储、通信”判断新技术

一个概念应该学到什么程度 ​

每遇到一个术语,不要先背定义,按这个顺序理解:

  1. 它解决什么问题? 例如 Shared Memory 用来减少慢速显存访问。
  2. 不用它会怎样? 线程会反复从 Global Memory 搬同一批数据。
  3. 它付出什么代价? Shared Memory 容量有限,还需要线程同步。
  4. 什么时候该用? 多个线程会重复使用同一小块数据时。
  5. 最后才是怎么写。 再看 API、关键字和代码模板。

能用自己的话回答前四问,就算真正理解;型号数字、命令参数和 API 可以随用随查。

贯穿全篇的小例子 ​

我们用“向量相加”建立最小模型:

text
c[0] = a[0] + b[0]
c[1] = a[1] + b[1]
c[2] = a[2] + b[2]
...
1
2
3
4

每一行互不依赖,因此可以分给不同工人同时计算。由它可以逐步引出:

  • CPU 单核:一个工人依次完成;
  • CPU 多核 / SIMD:少量工人一次处理多份数据;
  • GPU:成百上千个轻量线程共同完成;
  • CUDA:描述这些 GPU 线程如何编号和访问数据;
  • 多 GPU:先切分任务,完成后再交换或汇总结果;
  • 性能优化:判断时间到底花在加法、搬运还是等待上。

带着这个小例子进入正文,比一上来想象 175B 模型更容易。大模型训练只是同一组原理在更大规模上的应用。

阅读约定 ​

  • 先抓住直觉:不依赖术语的解释,第一次阅读重点看。
  • 必须理解:会影响后续章节的主干知识。
  • 用到再查:型号参数、API 和工具命令,不要求背诵。
  • 深入阅读:解释原理边界,第一遍可以跳过。

准备好了就从 第 0 章:全景学习路线 开始;如果只想快速入门,可直接进入 第 1 章。

最后更新于:

Pager
上一篇15. 未来趋势——2030 年的计算机会是什么形态 / Future Computing Trends Toward 2030
下一篇1. 并行计算:从 SIMD 到 MPI / Parallel Computing from SIMD to MPI

持续记录,持续成长

Copyright © Tidenflow