【发布时间】:2014-05-12 04:29:29
【问题描述】:
在OpenCl的在线编译中,我们要做...
program = clCreateProgramWithSource(context, 1, (const char **)&source_str, (const size_t *)&source_size, &ret);
但是,对于opencl的离线创建程序..
program = clCreateProgramWithBinary(context, 1, &device_id, (const size_t *)&binary_size, (const unsigned char **)&binary_buf, &binary_status, &ret);
binary_buf 在哪里...
fread(binary_buf, 1, MAX_BINARY_SIZE, fp);
因此在离线编译中,我们可以跳过 clBuildProgram 步骤,这样可以加快这一步。 (这种方法是否正确,我们可以一次又一次地重复使用该二进制文件来运行程序?)
那么,我的问题是如何创建opencl二进制文件,这样我就可以跳过构建cl程序的步骤了?
【问题讨论】:
-
你仍然需要调用
clBuildProgram(),即使是使用clCreateProgramWithBinary()创建的程序。 -
@KyleLutz 我的 clBuildProgram 需要很多时间,因为我的 cl 文件很大。要跳过这个编译,我想到了离线编译??每次我调用程序时,有没有其他方法可以消除对 clBuildProgram 的重新调用??
标签: opencl