4

コンピューティング エンジン キューに入れることができる非同期カーネル起動の数に制限があるようです。この制限を超えると、ホストがブロックされ、GPU-CPU の同時実行性が失われます。これは、CUDA プログラミング ガイドには記載されていません。

  • コンピューティング エンジン キューに入れることができる非同期カーネル起動の最大数はいくつですか?
  • この最大数は、起動されるカーネルに何らかの形で依存しますか?
  • CPU がカーネルの起動をコンピューティング エンジンのキューに入れるのにかかる時間は、起動するカーネルによって異なりますか?
  • コピー エンジン キューに入れることができる非同期 memcpy の最大数はいくつですか?
4

1 に答える 1

3

この質問に対する普遍的な答えがあるかどうかはわかりません。ある程度、プラットフォームとCUDAバージョン固有のAFAIKです。箇条書きに答えるには

  • 制限はキューのサイズだと思います。そのため、カーネルの起動ではなく、キュー操作の最大数があります。同じ合計制限が、カーネル、コピー操作、およびストリーム イベントの任意の組み合わせに適用されます。操作の総数は、プラットフォームと CUDA のバージョンによって異なります
  • いいえ
  • いいえ。ただし、ドライバー キューがいっぱいになると、非同期操作の送信にかかる時間が大幅に増加します。
  • 最初のポイントを参照してください。ドライバーがコピー、カーネルの起動、またはイベントを区別しているとは思えません。

CUDA 2.1 の頃にいくつかのベンチマークを行ったことを思い出すと、24 個の操作がキューに入れられるまですべてが高速に実行され、その後、後続の操作がキューに入れられるまでの時間が遅くなったことがわかりました。CUDA 3.0 がリリースされるまでに、以前のバージョンに存在していた制限に達する可能性のあるコードがなかったため、何かが変更されました。最新の CUDA バージョンの動作を確認するためのベンチマークを作成するのは簡単です。

于 2013-04-25T15:58:26.713 に答える