假设我有8个线程块,而我的GPU有8个SM。那么GPU如何将这个线程块发给SM?
我发现一些程序或文章提出了广度优先的方式,也就是说,每个SM在这个例子中运行一个线程块。 但是,根据一些文档,如果GPU内核受延迟限制,增加占用率可能是一个好主意。可以推断,如果可以的话,8个线程块将在4个或更少的SM上运行。
我想知道哪一个是现实。 提前谢谢。
答案 0 :(得分:2)
很难说出GPU正在做什么。如果你有一个你感兴趣的特定内核,你可以尝试为每个块读取和存储%smid
寄存器。
如何执行此操作的示例为here。
答案 1 :(得分:0)
你提出了一个错误的问题:你不应该担心硬件如何为SM分配线程块。这是GPU的责任。事实上,由于他们的编程模型没有假设哪些块将在哪些SM上运行,因此您可以在计算设备池/后代中获得可扩展性。
相反,您应该尝试使用最佳线程块数量来提供GPU。这是非平凡的,因为它受到许多限制