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

时间:2013-02-01 08:52:55

标签: cuda gpu multiprocessor

假设我有8个线程块,而我的GPU有8个SM。那么GPU如何将这个线程块发给SM?

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

我想知道哪一个是现实。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

很难说出GPU正在做什么。如果你有一个你感兴趣的特定内核,你可以尝试为每个块读取和存储%smid寄存器。

如何执行此操作的示例为here

答案 1 :(得分:0)

你提出了一个错误的问题:你不应该担心硬件如何为SM分配线程块。这是GPU的责任。事实上,由于他们的编程模型没有假设哪些块将在哪些SM上运行,因此您可以在计算设备池/后代中获得可扩展性。

相反,您应该尝试使用最佳线程块数量来提供GPU。这是非平凡的,因为它受到许多限制