AI Infra 硬件体系与编程模型:8. 内存层级体系详解
2026/6/8 20:21:56 网站建设 项目流程

AI Infra 硬核拆解:GPU 内存层级体系——大模型时代的性能天花板

在我们的 SM 架构系列文章中,我们已经深入解析了 SM 的计算核心(CUDA Core、Tensor Core)和调度机制(Warp 调度)。今天,我们终于要触及 AI 系统真正的性能天花板:GPU 内存层级体系

毫不夸张地说,在大模型时代,90% 以上的性能瓶颈都在内存,而不是计算。一个 7B 模型的推理,计算只占不到 30% 的时间,剩下的 70% 都在等待数据从内存传输到计算单元。即使是训练,随着 Tensor Core 性能的指数级提升,内存带宽也已经成为了主要瓶颈。

不理解 GPU 的内存层级体系,你就永远无法真正解释为什么同样的 FLOPS 不同 GPU 实际性能差异巨大,为什么 FlashAttention 能带来数倍的性能提升,为什么大模型推理会受到显存容量的严格限制。

今天,我们就从硬件底层到软件优化,彻底搞清楚 GPU 的内存层级体系,以及它是如何决定 AI 系统的真实性能的。

一、为什么需要内存层级体系?内存墙问题

在开始之前,我们先思考一个最根本的问题:为什么 GPU 要设计这么复杂的内存层级体系?直接用一个又大又快的内存不好吗?

答案很简单:受限于物理定律和成本,我们无法制造出一个同时满足"大容量、高速度、低功耗、低成本"的内存

  • 速度越快的内存,单位容量的成本越高,功耗也越高
  • 容量越大的内存,速度越慢,延迟越高

这就是著名的**内存墙(Memory Wall)**问题:计算单元的性能增长速度远远超过了内存的性能增长速度,导致计算单元经常处于空闲状态,等待数据从内存传输过来。

解决内存墙问题的唯一方法:利用局部性原理,构建一个多层级的内存体系。将频繁访问的数据放在靠近计算单元的高速内存中,将不频繁访问的数据放在远离计算单元的低速内存中。

正确的比喻:如果把计算单元比作一个厨师,那么内存层级体系就是:

  • 寄存器:厨师手里的食材,伸手就能拿到
  • 共享内存/L1缓存:厨房的操作台,几步就能走到
  • L2缓存:餐厅的仓库,需要走几分钟
  • HBM显存:超市,需要开车去买

厨师的工作效率,很大程度上取决于他需要多少次去超市买东西。

二、GPU 内存层级体系概览

现代 GPU 采用严格的分层内存设计,从快到慢、从小到大依次是:

GPU 内存层级 ├── 寄存器文件(Register File) │ └── 每个 SM 独立拥有 ├── L1 缓存 / 共享内存(L1 Cache / Shared Memory) │ └── 每个 SM 独立拥有,可软件划分 ├── L2 缓存(L2 Cache) │ └── 所有 SM 共享 └── 全局显存(Global Memory) └── 所有 SM 共享,即 HBM

核心设计原则

  • 越靠近计算单元的内存,速度越快,容量越小
  • 越远离计算单元的内存,速度越慢,容量越大
  • 上层内存是下层内存的缓存

各层内存的典型性能对比(以 H100 为例):

内存类型每个 SM 容量总容量延迟(时钟周期)带宽(每个 SM)总带宽谁管理
寄存器256 KB~36 MB1~19 TB/s~2700 TB/s编译器
共享内存228 KB~32 MB20-30~3 TB/s~430 TB/s程序员
L1 缓存228 KB~32 MB20-30~3 TB/s~430 TB/s硬件
L2 缓存-50 MB150-200-3.35 TB/s硬件
HBM3-80 GB400-800-3.35 TB/s程序员

震撼的数字:寄存器的带宽是 HBM 的800 倍,延迟是 HBM 的1/400。这就是为什么我们要尽可能将数据留在寄存器中的原因。

三、寄存器文件:最快的存储,也是最容易被忽视的

寄存器文件是 GPU 上最快的存储,也是整个内存层级体系的基石。但同时,它也是最容易被程序员忽视的一层,因为它完全由编译器管理。

