GPU开发调试技巧与问题定位

📚 共计 30 章节
01
GPU调试概述
GPU编程模型简介 · 常见调试场景 · 调试工具链概览
入门全景
02
CUDA编程基础与调试入口
核函数编写要点 · cudaError_t · cudaGetLastError
CUDA错误处理
03
Nsight Systems入门
时间线分析 · CPU/GPU交互 · API追踪与瓶颈定位
性能追踪
04
Nsight Compute深入
内核分析器 · Occupancy/Warp · Memory/Compute吞吐
分析吞吐
05
cuda-gdb调试
断点设置 · 变量查看 · 条件断点 · 设备端单步
调试GDB
06
CUDA-MEMCHECK工具
内存越界 · 未初始化变量 · 竞争条件检测
检查内存
07
计算与通信重叠
Stream/Event · 异步操作 · 流水线优化
异步重叠
08
共享内存与Bank Conflict
共享内存配置 · Bank冲突检测 · Padding技巧
共享内存优化
09
全局内存访问模式
合并访问 · 对齐要求 · 缓存行为调试
内存带宽
10
寄存器溢出与Local Memory
寄存器压力 · 溢出检测 · 优化策略
寄存器性能
11
Warp Divergence与分支优化
分支发散检测 · 谓词指令 · 重构技巧
分支Warp
12
原子操作与锁
原子函数调试 · 锁实现 · 死锁检测
原子同步
13
动态并行与递归
动态并行调试 · 递归限制 · 性能影响
动态递归
14
多GPU调试
点对点通信 · NCCL调试 · 负载均衡分析
多GPUNCCL
15
CUDA Graphs
图捕获与重放 · 调试图执行 · 性能对比
Graph优化
16
Tensor Core调试
WMMA API · 矩阵乘法调试 · 精度问题
TensorCore精度
17
cuBLAS与cuDNN调试
库函数调用追踪 · 性能分析 · 版本兼容性
cuBLAScuDNN
18
内存泄漏检测
cudaMalloc/Free追踪 · Valgrind集成 · 工具使用
泄漏Valgrind
19
CUDA Unified Memory
页面错误分析 · 迁移开销 · Prefetching调试
UM迁移
20
PTX与SASS分析
PTX指令查看 · SASS反汇编 · 寄存器分配分析
PTXSASS
21
CUDA Toolkit版本管理
版本兼容性 · 驱动与运行时 · 动态库调试
版本兼容
22
Linux环境调试
dmesg日志 · NVIDIA-SMI监控 · Xid错误解析
LinuxXid
23
Windows环境调试
WDDM驱动模型 · TDR超时 · 事件查看器
WindowsTDR
24
容器与虚拟化调试
Docker GPU映射 · vGPU调试 · 资源隔离
容器vGPU
25
性能计数器与Profiling
nvprof/ncu指标 · 自定义计数器 · PMU访问
Profiling计数器
26
浮点精度与数值稳定性
IEEE 754 · FP16/BF16调试 · 数值误差分析
精度FP16
27
CUDA异常与硬件错误
ECC错误处理 · SBE/DBE检测 · RAS特性
ECC硬件
28
自动化测试框架
Google Test集成 · CUDA单元测试 · 回归测试
测试GTest
29
日志与监控系统
NVIDIA DCGM · Prometheus集成 · 告警设置
监控DCGM
30
综合案例实战
端到端调试流程 · 问题定位方法论 · 最佳实践总结
实战总结