Dee*_*rma 3 threadgroup compute-shader ios metal metalkit
有人可以简单地解释一下 Metal 计算着色器中线程组的概念以及其他术语(例如 SIMD 组、threadExecutionWidth(波前))吗?我阅读了文档,但更加困惑。例如,如果我有一个 1024x1024 图像,我可以有多少个线程组,如何将线程映射到每个像素,有多少个线程可以并发运行,等等?我找不到描述计算着色器和这些概念的 WWDC 视频。
线程组是一组一起工作来解决某个(子)问题的线程。线程组中最多可以有512或1024个线程(取决于您使用的设备)。
这threadExecutionWidth是所使用的 SIMD 组的大小。它通常是32,这意味着每个 SIMD 组32中都有线程。为了获得最佳性能,线程组中的线程数应该是 的倍数threadExecutionWidth。(这确实是其他人所说的波前或扭曲。)
如果您有一张1024x1024图像,并且希望一个线程处理一个像素,并且最大线程组大小为512,那么您可以创建一个由大小为 的线程组(即)1024x1024组成的线程网格。32x6432x16512
但实际上,您可以按照自己的意愿划分线程。您还可以有一个2x1024大小为 的线程组网格512x1,或者其他。
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |