有多少个线程组?

3
在iOS Metal中的文档中,有这样一句话:单个线程组只能与单个计算单元关联。因此,我想知道选择线程组数量是否应该取决于可用计算单元的数量?如果线程组数多于计算单元数是否会有惩罚?如果将计算单元数与线程组匹配非常重要,那么如何确定给定设备上可用的计算单元数量?
1个回答

1

这是我目前对它的理解。我主要基于Metal文档和 NVIDIA的这个很棒的视频,构建了这个心智模型。

  • 您需要在网格中拥有最少数量的线程组(NVIDIA的“线程块”)来完成您的工作。如果您拥有更多的线程组超过了并发执行的能力,那么执行时间会更长,但这并不等同于使用更多线程组会受到“惩罚”。这只意味着您的问题需要大量处理。
  • 一个计算单元可以同时处理的线程组数量因所需内存和可用内存而异。您无法假设有多少线程组正在同时执行。

目前我唯一明确的设计内核函数规则是线程组代表线程执行宽度的倍数(NVIDIA的“翘曲粒度”)。

由于概率性计算单元利用,我还没有关于使用线程组与设备内存的明确规则,除了首先以最容易思考和编写代码的方式使用线程组。


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