我们是否必须在opencl中构建从clcreatewithbinary获取的程序?

时间:2014-03-28 13:58:13

标签: binary opencl

我通过一些教程来优化使用二进制文件的内核调用。我提到了下面的链接,

http://www.fixstars.com/en/opencl/book/OpenCLProgrammingBook/online-offline-compilation/

有人提到,如果我们使用二进制文件,我们就不必构建创建的程序。我试过了。但它并没有像它提到的那样起作用。当我插入" clBuildProgram(程序,0,NULL,NULL,NULL,NULL)"在从二进制文件创建程序的行之后,该程序可以正常工作。

我也经历过其他参考文献。其中一些人提到我们必须插入" build"在那里。我还浏览了本网站的所有相关问题。但我无法对此有任何明确的想法。

我觉得如果我们真的避免了#34; build"部分,我们可以减少执行所需的时间。

如果我们必须使用" build"部分,那么我的另一个问题是使用二进制而不是源的好处是什么。

提前致谢。

1 个答案:

答案 0 :(得分:2)

规范是你的朋友。 https://www.khronos.org/registry/cl/specs/opencl-1.2.pdf

  

。必须调用clBuildProgram   对于使用clCreateProgramWithSource或创建的程序   clCreateProgramWithBinary用于为一个或多个设备构建程序可执行文件   与计划相关联。

因此,明确表示即使使用二进制程序也必须调用构建程序。

在大多数情况下,二进制程序的构建程序比文本程序的构建程序更快。因此,边际速度有利。