我正在运行两个主机线程,它们都使用在引用的OpenGL上下文之间共享的相同纹理。我认为每个线程都必须在第一步运行cudaGLSetGLDevice:
请注意,当线程2调用cudaGLSetGLDevice时,线程1仍然有效。这将包括cudaDeviceReset既没有从线程1调用也没有将其OpenGL上下文设置为事后完成。
我得到的错误输出是:
“在此过程中设备处于活动状态时无法设置”
我能做什么或做错什么?
我的系统由一个NVIDIA GTX 550Ti组成,我正在使用boost :: thread。
答案 0 :(得分:0)
解决方案是从运行时切换到不隐藏上下文管理的驱动程序api。然后我们可以为每个主机线程创建一个CUDA上下文,即使使用OpenGL互操作性,一切都很好:)