0

参照されているOpenGLコンテキスト間で共有される同じテクスチャを使用する2つのホストスレッドを実行しています。これらの各スレッドは、次の最初のステップでcudaGLSetGLDeviceを実行する必要があると思いました。

  1. デバイスを現在のスレッドにバインドする
  2. デバイスを現在作成されているOpenGLコンテキストにバインドする

スレッド2がcudaGLSetGLDeviceを呼び出すとき、スレッド1はまだ機能していることに注意してください。これには、cudaDeviceResetがスレッド1から呼び出されておらず、そのOpenGLコンテキストが後で実行されるように設定されていないことが含まれます。

エラー出力として取得するものは次のとおりです。

「このプロセスでデバイスがアクティブな間は設定できません」

何ができますか、または何が間違っていますか?

私のシステムは1つのNVIDIAGTX550Tiで構成されており、boost::threadを使用しています。

4

1 に答える 1

0

解決策は、ランタイム管理からコンテキスト管理を隠さないドライバーAPIに切り替えることです。次に、ホストスレッドごとにCUDAコンテキストを作成でき、OpenGLの相互運用性を使用しても、すべて問題ありません:)

于 2012-08-09T10:42:12.797 に答える