在 OpenCL 中使用多个程序

Using multiple programs in OpenCL

我正在编写一段代码,利用 GPU 使用 OpenCL。我成功地制作了一个运行向量加法的内核(在一个名为 VecAdd 的函数中),所以我知道它正在工作。假设我想为向量减法制作第二个内核 VecSub。我该怎么办?或者更具体地说:我可以为 VecAddVecSub 函数使用相同的上下文吗?

嗨@debruss 欢迎来到 Whosebug!

是的,您当然可以 运行 多个 Kernels 在同一个 Context
您可以在相同或多个 Programs 中定义 Kernels。您甚至可以在两个不同的 Command Queues 或为 out of order 执行配置的单个 Command Queue 中同时 运行 它们。

这里有一个例子(在rust中)在Program中定义和运行宁两个Kernelsopencl2_kernel_test.rs.