1、内存与显存
通常意义上讲,通常意义上讲,内存指的是内部存储,是相对于外部存储来讲的,一般是板上或者卡上的内部存储,不具备永久存储能力。掉电即消失。显存指的的Device上也就是GPU上的内部存储。
2、GPU的内存模型
内存分类两大类,可编程内存与不可编程内存,两者最大的区别是,是否可以由用户显式的控制申请与释放,不可变成内存最大的代表就是离CPU最近的L1 L2 cache,这部分内存的最大的作用是为了消除计算单元与存储之间的速度差,可编程内存就相对明确了,就是可以由开发者通过接口去申请释放以及读写。在GPU编程中,可编程内存可以分为以下几类:
2.1 寄存器
最快的内存之一,同时也是最小的资源,也是最贵的资源,线程级私有的,不参与线程间共享。
2.2 共享内存
速度仅次于寄存器,其非某个线程独有,而是在线程块内共享,不支持跨线程块共享。
2.3 本地内存
速度较慢,但是其是线程级私有的,不参与线程间共享。
2.4 常量内存
速度较慢,所有线程共享,CPU 与 GPU 共享,通常存储一些常量数据。
2.5 纹理内存
纹理内存是一种有特殊排布的全局内存,其在线程束访问的某些特殊的结构时可以达到最优性能。主要体现在寻址方面。
2.6 全局内存
最通用的内存,所有线程共享,CPU 与 GPU 共享。
不可编程内存通常是指缓存,在GPU上有4种缓存,每个SM 有独立的一级缓存,所有SM共享二级缓存
2.7 一级缓存
最靠近运算器,速度最快,用于缓存来源于本地内存,全局内存的数据。
2.8 二级缓存
次靠近运算器,速度很快,用于缓存来源于本地内存,全局内存的数据。
2.9 只读常量缓存
速度较快,用于缓存只读内存。
2.10 只读纹理缓存
速度较快,用于缓存纹理内存。
4、分类与总结
4.1从可见域上来讲
线程内:寄存器,本地内存
线程块内,线程间:共享内存
线程块间:常量内存,纹理内存,全局内存,其中纹理内存,常量内存通常都是只读缓存的。
4.2 从读写速度上讲:
寄存器 > 共享内存 > 纹理内存(特殊场景下),常量内存 >= 本地内存,全局内存
4.3 从物理属性上讲:
可分为三类,寄存器,共享内存,其他(本地内存,纹理内存,全局内存)。
评论前必须登录!
注册