OpenCL:内核离线编译的共享库,有可能吗?

OpenCL: Shared library with offline compilation of the kernes, is it possible?

如果这个 question. However, what I want is to compile a shared library 由为同一视频卡离线编译的 OpenCL 内核利用,我的问题也是类似的。可能吗?为内核保存二进制文件有哪些注意事项? Makefile 有哪些注意事项?一个简单的例子将不胜感激。

有可能。

  1. 您需要编写一个简单的程序来创建二进制文件,然后将其转储为二进制文件,或者如果您选择的 OpenCL SDK 提供离线编译器,则使用离线编译器。

  2. 按照本手册将二进制文件嵌入到您的共享库中:https://csl.name/post/embedding-binary-data/

  3. 在带有嵌入数据对象的共享库中使用 clCreateProgramWithBinary()

至于 Makefile,您可以使用离线编译器或自行编写的二进制生成器添加目标以根据 kernel.cl 源文件创建 kernel.bin。然后将 kernel.bin 添加为共享库目标的依赖项。

希望对您有所帮助。