3.1 寄存器的基本特性

  • 每个 SM 独立拥有:H100 每个 SM 有 256 KB 的寄存器文件,整个 GPU 共有 144 × 256 KB = 36 MB 的寄存器
  • 线程私有:每个线程有自己独立的寄存器集合,其他线程无法访问
  • 零延迟访问:寄存器访问只需要 1 个时钟周期,和计算本身的延迟一样
  • 极高带宽:H100 每个 SM 的寄存器带宽约为 19 TB/s,是 HBM 的 5.7 倍

3.2 寄存器的分配与管理

寄存器是动态分配给活跃线程的。当一个 Warp 被调度到 SM 上时,SM 会为 Warp 中的每个线程分配所需的寄存器。

关键限制寄存器的数量直接决定了 SM 能够同时驻留的 Warp 数量

  • 如果每个线程使用 32 个寄存器,那么一个 Warp(32 个线程)需要 32 × 32 = 1024 个寄存器
  • H100 每个 SM 有 256 KB = 65536 个 32 位寄存器
  • 所以每个 SM 最多可以驻留 65536 ÷ 1024 = 64 个 Warp,刚好达到 SM 的最大 Warp 数限制

但如果每个线程使用 64 个寄存器,那么一个 Warp 需要 2048 个寄存器,每个 SM 最多只能驻留 32 个 Warp,SM 占用率只有 50%。

3.3 寄存器溢出:性能的隐形杀手

当一个线程需要的寄存器数量超过了编译器能够分配的数量时,就会发生寄存器溢出(Register Spilling)。编译器会将多余的变量"溢出"到 L1 缓存甚至全局内存中。

寄存器溢出的性能影响

  • 一次寄存器溢出会导致一次内存访问,延迟从 1 个周期增加到 20 个周期以上
  • 严重的寄存器溢出会导致性能下降 2-10 倍
  • 这是很多 AI 算子性能不佳的主要原因之一

AI 工作负载中的寄存器优化

  • 减少每个线程的变量数量
  • 尽量使用短生命周期的变量
  • 避免使用大的数组或结构体
  • 使用编译器选项-maxrregcount限制每个线程的寄存器使用量

四、L1 缓存 / 共享内存:最灵活的片上存储

L1 缓存和共享内存是 GPU 内存体系中最特殊的一层,因为它们是同一个物理内存的不同逻辑划分。程序员可以根据需要调整它们之间的比例。

4.1 基本特性

  • 每个 SM 独立拥有:H100 每个 SM 有 228 KB 的 L1/共享内存
  • 可软件划分:可以配置为 0 KB 共享内存 + 228 KB L1 缓存,或 228 KB 共享内存 + 0 KB L1 缓存,或中间的任意比例
  • 低延迟高带宽:访问延迟约 20-30 个时钟周期,带宽约 3 TB/s per SM
  • 线程块共享:共享内存是同一个线程块内的所有线程共享的,L1 缓存是同一个 SM 内的所有线程共享的

4.2 L1 缓存:自动管理的高速缓存

L1 缓存是由硬件自动管理的,用于缓存频繁访问的全局内存数据。它的工作原理和 CPU 的 L1 缓存类似。

L1 缓存的特点

  • 硬件自动加载和淘汰数据
  • 对程序员透明
  • 缓存行大小为 128 字节
  • 写回策略:写入 L1 缓存的数据不会立即写回全局内存

AI 工作负载中的 L1 缓存

  • 主要用于缓存模型参数和中间结果
  • 对于小的算子,L1 缓存可以显著提高性能
  • 对于大的算子,L1 缓存的作用有限,因为数据太大无法全部缓存

4.3 共享内存:程序员可控的片上存储

共享内存是 GPU 编程中最强大也最复杂的工具。它是唯一一块程序员可以直接控制的片上内存。

共享内存的核心用途

  1. 线程间通信:同一个线程块内的线程可以通过共享内存交换数据
  2. 数据重用:将频繁访问的数据加载到共享内存中,减少对全局内存的访问
  3. 内存访问模式优化:将非连续的全局内存访问转换为连续的共享内存访问

4.4 共享内存的 Bank 冲突:最常见的性能陷阱

共享内存被分成 32 个独立的 Bank,每个 Bank 每个周期只能被访问一次。如果多个线程同时访问同一个 Bank,就会发生Bank 冲突,导致访问被串行化,性能下降。

Bank 冲突的严重程度

  • 0 个冲突:所有线程访问不同的 Bank,性能 100%
  • 1 个冲突:2 个线程访问同一个 Bank,性能 50%
  • 31 个冲突:32 个线程访问同一个 Bank,性能 1/32

