繁体   English   中英

金属计算着色器threadgroup和threadExecutionWidth

[英]Metal compute shaders threadgroup & threadExecutionWidth

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

线程组是一组线程,它们共同解决某个(子)问题。 一个线程组中最多可以有5121024线程(取决于您使用的设备)。

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

如果你有一个1024x1024图像,你想一个线程来处理一个像素,最大线程组大小为512 ,那么你就可以创建一个网格1024x1024线程由32x64大小的线程组32x16 (即512 )。

但是实际上,您可以根据需要划分线程。 您还可以拥有2x1024线程组的网格,大小为512x1或其他。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM