[英]Metal compute shaders threadgroup & threadExecutionWidth
有人可以用简单的术语来解释“金属计算”着色器和其他术语(例如SIMD组,threadExecutionWidth(波前))在概念上是什么线程组吗? 我阅读了文档,但更加困惑。 例如,如果我有一个1024x1024的图像,那么我可以拥有几个线程组,如何将线程映射到每个像素,可以同时运行几个,等等? 我找不到描述计算着色器和这些概念的WWDC视频。
线程组是一组线程,它们共同解决某个(子)问题。 一个线程组中最多可以有512
或1024
线程(取决于您使用的设备)。
threadExecutionWidth
是所使用的SIMD组的大小。 通常为32
,这意味着每个SIMD组中都有32
线程。 为了获得最佳性能,线程组中的线程数应为threadExecutionWidth
。 (这确实是其他人所称的波前或翘曲。)
如果你有一个1024x1024
图像,你想一个线程来处理一个像素,最大线程组大小为512
,那么你就可以创建一个网格1024x1024
线程由32x64
大小的线程组32x16
(即512
)。
但是实际上,您可以根据需要划分线程。 您还可以拥有2x1024
线程组的网格,大小为512x1
或其他。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.