python - 编译后的opencl程序可以存储为单独的二进制文件吗?

标签 python opencl gpgpu pyopencl amd-processor

我在不同的文件上有 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/

相关文章:

opencl - nvidia gpu 上的内核真的有超时吗?

cuda - 使用 CUBLAS 例程在 GPGPU 上保留点积

python - 为什么 re.sub 替换整个模式,而不仅仅是其中的一个捕获组?

python - 如何在 psycopg2 查询中返回 json?

c++ - OpenCL/GL 互操作 : write_imagef to shared gltexture is all white (1, 1,1,1)

c++ - clCreateImage2D(..., void* hst_ptr,..) 怎么用呢?

parallel-processing - Metal 非原子并行还原

c++ - 某些子网格未使用 CUDA 动态并行执行

c++ - 如何以向后方式遍历python和c++中的文件?并且还以向后(从下到上)的方式存储数据?

python - Matplotlib 的默认 GUI 后端是什么?