and*_*oke 14 coding-style gpgpu opencl pyopencl
我曾在几个项目中使用OpenCL,但始终将内核编写为一个(有时候相当大)的函数.现在我正在开发一个更复杂的项目,并希望在几个内核之间共享功能.
但是我可以找到的示例都将内核显示为单个文件(甚至很少调用辅助函数).似乎应该可以使用多个文件 - clCreateProgramWithSource()接受多个字符串(并假设它们结合起来) - 尽管pyopencl Program()只需要一个源.
所以我希望听到任何有这方面经验的人:
谢谢.
我不认为OpenCL在程序中有多个源文件的概念 - 程序是一个编译单元.但是,您可以在编译时使用#include并引入头文件或其他.cl文件.
您可以在OpenCL程序中拥有多个内核 - 因此,在一次编译之后,您可以调用任何已编译的内核集.
任何未使用的代码 - 函数或任何静态知道无法访问的代码 - 都可以假设在编译期间被消除,编译时间成本较低.