【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 大、相对慢
相关推荐
寂寞的船1 天前
【Unity知识速递】第6期 URP性能优化完全指南:从内存到GPU的三维调优
unity·性能优化·编辑器
Flynt1 天前
内存省16倍的Lightpanda实测:数字是真的,但并发代码要重写
性能优化·开源·agent
OpenAnolis小助手1 天前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
程序员吕洞宾2 天前
开源多维表格SmartTable v1.6.10 —— 用户名登录、数据评论及@人、表单分享二维码、性能优化、部署及升级优化
spring·性能优化·开源
余槐i2 天前
MySQL 8.0 联合索引走错:为什么加了索引查询反而从 200ms 变成 8s
java·spring boot·mysql·docker·性能优化
王中阳Go2 天前
预算给够了,时间花错了地方:三跳链路给了 27 秒,实际只用掉 9 秒
人工智能·后端·性能优化
Chen7322 天前
WebGPU 性能优化:Three.js 千万级点云调度与渲染实践
性能优化·three.js
peakmain92 天前
异常处理 - Native 层的崩溃捕获机制及实现 (一)
android·性能优化
只睡四小时3 天前
Three.js Sub-tick:漏判 60.7%→0
开发语言·javascript·性能优化·ecmascript·游戏开发·three.js·碰撞检测
baiduxiaoyu023 天前
图片管线:一张商品图从 1.2MB 到 58KB
性能优化