解决 Bank 冲突的方法

  1. 添加填充:在共享内存数组的末尾添加一个额外的元素,使数组的宽度不是 32 的倍数
  2. 改变数据布局:将行优先布局改为列优先布局,或反之
  3. 使用向量化访问:每个线程访问多个连续的元素

AI 算子中的 Bank 冲突:矩阵乘法和注意力机制是最容易发生 Bank 冲突的算子。FlashAttention 的一个重要优化就是通过精心设计的数据布局,完全消除了共享内存的 Bank 冲突。

五、L2 缓存:所有 SM 的共享缓冲区

L2 缓存是所有 SM 共享的统一缓存,它是片上内存和片外显存之间的桥梁。

5.1 基本特性

  • 所有 SM 共享:H100 有 50 MB 的 L2 缓存,B100 有 192 MB 的 L2 缓存
  • 硬件自动管理:对程序员透明
  • 统一地址空间:所有 SM 看到的 L2 缓存是一致的
  • 带宽与 HBM 相同:H100 的 L2 缓存带宽和 HBM 带宽相同,都是 3.35 TB/s,在 Hopper、Ampere、Ada Lovelace 架构上,速度比 L1 慢 6.5 倍

5.2 L2 缓存的作用

L2 缓存的主要作用是:

  1. 缓存频繁访问的数据:减少对 HBM 的访问
  2. SM 间通信:不同 SM 上的线程可以通过 L2 缓存交换数据
  3. 原子操作的执行:所有原子操作都在 L2 缓存中执行

5.3 大模型时代 L2 缓存的重要性

在大模型时代,L2 缓存的重要性急剧上升。这是因为:

  • 大模型的参数很多,无法全部放在片上内存中
  • 但模型的不同部分被访问的频率是不同的
  • L2 缓存可以缓存频繁访问的参数,显著减少对 HBM 的访问

Blackwell B100 的重大改进:B100 将 L2 缓存从 H100 的 50 MB 增加到了 192 MB,增加了近 4 倍。这使得 B100 可以缓存整个 7B 模型的 FP8 权重,从而将推理性能提升了 2 倍以上。

六、全局显存 / HBM:AI 系统的生命线

全局显存,也就是我们常说的 HBM(高带宽内存),是 GPU 上最大也是最慢的一层内存。但同时,它也是 AI 系统的生命线,因为所有的模型参数、输入数据和中间结果都存储在这里。

6.1 HBM 的基本原理

HBM 是一种 3D 堆叠的内存技术,它将多个内存芯片堆叠在一起,通过硅通孔(TSV)连接,从而实现极高的带宽。

HBM 的核心优势

  • 极高的带宽:HBM3 可以实现超过 3 TB/s 的带宽,是 GDDR6 的 3 倍以上
  • 极低的功耗:HBM 的每比特功耗只有 GDDR6 的 1/3
  • 紧凑的尺寸:3D 堆叠技术大大减小了内存的占用面积

6.2 HBM 的性能特性

  • 高带宽,高延迟:HBM 的带宽很高,但延迟也很高,约 400-800 个时钟周期
  • 突发访问:HBM 最适合连续的大块数据访问,连续访问的带宽可以达到理论峰值的 90% 以上
  • 随机访问性能差:随机访问的带宽只有理论峰值的 10% 左右

HBM 带宽的计算
HBM 带宽 = 内存频率 × 总线宽度 × 2(DDR)

例如,H100 使用的 HBM3:

  • 内存频率:5.2 Gbps
  • 总线宽度:每个 HBM 堆栈 1024 位,共 5 个堆栈,总总线宽度 5120 位
  • 带宽:5.2 Gbps × 5120 位 ÷ 8 = 3.328 TB/s

6.3 大模型时代的 HBM 瓶颈

在大模型时代,HBM 已经成为了最主要的性能瓶颈和成本瓶颈:

性能瓶颈

  • 一个 7B 模型的 FP16 权重有 14 GB,每次推理都需要将整个模型从 HBM 加载到计算单元
  • 即使 HBM 带宽达到 3.35 TB/s,加载整个模型也需要约 4 毫秒
  • 而计算只需要约 1 毫秒,所以 80% 的时间都在等待数据

成本瓶颈

  • HBM 是 GPU 上最昂贵的组件,占 GPU 总成本的 50% 以上
  • 一个 80 GB 的 HBM3 堆栈的成本超过 1000 美元
  • 这就是为什么大模型 GPU 如此昂贵的主要原因

