我在不同的文件上有 2 个两个 python 脚本。第一个有 opencl 程序,它对传递给它的图像执行一些图像处理并返回结果。第二个脚本从文件中读取图像,并调用第一个脚本,将读取的图像作为参数传递,并获取其返回的结果,用于进一步处理。
现在,我的文件夹中有大约 100 张图像。因此第二个脚本调用第一个脚本 100 次,每次调用第一个脚本时,都会编译 opencl 内核,这是绝对没有必要的,因为所有图像都具有相同的格式和尺寸。有没有办法先编译一次 opencl 内核,以二进制格式存储并在需要时调用它?当然,我可以将所有代码放在一个大文件中,编译内核一次并循环调用它100次,但为了方便起见,我想要单独的文件。
硬件:
CPU:AMD A8 APU、AMD Phenom 2 X4
GPU:AMD Radeon HD 7640G + 7670M 双显卡、ATI Radeon HD5770
最佳答案
是的,您可以通过clGetProgramInfo()
获取程序的编译“二进制文件”并存储它。然后,您可以使用 clCreateProgramWithBinary()
而不是 clCreateProgramWithSource()
加载程序。
但是你正在使用 PyOpenCL automatically caches程序二进制文件。
关于python - 编译后的opencl程序可以存储为单独的二进制文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983709/