Nvidia的Fermi GPU如何向流式多处理器分配线程块

3

假设我有8个线程块,我的GPU有8个SM,则GPU如何将这些线程块分配给SM?

我发现一些程序或文章建议以广度优先的方式进行,也就是说,在本例中每个SM运行一个线程块。然而,根据一些文件,如果GPU内核受到延迟限制,则增加占用率可能是一个好主意。如果可以的话,可能会推断出8个线程块将在4个或更少的SM上运行。

我想知道哪种情况才是真实的情况。提前感谢您。

2个回答

2

很难确切地了解GPU在做什么。如果你对特定的内核感兴趣,可以尝试读取并存储每个块的%smid寄存器。

如何执行此操作的示例可在此处找到。


好的..所以Nvidia不公布关于这个的信息。也许我会尝试这个实验。谢谢! - Antony Yu

0
你问错了问题:你不应该担心硬件如何将线程块分配给SM。这是GPU的责任。事实上,由于他们的编程模型对哪些块将在哪些SM上运行没有假设,因此您可以在计算设备/未来的一代之间获得可扩展性。
相反,您应该尝试使用最佳数量的线程块来提供给GPU。这是非常复杂的,因为它受到许多限制的影响。

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