🚀 CUDA · 全局内存合并访问
30 节 · 从入门到实战
1
全局内存合并访问:为什么合并访问如此重要?从硬件架构看内存事务。
硬件事务 · 带宽关键
2
合并访问的条件:对齐、连续、线程束粒度。
三大基石
3
对齐访问:128字节对齐与内存段。
段对齐 · 缓存行
4
连续访问:线程ID与内存地址的映射关系。
ID → 地址
5
步长访问:非连续访问的性能代价。
stride 惩罚
6
随机访问:最坏情况下的内存访问模式。
随机 · 低效
7
结构体数组 vs 数组结构体:数据布局对合并的影响。
AoS vs SoA
8
数组结构体(SoA)优化:实战案例。
SoA 实战
9
结构体数组(AoS)优化:何时使用?
AoS 场景
10
矩阵转置:合并访问的经典案例。
转置 · 合并
11
矩阵乘法:共享内存与合并访问的配合。
共享内存 · 合并
12
归约操作:合并访问的优化技巧。
归约 · 优化
13
直方图计算:原子操作与合并访问的权衡。
原子 · 权衡
14
并行前缀和:合并访问与工作效率。
前缀和 · 效率
15
内存填充:避免bank conflict的同时保持合并。
padding · 合并
16
使用cudaMallocPitch:自动对齐分配。
cudaMallocPitch
17
使用cudaMemcpy2D:处理二维数组的合并访问。
cudaMemcpy2D
18
纹理内存:只读缓存的合并访问特性。
纹理 · 只读缓存
19
常量内存:广播与合并访问。
常量 · 广播
20
只读缓存(__ldg):绕过L1的合并访问。
__ldg 指令
21
向量化加载:int4/float4的使用技巧。
向量化 · int4
22
编译器优化:-G选项对合并访问的影响。
-G 调试
23
性能分析工具:NVIDIA Nsight Compute的合并访问分析。
Nsight Compute
24
性能计数器:理解gld_效率与gst_效率。
gld/gst 效率
25
L1与L2缓存:对合并访问的影响。
L1/L2 影响
26
计算能力与合并访问:不同架构的差异。
架构差异
27
Warp Shuffle:替代全局内存合并的通信方式。
shuffle 指令
28
CUDA Graphs:合并访问的图级别优化。
CUDA Graphs
29
多GPU场景:跨设备内存访问的合并策略。
多GPU · 合并
30
综合案例:从实际项目看合并访问优化全过程。
项目实战 · 全流程