6

4 つの同時 CUDA アプリケーションが 1 つの GPU でリソースを求めて競合し、作業をグラフィック カードにオフロードできる場合はどうなるでしょうか?. Cuda Programming Guide 3.1 には、非同期の特定のメソッドがあると記載されています。

  • カーネルの起動
  • デバイス デバイス メモリのコピー
  • 64 KB 以下のメモリ ブロックのホスト デバイス メモリ コピー
  • Async のサフィックスが付いた関数によって実行されるメモリ コピー
  • メモリーセット関数呼び出し

また、コンピューティング機能 2.0 を備えたデバイスは、カーネルが同じコンテキストに属している限り、複数のカーネルを同時に実行できることにも言及しています。

このタイプの同時実行は、単一の cuda アプリケーション内のストリームにのみ適用されますが、GPU リソースを要求する完全に異なるアプリケーションがある場合は不可能ですか??

これは、同時サポートが 1 つのアプリケーション (コンテキスト???) 内でのみ利用可能であり、4 つのアプリケーションが CPU のコンテキスト切り替えによってメソッドがオーバーラップする可能性がある方法で同時に実行されることを意味しますが、4 つのアプリケーションは待機する必要があります。 GPUが他のアプリケーションによって解放されるまで?(つまり、app4 からのカーネルの起動は、app1 からのカーネルの起動が完了するまで待機します。)

その場合、これら 4 つのアプリケーションは、長い待機時間に苦しむことなく GPU リソースにアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

4

あなたが言ったように、いつでも各エンジンを占有できるのは1つの「コンテキスト」だけです。つまり、コピー エンジンの 1 つはアプリケーション A の memcpy を提供し、もう 1 つはアプリケーション B の memcpy を提供し、コンピューティング エンジンはアプリケーション C のカーネルを実行できます (たとえば)。

アプリケーションは実際には複数のコンテキストを持つことができますが、2 つのアプリケーションが同じコンテキストを共有することはできません (ただし、アプリケーション内のスレッドはコンテキストを共有できます)。

GPU で実行する作業をスケジュールするアプリケーション (つまり、memcpy またはカーネルの起動) は、非同期で作業をスケジュールできるため、アプリケーションは自由に先に進み、CPU で他の作業を実行できます。 GPU で実行します。

GPU を排他モードにすることもできることに注意してください。これにより、常に 1 つのコンテキストのみが GPU で操作できます (つまり、コンテキストが破棄されるまで、すべてのリソースがコンテキスト用に予約されます)。デフォルトは共有モードです

于 2010-09-14T14:54:04.393 に答える