01
性能瓶颈初探
什么是算子性能瓶颈?为什么需要关注?常见的性能指标(延迟、吞吐量、内存带宽、计算利用率)。
概念指标
02
性能分析工具链概览
Linux perf、NVIDIA Nsight Systems、Nsight Compute、PyTorch Profiler、TensorBoard。
工具Profiler
03
环境准备与基准测试
搭建性能分析环境、编写基准测试脚本、控制变量法。
环境基准
04
CPU vs GPU 性能模型
理解计算与访存的差异、Roofline Model 入门、算术强度概念。
模型Roofline
05
内存层次结构与带宽
L1/L2 Cache、全局内存、共享内存、寄存器,以及它们对性能的影响。
内存带宽
06
计算瓶颈分析
FLOPS 利用率、指令级并行(ILP)、向量化(SIMD)、Tensor Core 使用。
计算ILP
07
访存瓶颈分析
内存合并访问、Bank Conflict、共享内存 Padding、数据预取。
访存合并
08
线程束与线程块调度
Warp 调度、Occupancy 计算、Block 大小选择、Grid 大小选择。
调度Occupancy
09
算子融合与 Kernel 合并
减少 Kernel Launch 开销、算子融合策略、JIT 编译(如 TorchDynamo)。
融合JIT
10
数据搬运与流水线
Host-Device 数据传输、异步拷贝、Stream 与 Event、流水线重叠。
搬运流水线
11
PyTorch Profiler 实战
使用 torch.profiler 记录性能数据、分析 trace、识别热点。
PyTorchTrace
12
Nsight Systems 实战
时间线视图、CPU/GPU 活动分析、API 调用追踪。
Nsight时间线
13
Nsight Compute 实战
Kernel 性能分析、指令统计、内存统计、Occupancy 分析。
Kernel指令
14
Linux Perf 实战
CPU 性能计数器、采样分析、火焰图生成与解读。
Perf火焰图
15
TensorBoard 性能分析
使用 TensorBoard 的 Profile 插件、分布式训练性能视图。
TensorBoard分布式
16
矩阵乘法(GEMM)优化案例
从朴素实现到 cuBLAS,分析每一步的瓶颈与优化。
GEMMcuBLAS
17
卷积(Conv2d)优化案例
im2col、Winograd、FFT 方法对比,显存与计算权衡。
卷积Winograd
18
Attention 机制优化案例
FlashAttention 原理、显存带宽瓶颈、分块计算。
AttentionFlash
19
Reduce 操作优化案例
Warp Reduce、Block Reduce、多阶段 Reduce、原子操作。
Reduce原子
20
Softmax 与 LayerNorm 优化案例
数值稳定性、Online Softmax、融合实现。
SoftmaxLayerNorm
21
Embedding 与 Gather 操作优化案例
访存模式、缓存友好、大表处理。
EmbeddingGather
22
激活函数与逐元素操作优化案例
带宽受限型算子、融合与 Kernel Launch 开销。
激活逐元素
23
数据加载与预处理瓶颈
DataLoader 多进程、内存映射、预处理流水线、IO 瓶颈。
IODataLoader
24
分布式训练中的性能瓶颈
AllReduce 通信、梯度压缩、异步执行、拓扑感知。
分布式通信
25
混合精度训练与性能
FP16/BF16/FP8 优势、Loss Scaling、Tensor Core 利用。
混合精度FP16
26
编译器优化与图捕获
TorchScript、TorchDynamo、Triton 编译器、XLA。
编译器图捕获
27
自定义 CUDA Kernel 调试与优化
使用 cuda-gdb、cuda-memcheck、NVTX 标记。
CUDA调试
28
性能回归测试与 CI 集成
自动化基准测试、性能比较、告警机制。
CI回归
29
案例研究:大语言模型推理优化
KV Cache、Continuous Batching、PageAttention。
LLM推理
30
综合实战:端到端性能优化流程
从 Profiling 到优化再到验证的完整闭环。
实战闭环