7

如何将 OpenCL 内核编译成比特流,我以后可以直接加载而无需重新编译?我的平台是带有 APU 和 AMD 独立 GPU 的 AMD 机器。该机器运行支持 OpenCL 1.2 的最新 AMD APP SDK。

4

1 回答 1

10

1) 使用 clCreateProgamWithSource API 调用将内核从源代码编译为程序。使用 clGetProgramBuildInfo API 调用检索编译器错误。

2) 使用 clGetProgramInfo API 调用获取 CL_PROGRAM_BINARY_SIZES。这些是程序二进制文件的大小。2a) 使用 2) 中的大小为二进制文件分配内存

3) 使用 clGetProgramInfo API 调用获取 CL_PROGRAM_BINARIES。这将获得程序二进制文件。

4) 可以通过 API 调用 clCreateProgamWithBinary 将二进制文件转换为 OpenCL 程序对象。

二进制特定于设备的二进制文件,因此在特定设备上编译的二进制文件不会在其他设备上运行。

对于单个流程实例,一旦您拥有环境(平台、设备、上下文和队列),您就可以重新使用 OpenCL 内核对象并通过另一个 clEnqueueNDRange API 调用重新执行该对象。

于 2012-07-10T00:42:31.977 回答