CUDA线程束调度:是来自当前块的另一个线程束还是来自另一个块的线程束?

3

当一个SM上的运行warp被阻塞时,必须安排另一个warp在SM上进行调度,以交换阻塞的warp以覆盖延迟。但是替代品是否来自与阻塞warp相同的块,或者它必须属于另一个块,或者两种情况都可以?


2
任何一种情况都可以。决策将基于SM的“准备运行”队列中有哪些warp。通过具有来自同一块或多个块的多个warp准备就绪,可以隐藏延迟。可以安排在特定SM上的块数可能会受到诸如共享内存使用、寄存器使用等因素的限制。 - Robert Crovella
谢谢您的解释。我不再感到困惑了。 - troore
我知道降低延迟的一个优化方法是使用一些较小的线程块。为什么这种方法有效,它只在特定情况下有效还是只是一种谬论? - troore
请查看我对此问题的评论,其中提供了一个(假设的)例子,可以说明为什么较小的线程块结构可以更好地隐藏延迟。我不确定您所说的“降低延迟”是什么意思。我认为这样的事情只在特定情况下起作用。由于有很多要考虑的因素,您的结果可能会有所不同。 - Robert Crovella
1个回答

4
这个话题是GPU架构社区中的一个开放性研究。人们在此处评估了几种warp调度策略。请参考以下最近的论文,了解不同调度策略的优缺点:

回答你的问题,这两种策略都可以在任何架构中使用。但真正的底层尚未公开披露。


感谢您提供这些有用的资料! - troore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接