OpenCL 应用程序中的多个程序(相对于内核)

Multiple Programs (vs. Kernels) in an OpenCL application

一个程序可以包含多个内核。如果我在多个程序中破坏我的内核,会有什么不同吗?他们都可以在相同的设备和队列上使用相同的上下文和 运行 吗?

我正在玩 OpenCL,碰巧在 PyOpenCL 工作。该结构使得命令队列由 class 拥有,它将多个内核编译成一个程序。我正在实现一些子classes,它们实现了一些我将运行放在基础class'队列上的内核。我是否需要将这些内核注入到基础 class 并将其编译成一个程序,或者我是否可以为每个子 class 编译单独的程序,这些程序都依赖于基础 class 中的上下文]?

一个 OpenCL 上下文可以关联多个程序,因此您可以将内核拆分到多个程序中,一切仍然有效。