3
在iOS Metal中,文档说有一个single threadgroup can only be associated with a single compute unit。所以我很好奇,如果选择多个线程组应取决于可用计算单元的数量?有更多的线程组比计算单位有一个惩罚吗?如果将计算单元的数量与线程组匹配很重要,那么如何确定给定设备上可用计算单元的数量?多少个线程组?
在iOS Metal中,文档说有一个single threadgroup can only be associated with a single compute unit。所以我很好奇,如果选择多个线程组应取决于可用计算单元的数量?有更多的线程组比计算单位有一个惩罚吗?如果将计算单元的数量与线程组匹配很重要,那么如何确定给定设备上可用计算单元的数量?多少个线程组?
这是我目前对这种工作原理的理解。我大部分都是基于Metal文档和this awesome video from NVIDIA的思想模型。
唯一明确的规则我目前设计的内核函数是在线程组表示线程执行宽度(NVIDIA的“的Warp粒度”)的整数倍。
由于概率计算单元利用率的原因,我还没有明确的使用线程组与设备内存的规则,除了以最容易考虑和首先编码的方式使用线程组以外。