2016-03-07 69 views

回答

1

这是我目前对这种工作原理的理解。我大部分都是基于Metal文档和this awesome video from NVIDIA的思想模型。

  • 你需要线程组的最低量(NVIDIA的“线程块”),在你的网格,让你的工作做好。是的,如果你有更多的线程组可以并发执行,那将需要更长的时间,但这不等于使用更多线程组的“惩罚”。这只意味着你的问题需要大量的处理。
  • 计算单元可同时处理的线程组数量因需要和可用内存而异。你不能假设你的多个线程组可能正在同时执行。

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

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