6.4 HBM 的未来发展

HBM 的发展方向是:

  • 更高的带宽:HBM4 的带宽将达到 8 TB/s 以上
  • 更大的容量:单堆栈容量将达到 128 GB 以上
  • 更低的功耗:每比特功耗将进一步降低

但即使如此,HBM 的性能增长速度仍然远远落后于 Tensor Core 的性能增长速度,内存墙问题会越来越严重。

七、内存层级体系的核心设计哲学:局部性原理

整个 GPU 内存层级体系的设计都是基于一个核心原理:局部性原理

局部性原理分为两种:

  1. 时间局部性:如果一个数据被访问了,那么它在不久的将来很可能会被再次访问
  2. 空间局部性:如果一个数据被访问了,那么它附近的数据很可能也会被访问

所有的内存优化都是围绕着如何更好地利用局部性原理展开的

  • 缓存利用时间局部性,将频繁访问的数据留在高速内存中
  • 合并内存访问利用空间局部性,一次访问连续的大块数据
  • 数据重用同时利用时间局部性和空间局部性

八、训练和推理数据的流向

训练遵循可预测的流程。以在 8 个 H100 GPU 上训练 Llama 70B 为例:

  • 第一阶段:存储 → CPU 内存

训练数据(分词后的文本,约 1 TB)存储在 NVMe 固态硬盘上。PyTorch DataLoader 会生成工作进程,将数据批次读入 CPU 内存。由于 CPU 预处理瓶颈,默认的 DataLoader 仅实现了 57.4% 的 GPU 利用率 。

  • 第二阶段:CPU预处理

每个工作进程都在 CPU 上进行数据解码、预处理和批处理。对于视觉任务(例如 ImageNet),这包括 JPEG 解码、调整大小和数据增强等 CPU 密集型操作。多进程加载通过跨核心并行处理,可提供 1.5 到 5 倍的加速 。

  • 第三阶段:CPU → GPU 传输

通过 PCIe 进行批量传输。PCIe Gen4 x16:约 32 GB/s。PCIe Gen5 x16:约 64 GB/s [14]。但问题在于:在 8 GPU 服务器中,所有 GPU 共享上行链路。每个 GPU 获得的有效带宽约为 8 GB/s,而非 64 GB/s。

PCIe 具有 1.54% 的编码开销(128b/130b 方案)[15]。实际利用率:由于协议开销、中断处理和操作系统延迟,显卡仅能达到理论带宽的约 19% 。

  • 第四阶段:HBM → L2 → L1 → 寄存器(前向传递)

模型权重存储在 HBM 中(FP16 为 700 亿个参数 × 2 字节 = 140 GB)。前向传播期间:

  1. 权重流从 HBM 流向 L2 缓存(在 H100 上为 258–743 个周期)
  2. L2 流向 L1(速度快 6.5 倍)
  3. L1 为实际计算提供寄存器输入

每个Transformer层都执行矩阵乘法(Q、K、V投影)、注意力机制和前馈网络。在HBM中,激活值会在层间累积。

  • 第五阶段:反向传播(梯度 → HBM)

反向传播算法会计算每个参数的梯度。这些梯度会写回 HBM。对于 Llama 70B 来说,这需要额外 140 GB 的梯度存储空间。

多 GPU 训练通过 NVLink 或 InfiniBand 增加了梯度同步(all-reduce),正如我们在网络带宽分析中所述。

  • 第六阶段:优化器更新

AdamW 优化器为每个参数维护两个状态张量(动量和方差)。对于 700 亿个参数,FP32 格式总共需要 420 GB 的数据。优化器从 HBM 读取梯度,计算更新,然后将新的权重写回 HBM。

训练受限于内存带宽。模型 FLOPs 利用率 (MFU) 通常为 30-50%——GPU 会因内存访问而停滞,而不是因计算而停滞 。

推理阶段:流程更简单,瓶颈不同
推理过程跳过了第 5-6 阶段(没有梯度,也没有优化器)。

九、AI 工作负载的内存特性与优化要点

理解了内存层级体系,我们就可以针对性地优化 AI 工作负载的性能。

9.1 Transformer 模型的内存访问模式

Transformer 模型的内存访问模式有以下特点:

  • 参数访问具有良好的时间局部性:模型参数在每次前向传播中都会被访问一次
  • 中间结果具有良好的空间局部性:中间结果通常是连续存储的
  • 注意力机制的内存访问模式很差:注意力机制需要访问非连续的内存地址,并且数据重用率很低

