title: 什么是共享内存?
共享内存是与 CUDA 线程组层次结构(左图)中的线程块级别(左图、中图)相关联的抽象内存。改编自 NVIDIA 的 CUDA 复习:CUDA 编程模型 和 NVIDIA CUDA C++ 编程指南 中的图表。
共享内存 (Shared Memory) 是内存层次结构中与 CUDA 编程模型的线程层次结构中的线程块级别相对应的内存层级。通常预期它比全局内存小得多,但在吞吐量和延迟方面快得多。
因此,一个相当典型的内核通常如下所示:
- 从全局内存加载数据到共享内存
- 通过 CUDA 核心和张量核心对该数据执行一系列算术运算
- 可选地,在执行这些操作时,通过屏障同步线程块内的线程
- 将数据写回全局内存,可选地通过原子操作防止跨线程块的竞争条件
共享内存存储在 GPU 的流式多处理器 (SM)的 L1 数据缓存中。