1

有人可以简单地解释一下金属计算着色器和其他术语(如 SIMD 组、threadExecutionWidth(波前))中的线程组概念是什么吗?我阅读了文档,但更困惑。例如,如果我有一个 1024x1024 的图像,我可以有多少个线程组,我如何将线程映射到每个像素,可以同时运行多少个等等?我找不到描述计算着色器和这些概念的 WWDC 视频。

4

1 回答 1

4

线程组是一起工作以解决某个(子)问题的一组线程。一个线程组中最多可以有一个512或多个1024线程(取决于您使用的设备)。

threadExecutionWidth是使用的 SIMD 组的大小。它通常是32,这意味着每个 SIMD 组中都有32线程。为了获得最佳性能,线程组中的线程数应该是threadExecutionWidth. (这确实是其他人所说的波前或扭曲。)

如果您有一个1024x1024图像并且您希望一个线程处理一个像素,并且最大线程组大小是512,那么您可以创建一个由大小(即)的1024x1024线程组组成的线程网格。32x6432x16512

但实际上,您可以根据需要划分线程。你也可以有一个2x1024size512x1或其他的线程组网格。

于 2018-04-30T08:32:53.657 回答