我有一个 DirectCompute 应用程序对图像进行计算(比如计算平均像素值、应用过滤器等等)。对于某些计算,我只是将图像视为整数数组并像这样调度计算机着色器:
FImmediateContext.Dispatch(PixelCount, 1, 1);
结果正是预期值,因此计算是正确的。尽管如此,在运行时,我在调试日志中看到以下消息:
D3D11 ERROR: ID3D11DeviceContext::Dispatch: There can be at most 65535 Thread Groups in each dimension of a Dispatch call. One of the following is too high: ThreadGroupCountX (3762013), ThreadGroupCountY (1), ThreadGroupCountZ (1) [ EXECUTION ERROR #2097390: DEVICE_DISPATCH_THREADGROUPCOUNT_OVERFLOW]
此错误仅显示在调试日志中,其他一切都正确,包括计算结果。这让我认为 GPU 以某种方式管理非常大的线程组,可能会将其分解为按顺序执行的较小组。
我的问题是:我应该关心这个错误还是可以保留它并让 GPU 为我完成工作?
谢谢。