1

GPU (GeForce 690) で実行され、単一のブロックを使用するカーネルがあります。約160マイクロ秒で実行されます。私の計画は8、これらのカーネルを個別に起動することです。それぞれが 1 つのブロックのみを使用するため、それぞれが個別の SM で実行され、すべてが同時に実行されます。できれば約160マイクロ秒で実行されます。

ただし、これを行うと、カーネルごとに合計時間が直線的に増加します。カーネル320を実行するとマイクロ秒、2カーネルの場合は約490マイクロ秒3などです。

私の質問: これらのカーネルを同時に実行するには、どこかにフラグを設定する必要がありますか? それとも、明らかでないことをしなければなりませんか?

4

1 に答える 1

4

@JackOLantern が示したように、並列カーネルにはストリームの使用が必要であり、これはGPUでの非同期アクティビティ スケジューリングのすべての形式に必要です。また、一般的に言えば、計算能力 2.0 以上の GPU も必要です。アプリケーションでストリームを使用しない場合、すべての cuda API およびカーネル呼び出しは、コードで発行された順序で順次実行され、1 つの呼び出し/カーネルから次の呼び出し/カーネルへと重複することはありません。

ここで完全なチュートリアルを提供するのではなく、JackOlantern が参照した並行カーネル cuda サンプルを確認してください。

また、さまざまな理由により、実際に同時実行を目撃することは、ウィンドウではより困難になる可能性があることに注意してください。並行カーネルのサンプルを実行すると、現在の環境 (OS、ドライバーなど) が並行実行を提供しているかどうかがすぐにわかります。

于 2013-07-03T15:11:41.777 に答える