01
GPU架构基础:内存层次
全局内存、共享内存、寄存器、L1/L2缓存及其对带宽的影响
架构缓存
02
带宽测试工具介绍
nvidia-smi、bandwidthTest、自定义CUDA微基准
工具基准
03
全局内存带宽测试
测量读写带宽,对齐访问与合并访问的重要性
全局内存合并
04
共享内存带宽与Bank冲突
测试共享内存带宽,分析Bank冲突及优化策略
共享内存Bank
05
寄存器与本地内存
寄存器溢出(Register Spill)影响,--ptxas-options=-v分析
寄存器溢出
06
L1/L2缓存命中率优化
调整访问模式提高命中率,cudaEvent计时验证
缓存命中率
07
内存事务与带宽利用率
32字节/128字节事务与带宽利用率关系
事务利用率
08
数据传输优化(Host-Device)
cudaMemcpyAsync与流(Stream)实现计算重叠
异步流
09
固定内存与零拷贝
可分页、固定内存与零拷贝(Zero-Copy)带宽对比
固定内存零拷贝
10
统一内存(Unified Memory)性能
测试带宽与页错误开销,对比手动管理
统一内存页错误
11
纹理内存与表面内存
纹理内存带宽优势(空间局部性),对比全局内存
纹理表面
12
常量内存与只读缓存
广播特性与__ldg只读缓存带宽提升
常量只读
13
Warp调度与占用率
Warp调度对延迟隐藏的影响,占用率计算器
Warp占用率
14
内存带宽与计算强度
Roofline模型,带宽瓶颈与计算瓶颈分析
Roofline强度
15
向量化加载与存储
int4、float4向量化类型提升带宽利用率
向量化SIMD
16
Bank冲突避免策略
填充(Padding)或改变数据布局避免共享内存Bank冲突
Bank填充
17
数据预取(Prefetching)
软件预取__pipeline_prefetch隐藏内存延迟
预取流水线
18
异步拷贝(Async Copy)
cuda::memcpy_async与管线(Pipeline)提升共享内存加载带宽
异步拷贝管线
19
内存池与分配器
cudaMallocAsync与内存池减少分配开销
内存池分配器
20
多GPU带宽测试
cudaMemcpyPeer测试P2P带宽,NVLink/PCIe差异
多GPUP2P
21
NCCL带宽测试
NCCL多节点通信带宽测试
NCCL集合通信
22
带宽Profiling工具
Nsight Systems与Nsight Compute分析带宽瓶颈
ProfilingNsight
23
内存带宽与功耗
频率、电压与功耗关系,nvidia-smi -q -d POWER监控
功耗监控
24
ECC内存影响
ECC开启/关闭对带宽的影响测试
ECC纠错
25
PCIe Gen3/Gen4/Gen5带宽对比
不同PCIe代际Host-Device传输带宽
PCIe代际
26
内存时钟与带宽调节
nvidia-smi -ac调节内存时钟与显存频率
超频时钟
27
带宽测试自动化脚本
Shell/Python脚本自动化测试并生成报告
自动化脚本
28
实际应用案例分析
矩阵乘法(GEMM)带宽优化,Naive与Tiled对比
GEMMTiled
29
性能调优方法论
建立基线、识别瓶颈、迭代优化(PGO)
方法论基线
30
综合实战:端到端调优
从Profiling到优化,输出性能报告与调优建议
实战报告