01
编译日志初探
什么是编译日志?为什么它能反映性能问题?日志的基本结构与关键字段。
基础入门
02
日志级别与性能信号
INFO、WARNING、ERROR、FATAL 分别代表什么?哪些级别需要重点关注?
日志级别信号
03
时间戳分析
如何从时间戳判断算子执行耗时?毫秒与微秒的精度差异。
时间精度
04
算子调度日志
识别算子启动、执行、同步三个阶段,定位哪个阶段最耗时。
调度阶段
05
内存分配日志
频繁的 malloc/free 是性能杀手,如何从日志中识别内存抖动。
内存抖动
06
显存与主机内存交互
PCIe 传输日志分析,识别数据搬运瓶颈。
PCIe搬运
07
Kernel Launch 日志
启动开销过大怎么办?分析 launch 参数与 grid/block 配置。
Kernel启动
08
同步点与 Barrier
同步操作日志过多会导致流水线停顿,如何识别不必要的同步。
同步Barrier
09
编译优化 Pass 日志
了解 -O2、-O3 等优化选项在日志中的体现,判断是否生效。
优化Pass
10
循环展开与向量化
从日志中查看编译器是否成功向量化,识别未向量化的热点。
向量化循环
11
内联与函数调用开销
日志中函数调用链过长怎么办?内联决策日志解读。
内联调用
12
分支预测与流水线停顿
日志中的分支误预测统计,如何减少分支指令。
分支预测
13
缓存命中率日志
L1/L2/L3 缓存 miss 率分析,数据局部性优化。
缓存局部性
14
TLB Miss 日志
页表缓存失效对性能的影响,大页配置建议。
TLB大页
15
NUMA 感知日志
跨 NUMA 节点访问内存的延迟惩罚,如何绑定 CPU 和内存。
NUMA绑定
16
I/O 等待日志
磁盘读写、网络传输的阻塞时间,异步 I/O 的必要性。
I/O异步
17
锁竞争与死锁日志
互斥锁、自旋锁的等待时间,无锁编程思路。
锁死锁
18
线程池与任务调度日志
线程创建/销毁开销,任务窃取算法是否生效。
线程池窃取
19
GPU 利用率日志
Stream Multiprocessor 占用率、warp 发散分析。
GPUSM
20
CPU-GPU 异步流日志
多流并发是否真正并行?虚假依赖如何识别。
异步流并发
21
TensorRT 引擎构建日志
层融合、精度校准、动态形状的日志解读。
TensorRT引擎
22
ONNX Runtime 日志
图优化、内存规划、执行提供者的性能日志。
ONNXRuntime
23
PyTorch JIT 日志
TorchScript 编译过程中的性能提示与 fallback。
JITTorchScript
24
XLA 编译日志
HLO 到 LLVM 的转换过程,识别未融合的算子。
XLAHLO
25
自定义算子日志
手写 CUDA kernel 的 launch 参数与性能计数器。
自定义CUDA
26
Profiler 与日志联动
NVIDIA Nsight、PyTorch Profiler 如何与日志交叉验证。
ProfilerNsight
27
日志聚合与可视化
使用 Python 脚本解析日志,生成火焰图与耗时分布图。
可视化火焰图
28
自动化瓶颈检测
编写规则引擎,从日志中自动标记可疑的慢算子。
自动化规则
29
案例实战一:BERT 推理
BERT 推理日志分析,定位 Transformer 层中的性能瓶颈。
BERT实战
30
案例实战二:ResNet-50
ResNet-50 推理日志分析,优化卷积与池化层的执行效率。
ResNet实战