🧠 GPU内存 · 带宽优化
🎯 30章 从入门到精通
🏆
友好色系 · 一目了然
📘 点击卡片跳转对应章节
1
GPU内存层次结构全景
从全局内存到寄存器,一张图看懂GPU存储金字塔
↗
2
全局内存 (Global Memory)
带宽瓶颈与合并访问 (Coalescing) 原理
↗
3
共享内存 (Shared Memory)
片上高速缓存,手动管理数据复用
↗
4
寄存器 (Registers)
最快的存储,但数量有限,如何避免寄存器溢出
↗
5
常量内存 (Constant Memory)
只读缓存,适合广播数据
↗
6
纹理内存 (Texture Memory)
2D局部性优化,插值与边界处理
↗
7
本地内存 (Local Memory)
寄存器的“备胎”,为何会拖慢性能
↗
8
L1/L2缓存
GPU的自动缓存机制,与CPU缓存的异同
↗
9
内存带宽计算
理论带宽 vs 有效带宽,用nvprof实测
↗
10
合并访问实战 (AoS→SoA)
结构体数组转数组结构体
↗
11
Bank Conflict (存储体冲突)
共享内存的隐形杀手,如何避免
↗
12
Padding技术
在共享内存中加填充,消除Bank Conflict
↗
13
数据预取 (Prefetching)
用计算隐藏内存延迟
↗
14
异步内存拷贝
Stream与双缓冲,让数据传输与计算重叠
↗
15
统一内存 (Unified Memory)
简化编程,但性能陷阱在哪里
↗
16
页错误与迁移
统一内存背后的机制,如何优化数据局部性
↗
17
内存池 (Memory Pool)
自定义分配器,减少cudaMalloc开销
↗
18
寄存器优化
减少寄存器使用量,提升Occupancy
↗
19
Occupancy与性能
多少线程才算够?用CUDA Occupancy Calculator
↗
20
循环展开 (Loop Unrolling)
减少指令开销,提升内存吞吐
↗
21
向量化加载 (Vectorized Load)
使用int4/float4一次读取128位
↗
22
只读缓存 (Read-Only Cache)
__ldg指令与纹理管线的妙用
↗
23
Warp级别优化
Shuffle指令替代共享内存,减少同步
↗
24
内存延迟隐藏
足够的Warp是隐藏延迟的关键
↗
25
带宽受限 vs 计算受限
用Roofline模型分析你的内核
↗
26
NVIDIA Nsight工具链
Profiling内存行为,找到瓶颈
↗
27
矩阵乘法优化案例
从全局内存到寄存器,一步步榨干带宽
↗
28
Stencil计算优化
共享内存与寄存器重用的经典模式
↗
29
Reduce (归约) 优化
避免Bank Conflict与Warp Divergence
↗
30
课程总结:GPU内存优化Checklist
最佳实践与优化清单
↗