Warum cudaGLSetGLDevice fehlgeschlagen ist, obwohl es in der ersten Zeile der Hauptfunktion aufgerufen wird

Ich möchte die Interoperabilität zwischen OpenGL und CUDA nutzen. Ich weiß, wie einige Tutorials sagten, besteht der erste Schritt darin, ein Gerät auszuwählen. Wenn ich jedoch das cudaGLSetGLDevice (0) in der ersten Zeile der Hauptfunktion aufrief, wurde das Programm mit der Information "cudaSafeCall () Runtime API-Fehler 36: Kann nicht gesetzt werden, während das Gerät in diesem Prozess aktiv ist." Beendet.

Obwohl ich cudaDeviceProp und cudaChooseDevice verwende, bevor ich cudaGLSetDevice aufrufe, ist der Fehler immer noch vorhanden.

Glauben Sie mir, mein Computer hat nur eine GPU, 9800GT. Und ich weiß, dass der Aufruf von cudaGLSetGLDevice vor jeder anderen CUDA-Funktion erfolgen sollte. Deshalb habe ich ihn in die erste Zeile der Hauptfunktion gestellt.

Und ich verwende das Windows SDK, um OpenGL anstelle von Überfluss zu rendern. Ist das ein Problem?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage