自 Volta 以来的独立线程调度

Sil*_*cer 4 multithreading cuda gpgpu scheduling nvidia

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

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

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

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

Rob*_*lla 9

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

该功能的一个重要目的是能够可靠地使用编程模型,例如 warp 中的生产者-消费者(在同一 warp 中的线程之间),而使用 volta 之前的线程调度程序,这些模型要么很脆弱,要么容易挂起。

在我看来,典型的例子cuda是人们试图在同一扭曲中的线程之间协商原子锁,你可以在标签上找到各种例子。在以前的架构上,这将是“脆弱的”此处)或不可行(挂起)。根据我的经验,它在 volta 上运行良好。

这是另一个算法示例,该算法仅挂在 pre-volta 上,但在 volta+ 上“有效”(不挂起)。