【问题标题】:CUDA shared memory occupancyCUDA共享内存占用
【发布时间】:2014-09-24 21:18:36
【问题描述】:

如果我每个 SM 有一个 48kB 的共享内存,并且我创建了一个内核,我在共享内存中分配了 32kB,这意味着只能在一个 SM 上同时运行 1 个块?

【问题讨论】:

    标签: cuda


    【解决方案1】:

    是的,没错。

    共享内存必须支持所有“驻留”线程块的“足迹”。为了在 SM 上启动线程块,必须有足够的共享内存来支持它。如果没有,它会一直等到当前正在执行的线程块完成。

    Maxwell GPUs (cc 5.0, 5.2) 的到来有一些细微差别。这些 GPU 支持 64KB (cc 5.0) 或 96KB (cc 5.2) 的共享内存。在这种情况下,单个线程块可用的最大共享内存仍被限制为 48KB,但在单个 SM 上,多个线程块总共使用的内存可能超过 48KB。这意味着 cc 5.2 SM 可以支持 2 个线程块,即使两者都使用 32KB 共享内存。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      相关资源
      最近更新 更多