在iOS Metal中的文档中,有这样一句话:单个线程组只能与单个计算单元关联。因此,我想知道选择线程组数量是否应该取决于可用计算单元的数量?如果线程组数多于计算单元数是否会有惩罚?如果将计算单元数与线程组匹配非常重要,那么如何确定给定设备上可用的计算单元数量?
这是我目前对它的理解。我主要基于Metal文档和 NVIDIA的这个很棒的视频,构建了这个心智模型。
目前我唯一明确的设计内核函数规则是线程组代表线程执行宽度的倍数(NVIDIA的“翘曲粒度”)。
由于概率性计算单元利用,我还没有关于使用线程组与设备内存的明确规则,除了首先以最容易思考和编写代码的方式使用线程组。