問題タブ [cuda-context]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 1 つのデバイスに複数の CUDA コンテキスト - 意味はありますか?
私はこれを理解していると思っていましたが、明らかにそうではありません:)エンコーダーによって受け入れられる形式のいずれでもないフレームからNVENCを使用して並列H.264ストリームエンコーディングを実行する必要があるため、次のコードパイプラインがあります。
- 新しいフレームが到着したことを通知するコールバックが呼び出されます
- フレームを CUDA メモリにコピーし、必要な色空間変換を実行します (最初の変換のみ
cuMemcpy
が同期であるため、コールバックから戻ることができます。保留中の操作はすべて専用ストリームにプッシュされます)。 - イベントをストリームにプッシュし、別のスレッドを待機させます。イベントが設定されるとすぐに、正しい色空間のフレームで CUDA メモリ ポインターを取得し、デコーダーにフィードします。
何らかの理由で、このパイプラインを並列スレッドで実行する場合、各スレッドに専用のコンテキストが必要であると想定していました。コードは遅く、いくつか読んだ後、コンテキストの切り替えは実際にはコストがかかることを理解しましたが、コンテキストではGPU全体を所有しているため、他のトランスコーダースレッドからの並列処理をロックアウトしているため、実際には意味がないという結論に達しました.
質問 1:このシナリオでは、前述のパイプラインを実行するスレッドごとに、単一のコンテキストと、このコンテキストで作成された明示的なストリームを使用しても問題ありませんか?
質問 2:誰かが CUDA デバイス コンテキストの唯一の目的について教えてもらえますか? 複数の GPU のシナリオでは意味があると思いますが、1 つの GPU に対して複数のコンテキストを作成したい場合はありますか?
cuda - GPU で実行されている現在の CUDA コンテキストを取得する
特定の時点で GPU で実行されているプロセスの数を検出し、それらを管理する方法はありますか (必要に応じて、生成、再開、強制終了など)。私がやりたいことは、さまざまなプログラムを実行しながら、GPU 上の各プロセス アクティビティを監視することです。どうすればそれができるのかわかりませんでした。GPU コンテキストはプロセスに相当する CPU であることがわかりましたが、私が読んだすべての説明は、単一のプログラム内でそれに影響を与えることに関するものでした。ここでも、GPU 上のすべてのアクティビティをトレースする必要があります (nvidia-smi
ツールと同様ですが、独自の手段を使用します)。誰でもそれで私を助けることができますか?それは可能ですか?