【问题标题】:Independent Thread Scheduling since Volta自 Volta 以来的独立线程调度
【发布时间】:2022-02-04 22:37:50
【问题描述】:

自 Volta 以来,Nvidia 为其 GPGPU 引入了新的独立线程调度。如果 CUDA 线程发散,替代代码路径不会在块中执行,而是按指令执行。尽管如此,由于 GPU 也是 SIMT,因此不能同时执行不同的路径。这是原文:

https://developer.nvidia.com/blog/inside-volta/(向下滚动到“独立线程调度”)。

我明白这意味着什么。我不明白的是,这种新行为以何种方式加速了代码。即使是上述文章中的前后图也不能反映整体加速。

我的问题:由于所描述的新调度,哪些不同的算法会在 Volta(和更新的)上运行得更快?

【问题讨论】:

  • 你读过关于“饥饿算法”的部分吗?
  • 一个小的加速优势是调度程序可以选择当时资源空闲的发散分支。

标签: multithreading cuda nvidia scheduling gpgpu


【解决方案1】:

该功能的目的不一定是加速代码。

该功能的一个重要目的是能够可靠地使用编程模型,例如在一个 warp 中(在同一个 warp 中的线程之间)使用以前的线程调度程序可能会很脆弱或容易挂起的编程模型 pre-伏特。

您可以在cuda 标签上找到各种示例的典型 IMO 示例是人们试图在同一个 warp 中的线程之间协商原子锁。在以前的架构上,这将是"brittle"(和here)或not workable(挂起)。根据我的经验,它在伏打上运行良好。

Here is another example 的算法仅在 pre-volta 上挂起,但在 volta+ 上“工作”(不挂起)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多