0

我正在运行两个主机线程,它们都使用在它们引用的 OpenGL 上下文之间共享的相同纹理。我认为这些线程中的每一个都必须在第一步运行 cudaGLSetGLDevice 以:

  1. 将设备绑定到当前线程
  2. 将设备绑定到当前制作的 OpenGL 上下文

请注意,当线程 2 调用 cudaGLSetGLDevice 时,线程 1 仍在工作。这将包括既没有从线程 1 调用 cudaDeviceReset 也没有将其 OpenGL 上下文设置为之后完成。

我得到的错误输出是:

“在此过程中设备处于活动状态时无法设置”

我能做什么或我做错了什么?

我的系统由一个 NVIDIA GTX 550Ti 组成,我正在使用 boost::thread。

4

1 回答 1

0

解决方案是从运行时切换到不隐藏上下文管理的驱动程序 api。然后我们可以为每个主机线程创建一个 CUDA 上下文,一切都很好,即使是 OpenGL 互操作性:)

于 2012-08-09T10:42:12.797 回答