不同GPU内存空间的访问时间是多少?

ein*_*ica 5 performance caching gpu gpgpu nvidia

这是一个关于独立 GPU 的问题,主要是最近的 GPU(NVIDIA Kepler、Maxwell;以及 AMD Kaveri 和 R290 中的任何东西)。

将一个未缓存的元素从...加载到寄存器中需要花费多少时间

  • 全局设备内存?
  • 全局内存二级缓存?
  • 纹理缓存?
  • 常量缓存?
  • 每核 L1 缓存?
  • (每核共享内存 - 应与 L1 缓存相同。)

某个地方的表格链接会很棒,解释一下就可以了......

Sun*_*est 3

它因 GPU、代数、集成方式(如 PCIE)和其他因素而异。我经常使用 ASM,以下是我使用的数字:

- 全局设备内存?大约300-800个时钟。(主板上安装的 GPU(例如使用主内存的笔记本电脑)的内存速度较慢)

- 全局内存二级缓存?大约100个时钟周期

- 纹理缓存?猜测 50-100 个时钟周期

- 恒定缓存?如果在缓存中,则大约需要 1-3 个时钟周期,否则 L2 缓存(约 50-100 个时钟),甚至全局 mem 300-500 个时钟。(取决于缓存是否命中或未命中)

-每核(即 Kepler/Maxwell 中的 Per-SMX/SMM)L1 缓存?大约1-3个时钟周期

-每核(即 Kepler/Maxwell 中的 Per-SMX/SMM)共享内存?大约1-3个时钟周期

我还做了一些在线搜索,看看我有多接近并发现了这个。数字和我的不一样。http://lpgpu.org/wp/wp-content/uploads/2013/05/poster_andresch_acaces2014.pdf 我认为由于多线程,实际花费的时间与程序员应该使用的时间是两个不同的数字。希望这可以帮助。

  • 有两种延迟。首先是真正的实际延迟。这实际上是硬件花费的时间。然后是程序员关心的延迟。这种延迟更多的是一种意见/猜测,取决于占用率(扭曲数(NVidia)或波前(AMD))。由于 GPU 在等待时可以做其他事情,因此时间量较少。L1、constant( 和共享本质上是免费的。L2 通常是免费的,但并非总是如此,全局通常有时间限制。在上面的计时中,L1、常量和共享处于“程序员时间”,全局和 L2 处于“程序员时间”实际时间”。 (2认同)