两个主机线程,两个具有共享显示列表(纹理)的OpenGL上下文和cudaGLSetGLDevice的用法

时间:2012-07-24 14:35:48

标签: opengl cuda

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

  1. 将设备绑定到当前线程
  2. 将设备绑定到当前制作的OpenGL上下文
  3. 请注意,当线程2调用cudaGLSetGLDevice时,线程1仍然有效。这将包括cudaDeviceReset既没有从线程1调用也没有将其OpenGL上下文设置为事后完成。

    我得到的错误输出是:

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

    我能做什么或做错什么?

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

1 个答案:

答案 0 :(得分:0)

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