3

假设我有 8 个线程块,我的 GPU 有 8 个 SM。那么 GPU 是如何向 SM 发出这个线程块的呢?

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

我想知道哪一个是真实的。提前致谢。

4

2 回答 2

2

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

此处给出了如何执行此操作的示例。

于 2013-02-03T15:35:15.277 回答
0

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

相反,您应该尝试为 GPU 提供最佳数量的线程块。这很重要,因为它受到许多限制

于 2013-10-13T16:44:36.383 回答