如何在不同的 cpu pthread 之间传递 openCL 上下文?

How to pass the openCL context between different cpu pthreads?

Cuda 具有 cuCtxPopCurrent() 和 cuCtxPushCurrent() 用于从创建它的 pthread 弹出 cuda 上下文并将其推送到另一个想要使用它的 pthread。

默认情况下,只能从创建它的 CPU 线程访问该 CUDA 上下文。如果您想从其他线程访问 CUDA 上下文,则必须调用 cuCtxPopCurrent() 将其从创建它的线程中弹出。然后可以将上下文推送到任何其他 CPU 线程的当前上下文堆栈,随后的 CUDA 调用将引用该上下文。

我找不到与 openCL 类似的东西。

OpenCL 上下文和命令队列没有线程关联。线程没有 'current context' 这样的东西。您必须为每个 API 调用显式提供上下文/队列句柄。

此外,从多个线程访问 OpenCL 上下文或命令队列没有特殊问题。它们是线程安全的。