【问题标题】:What are the access times for different GPU memory spaces?不同 GPU 内存空间的访问时间是多少?
【发布时间】:2015-08-03 00:01:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: performance caching gpu kepler maxwell


    【解决方案1】:

    它因 gpu、代、其集成方式(如 pcie)和其他方面而异。 我经常使用 ASM,这些是我使用的数字:

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

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

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

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

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

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

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

    【讨论】:

    • 二级缓存真的那么可怕吗?这甚至不是一个数量级的速度...
    • 另外,那个链接真的很奇怪。在 GPU 上加法真的需要 6 个时钟周期吗?我还以为只有 1 个。
    • 早在 2011 年,我(和其他人)做了一些 L2 基准测试 (devtalk.nvidia.com/default/topic/496975/…),当时全球范围是 800-1000,而 L2 大约是 200。所以我猜 L2 改进喜欢全球这样做也许大约 100 个周期。这可能不是那么准确。
    • 有两种延迟。首先是真正的实际延迟。这实际上是硬件需要多长时间。然后是程序员关心的延迟。这种延迟更多的是一种意见/猜测,并且取决于占用率(# of warps(NVidia)或wavefronts(AMD))。由于 GPU 可以在等待的同时做其他事情,所以时间更少。 L1、constant( 和 shared 本质上是免费的。L2 通常是免费的,但并不总是免费的,并且 global 通常会遇到时间问题。在上述时序中,L1、Constant( 和 shared 处于“程序员时间”中,而 global 和 L2 处于“实际时间”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 2015-12-22
    • 2016-04-11
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多