1. GPU内存体系:从仓库到工作台的层级解析
在AI计算领域,GPU的内存系统就像一座精心设计的金字塔,每一层都有其独特的定位和价值。理解这个层级结构,是突破"内存墙"瓶颈的第一步。
1.1 显存(HBM):数据的大本营
显存(通常指HBM)是GPU内存体系中最底层但容量最大的部分,相当于我们案例中的"食材仓库"。现代AI加速卡如NVIDIA H100采用的HBM3显存,具有两大核心特性:
-
带宽优先设计:HBM采用3D堆叠技术,通过TSV硅通孔实现垂直互联。以H100为例,其HBM3带宽可达3TB/s,是GDDR6的5倍以上。这种设计理念很明确——既然无法避免数据搬运,那就让搬运速度最大化。
-
容量与延迟的权衡:当前顶级AI加速卡的HBM容量在80GB左右(如H100 80GB版本)。这个数字看似很大,但当我们处理千亿参数大模型时,仅模型参数就需要占用数十GB空间。更关键的是,HBM的访问延迟通常在数百纳秒量级,与计算核心的皮秒级运算速度形成鲜明对比。
实际工程经验:在LLM推理中,HBM带宽利用率直接决定整体性能。我们经常通过"算子融合"技术将多个kernel合并执行,目的就是减少HBM访问次数。例如将LayerNorm和Attention计算融合,可以避免中间结果写回HBM。
1.2 共享内存(Shared Memory):工作组的中转站
位于金字塔中间层的是共享内存(在NVIDIA架构中称为L1 Cache/Shared Memory)。这是程序员可以显式控制的缓存,特点包括:
-
线程块级共享:每个SM(流式多处理器)中的共享内存只能被该SM内的线程块共享。以A100为例,每个SM有192KB共享内存,可配置为64KB L1+128KB共享或128KB L1+64KB共享。
-
速度与灵活性:共享内存的延迟约比HBM低一个数量级(10-20ns),带宽更是高出数倍。但更关键的是,它支持原子操作和细粒度同步,非常适合用于归约操作(如attention中的softmax计算)。
cpp复制// 典型的使用共享内存进行归约计算的CUDA代码示例
__global__ void reduceSum(float *input, float *output) {
__sh
