我曾在几个项目中使用 OpenCL,但始终将内核编写为一个(有时相当大)函数。现在我正在处理一个更复杂的项目,并希望在多个内核之间共享功能。
但是我能找到的示例都将内核显示为单个文件(很少有人调用辅助函数)。似乎应该可以使用多个文件 -clCreateProgramWithSource()
接受多个字符串(并组合它们,我假设) - 尽管 pyopenclProgram()
只需要一个源。
所以我想听听任何有这样做经验的人的意见:
- 是否存在与多个源文件相关的问题?
- pyopencl 是简单地连接文件的最佳解决方法吗?
- 有没有办法编译函数库(而不是在每个内核中传递库源,即使不是全部都使用)?
- 如果每次都需要传入库源,是否会丢弃未使用的函数(无开销)?
- 还有其他最佳实践/建议吗?
谢谢。