【CUDA4】GPU里面的数据放到哪里?为什么有的数据访问快,有的慢?

复制代码
                    GPU Compute
                         │
                  ┌──────┴──────┐
                  │             │
              Registers    Shared Memory
                  │             │
                  └──────┬──────┘
                         │
                        L1
                         │
                        L2
                         │
                 Global Memory
                         │
                        VRAM

往上

↑

速度更快

容量更小

离计算单元更近

往下

↓

速度更慢

容量更大

离计算单元更远

Register 是最靠近计算单元的存储,它的速度非常快,作用范围单个thread,所以每个线程都有自己的register。shared memory是block的小仓库,作用范围block内线程共享。L1 Cache它主要用于缓存近期访问的数据,可以理解位GPU计算单元旁边的小型高速缓存,L2 比 L1 更大,但通常也更远、更慢,它是 GPU 多个计算单元之间可以共享的数据缓存层。global memory速度相对慢,延迟高,但是容量大。

Global Memory 和 VRAM 在 CUDA 语境里经常指的是同一大类显存资源;不要把它们当成两个完全独立的物理内存层.

内存 谁使用 核心特点
Register 单个 Thread 极快、很小
Shared Memory Block 内 Threads 快、可共享
L1 GPU 硬件 高速 Cache
L2 GPU 多个计算单元共享 更大、较慢
Global Memory / VRAM GPU 大、相对慢
相关推荐
Lintongzg2 小时前
千卡训练的隐形账单:通信不是瓶颈
笔记·学习·性能优化·llm
Frag0ut6 小时前
Google Chrome 谷歌浏览器 下载安装全攻略
chrome·性能优化·谷歌浏览器·隐私安全·浏览器设置·浏览器下载·新手指南
Flynt17 小时前
官方说一个破折号拖慢整段高亮,我在 Node 里验证了一遍:机制是真的,2.8 倍没跑出来
javascript·性能优化·v8
数据库小学妹18 小时前
MySQL深分页优化:LIMIT大偏移的根因分析与五种解法对比
数据库·mysql·性能优化
yunwei3718 小时前
使用 eBPF 跟踪 Nginx 请求
linux·后端·性能优化
yunwei3718 小时前
使用 eBPF 跟踪 MySQL 查询
linux·后端·性能优化
yunwei3718 小时前
eBPF 示例教程:使用 XDP 捕获 TCP 信息
linux·后端·性能优化
mmsx18 小时前
Android GIS系列 栅格怎么存、格网怎么归算:两个容易混淆的 GIS 链路
android·性能优化·app
Flynt18 小时前
Java 27 悄悄改了 3 个默认值,我在 1 核小机器上逐个验证了一遍
java·jvm·性能优化