【问题标题】:can clFlush be retried if it fails?如果 clFlush 失败,可以重试吗?
【发布时间】:2018-03-14 23:58:51
【问题描述】:

我有一个程序将一堆东西排入命令队列,然后尝试 clFlush() 它。我猜有时 clFlush 会失败,因为它是 CL_OUT_OF_HOST_MEMORY 或 CL_OUT_OF_RESOURCES。所以我的问题是,如果这些原因之一是导致失败的原因,那么等待一段时间然后重试是否安全,或者这种失败会持续存在吗?

【问题讨论】:

  • 有趣。规范并没有说明如何推理这些错误。考虑到 OpenGL 规范的外观,我会说它是“安全的”,但很难说重试是否能成功。问:你为什么还要猜测?应该很容易确定是哪一个……
  • 谢谢,我想我只需要尝试并希望最好。至于返回值,在我正在工作的环境中尝试获取返回值会非常麻烦,否则我肯定会写它来打印错误:)
  • 如果 clFlush 或 clFinish 返回错误,这可能是由于在您调用它们之前排队的东西。在您排队的每件事之后尝试 clFinish 以找出导致问题的原因(可能是 clEnqueueNDRangeKernel)。

标签: opencl


【解决方案1】:

我通过反复试验发现,如果 clFlush() 调用返回 CL_OUT_OF_RESOURCES,您可以再次重试 clFlush(),它可能会成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 2020-12-15
    • 2015-10-27
    • 2018-01-12
    • 2016-04-27
    相关资源
    最近更新 更多