【问题标题】:How are thread blocks are assigned to multiprocessors on NVIDIA GPUs?如何将线程块分配给 NVIDIA GPU 上的多处理器?
【发布时间】:2021-05-13 23:12:28
【问题描述】:

假设我有 8 个线程块需要执行,我的 GPU 上有 8 个 SM(流式多处理器),8 个线程块可以放入一个 SM。我想知道线程块是如何分配给 SM 的。会不会把所有的线程块都分配给一个SM,而其他7个都是空的?还是将每个线程块分配给单独的 SM?

【问题讨论】:

    标签: cuda gpu nvidia


    【解决方案1】:

    CUDA 基本上未指定此信息。没有描述块调度程序将遵循的规则。

    根据经验,不难证明 CUDA 块调度程序会优先将块存放在空的 SM 上,然后再将块存放在已经存在一个或多个块的 SM 上。

    这种优先行为的原因很清楚。这是充分利用分布在设备上的 GPU 资源的方式;对于任何给定的 GPU,它可以在一系列网格大小上实现最高性能。

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 2021-09-12
      • 2012-04-24
      • 1970-01-01
      相关资源
      最近更新 更多