9.2 推理阶段优化

推理过程跳过了第 5-6 阶段(没有梯度,也没有优化器)。但它引入了一个新的内存消耗大户:键值缓存。

KV缓存机制

Transformer 模型利用注意力机制:每个 token 都会关注之前所有 token。在解码阶段,每个新 token 都需要来自之前所有 token 的键 (K) 和值 (V) 张量。每一步都重新计算这些张量会造成资源浪费。

解决方案:将 K 和 V 张量缓存到 HBM 中。

Llama 2 7B 的内存计算 [18]:

d_head = 128,n_heads = 32,n_layers = 32

  • 每个令牌的键值缓存:2 × (128 × 32 × 32) × 2 字节 (FP16) = 约 512 KB
  • 对于 4096 个令牌的上下文:仅 KV 缓存就需要大约 2 GB 的空间
  • 对于长上下文,KV 缓存占据了大部分内存。在 Llama 70B 上,一个 32K 的上下文仅缓存张量就消耗了 60+ GB 的内存——比模型权重还要多 [19]。
预填充与解码

推理分为两个阶段:

  • 预填充:并行处理所有输入标记(计算密集型)
  • 解码:自回归生成令牌(受内存带宽限制)

解码是瓶颈所在。每次生成令牌都需要从 HBM 加载整个模型(Llama 70B 大约需要 140 GB)才能生成一个令牌。决定吞吐量的是内存带宽,而不是计算能力。

在大批量推理中,注意力机制中的 DRAM 带宽饱和是主要瓶颈。超过 50% 的注意力周期因等待内存而停滞 。

9.3 闪回注意力:寄存器优化

Flash Attention(Dao 等人,2022 年)是内存层次结构优化的一个教科书式的例子。

标准注意:

  1. 计算Q⋅KTQ·K^TQKT→ n×n 矩阵(二次方内存:O(n²))
  2. Q⋅KTQ·K^TQKT写入 HBM
  3. 从 HBM 读取 → Softmax → 写入 HBM
  4. 从 HBM 读取 → 乘以 V → 输出
  5. 对于 4K 序列,Q⋅KTQ·K^TQKT为 4096×4096 = 64 MB。标准注意力机制会多次读写此矩阵。

HBM 访问量:Ω(Nd + N²) 其中 N = 序列长度,d = 磁头尺寸 [21]

闪回式注意力策略:

  1. 将 Q、K、V 分割成适合 SRAM(共享内存 + 寄存器)的块。对于 H100,每个 SM 的 SRAM 容量为 228 KB。
  2. 将 Q tile、K tile和 V tile加载到 SRAM 中
  3. 完全在 SRAM 中逐块计算注意力。
  4. 使用在线softmax(无需实例化完整矩阵即可进行增量计算)
  5. 仅将最终输出写入 HBM
  6. HBM 访问次数:O(N²d²M⁻¹) 其中 M = SRAM 大小

对于典型值(d=128,M=228KB),Flash Attention 的 HBM 访问次数减少了 9 倍。

基准测试结果:
GPT-2(1K 序列):速度提升 3 倍 [21],BERT-large(512 序列):比 MLPerf 记录提升 15% 的端到端速度 .序列长度 2K:节省 10 倍内存, 序列长度 4K:节省 20 倍内存 .

Flash Attention 2 (Dao, 2023) [22] 进一步优化了并行性:

  1. 比 Flash Attention 1 快 2 倍
  2. 比 PyTorch 标准注意力机制快 9 倍
  3. 在 A100 上实现了理论最大 FLOPs/s 的 50–73%

关键在于:避免将中间结果(Q⋅KTQ·K^TQKT)写入速度较慢的HBM内存。所有数据都应保存在高速SRAM/寄存器中,直到最终输出。这样可以减少10-20倍的内存流量。

9.4 现代数据加载:绕过 CPU


存储→CPU→GPU这条流水线存在CPU瓶颈。现代库可以绕过这个瓶颈。
GPU 直接存储 (GDS)
传统模式:存储→CPU内存→GPU HBM(两份拷贝,PCIe交叉两次)
GDS模式:存储→GPU HBM(直接DMA,单份拷贝)

NVMe 通过 DMA 直接与 GPU 内存通信,完全绕过了 CPU。

