【发布时间】:2014-10-12 21:23:57
【问题描述】:
我在这里有两个相关的问题,所以我作为一个问题提出:
1- 我们在运行时使用
编译 opencl 程序clCreateProgramWithSource(context, 1, (const char**)&source, NULL, NULL);
clBuildProgram(program, 1, &device, NULL, NULL,
NULL);
我的问题是每次我的 opencl 应用程序运行时都会进行编译,这可能需要相当长的时间。有没有办法让编译第一次发生,并且在随后的应用程序运行中,它使用之前编译的二进制文件?
2- 使用clBuildProgram() 加速编译的不同方法有哪些?可能正在使用编译器标志或其他东西?
【问题讨论】:
-
您可以将源文件拆分为多个文件并分别构建。
-
你的内核中有嵌套循环吗? OpenCL 编译器往往会因为试图展开深度嵌套的循环而发疯。您可以尝试限制展开(stackoverflow.com/a/23206339/3182664 上的一些信息,但也可能在其他地方)。到目前为止,这只是一个猜测......
-
除了预编译之外可能没有其他技术:stackoverflow.com/questions/23601058/…
标签: opencl