【问题标题】:"Compile Server Error." while building OpenCL kernels“编译服务器错误。”在构建 OpenCL 内核时
【发布时间】:2018-03-10 23:25:38
【问题描述】:

我正在尝试在 OS X 上编译 OpenCL 内核。只有几行代码时一切正常。但是,在代码增长超过 1.5k 行后,带有CL_PROGRAM_BUILD_LOG 标志的clGetProgramBuildInfo 返回“编译服务器错误”。每次。我用谷歌搜索但一无所获。谁能帮帮我?

【问题讨论】:

  • 虽然不太可能,但您可能会遇到最大允许内核长度。最好检查编译后的程序及其大小。 1500 行 OpenCL 代码编译可能会导致巨大的损失。
  • @Christian 好吧,也许你是对的。你能告诉我检查它是否超过允许的最大值的方法吗?
  • 一种方法是在命令外壳上编译主机程序并使用编辑器检查代码长度。为简单起见,您还可以检查一些行,编译它,添加更多行,再次编译,......在某一时刻,您的编译可能由于大小而失败,或者您发现了错误。

标签: c++ opencl


【解决方案1】:

您可以通过在 cl.h 中搜索来了解 OpenCL 错误代码的含义。在这种情况下,-11 正是您所期望的,CL_BUILD_PROGRAM_FAILURE。构建日志为空当然很好奇。两个问题:

1.) clGetProgramBuildInfo 的返回值是多少?

2.) 你在哪个平台上?如果您使用 Apple 的 OpenCL 实现,您可以尝试在您的环境中设置 CL_LOG_ERRORS=stdout。例如,从终端:

$ CL_LOG_ERRORS=stdout ./myprog

在 Xcode 中设置它也很容易(编辑方案 -> 参数 -> 环境变量)。

请找到@James 的original answer

【讨论】:

    【解决方案2】:

    这个无用的错误信息表明 Apple 的编译器存在错误。您可以使用Apple Bug Reporting System 通知他们此类错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2012-01-02
      • 2020-11-14
      • 1970-01-01
      相关资源
      最近更新 更多