性能:带宽提高 2-8 倍,延迟降低 3.8 倍 [23]。在 TPC-H 基准测试中:与非 GDS 相比,速度提高 6.7-32.8 倍 [24]。

NVIDIA DALI

将预处理(解码、调整大小、增强)从 CPU 转移到 GPU。

为什么?GPU 拥有超过 3000 GB/s 的内部带宽(HBM + 寄存器 + 计算),而 CPU 只有 25–67 GB/s(DDR4/DDR5)。对于数据并行操作,GPU 上的预处理速度比 CPU 快 10–100 倍。

基准测试[25]:

ResNet50:训练时间减少37%
ResNet152:训练时间减少43%
U-Net3D:端到端速度提升 2 倍

FFCV:

优化文件格式,以便进行顺序 GPU 读取。离线预处理(调整大小、归一化)并以优化后的布局存储。

结果:通过消除 CPU 预处理瓶颈,ImageNet 训练速度提升了 30 倍 [26]。在 AWS A100 上,FFCV 相比于原生 PyTorch,总训练成本降低了 52%–68% [27]。

这些库都秉持着相同的理念:最大限度地减少慢速内存层之间的数据移动;将计算转移到数据已经存在的地方(GPU),或者优化数据布局以最大限度地提高顺序访问模式(FFCV)。

9.5 其他针对 AI 工作负载的内存优化技术

  1. 算子融合:将多个小算子融合成一个大算子,减少中间结果的内存访问
  2. 数据重排:将数据重新排列成适合 GPU 内存访问的格式
  3. 混合精度:使用 FP16、BF16 或 FP8 精度,减少内存访问量
  4. 模型并行:将模型参数分布到多个 GPU 上,每个 GPU 只需要存储一部分参数

9.3 内存优化的优先级

内存优化应该按照以下优先级进行:

  1. 首先优化 HBM 访问:因为 HBM 是最慢的一层,优化 HBM 访问带来的收益最大
  2. 然后优化 L2 缓存访问:提高 L2 缓存的命中率
  3. 然后优化共享内存访问:避免 Bank 冲突,提高共享内存的利用率
  4. 最后优化寄存器使用:减少寄存器溢出,提高 SM 占用率

十、常见误区与最佳实践

误区 1:带宽越高,性能越好

真相:理论带宽只是一个上限,实际能达到的带宽取决于内存访问模式。连续访问可以达到 90% 以上的理论带宽,而随机访问只能达到 10% 左右。

最佳实践:尽量使用连续的内存访问模式,避免随机访问。

误区 2:共享内存越大越好

真相:共享内存和 L1 缓存是同一个物理内存的不同划分。增加共享内存的大小会减少 L1 缓存的大小,可能会导致 L1 缓存命中率下降,整体性能反而降低。

最佳实践:根据算子的特性选择合适的共享内存大小。对于数据重用率高的算子,使用较大的共享内存;对于数据重用率低的算子,使用较小的共享内存。

误区 3:所有数据都应该放在共享内存中

真相:将数据从全局内存加载到共享内存需要时间。如果数据只被访问一次,那么加载到共享内存反而会增加延迟。

最佳实践:只有当数据会被多次访问时,才将其加载到共享内存中。

误区 4:寄存器使用量越少越好

真相:减少寄存器使用量可以提高 SM 占用率,但如果每个线程的指令数增加,整体性能可能会下降。

最佳实践:通过实验找到最佳的寄存器使用量和 SM 占用率的平衡点。

十一、总结与学习建议

GPU 的内存层级体系是 AI 系统性能的决定性因素。在大模型时代,内存已经取代计算成为了主要的性能瓶颈。理解内存层级体系,是成为一名优秀 AI Infra 工程师的必备技能。

核心要点回顾

  1. GPU 采用多层级内存体系,从快到慢依次是:寄存器、共享内存/L1 缓存、L2 缓存、HBM
  2. 寄存器是最快的存储,带宽是 HBM 的 800 倍,延迟是 HBM 的 1/400
  3. 共享内存是程序员可控的片上内存,Bank 冲突是最常见的性能陷阱
  4. L2 缓存在大模型时代变得越来越重要,B100 的 192 MB L2 缓存可以缓存整个 7B 模型
  5. HBM 是 AI 系统的生命线,也是最主要的性能和成本瓶颈
  6. 所有的内存优化都是围绕着如何更好地利用局部性原理展开的

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询