Vulkan 更喜欢 1D 调用来匹配子组和工作组大小?

问题描述 投票:0回答:1

Vulkan 子组教程提到:

如果您指定的工作组大小小于子组大小, 您保证在子组内有非活动调用。

现在假设您的 maxComputeWorkGroupSize 为 1024,subGroupSize 为 64。 如果您想对图像应用滤镜,您可能会进行 2D 调用。因此,您最终的工作组大小将为 32,因为 32 * 32 * 1 = 1024。现在您的工作组大小小于您的子组大小。

所以我的问题是,是否最好使用大小为 64 的 1D 工作组(并从现在“更大”的 GlobalInitationID.x 中提取相应的 x 和 y 坐标)?

vulkan gpgpu
1个回答
0
投票

maxComputeWorkGroupSize
是有维度的;
subGroupSize
不是。后者是调用的固定计数。它不关心工作组中这些调用的安排。

多维工作组如何划分为子组是由实现定义的。在您的情况下,实现可以将工作组中的每个 32x2 调用置于同一子组中。但它也可以将其分割为 2x32。或者每个 8x8 块。或者其他什么。

© www.soinside.com 2019 - 2024. All rights reserved.