调度线程组错误

时间:2017-12-29 21:08:36

标签: ios swift multithreading

我在实时获取的视频源上运行计算机视觉算法。我正在使用DispatchQueue异步运行这些操作/算法。但是,我收到以下错误,我无法解释:

[MTLDebugComputeCommandEncoder dispatchThreadgroups:threadsPerThreadgroup:]:949: failed assertion (threadgroupsPerGrid.width(0) * threadgroupsPerGrid.y(12) * threadgroupsPerGrid.depth(1))(0) must not be 0.'

这是什么错误?

1 个答案:

答案 0 :(得分:0)

此消息表明由[MTLDebugComputeCommandEncoder dispatchThreadgroups:threadsPerThreadgroup:]中的断言导致断言失败。

据我了解,有人断言这个表达式:

threadgroupsPerGrid.width * threadgroupsPerGrid.y * threadgroupsPerGrid.depth

不应该是0,而是0,导致此断言失败。此外,他们还注释了这些变量的值:

  • threadgroupsPerGrid.width0
  • threadgroupsPerGrid.y12
  • threadgroupsPerGrid.depth1
  • threadgroupsPerGrid.width * threadgroupsPerGrid.y * threadgroupsPerGrid.depth评估为0

此无效状态可能是您将无效参数传递给[MTLDebugComputeCommandEncoder dispatchThreadgroups:threadsPerThreadgroup:]的结果。如果我不得不猜测,问题可能是threadgroupsPerGrid.width0