私が正しく理解していれば、CUDAカーネルを非同期で起動するとすぐに実行を開始するか、以前の非同期呼び出し(転送、カーネルなど)が最初に完了するのを待つかもしれません。 (カーネルはいくつかのケースで同時に実行できることも理解していますが、今は無視したい)。カーネルの起動から実行までの平均時間は?
カーネルの起動(「キューイング」)と実際に実行を開始するまでの時間を知るにはどうすればよいですか?実際には、自分のプログラムの一回の実行ですべての起動の平均「待ち時間」を知りたいだけです(一般に数十万回または数十万回のカーネル起動です)。
私は簡単に平均イベントを伴うカーネルあたりの実行時間(〜500us)。シミュレートしようとしました - カーネルが起動されるたびにCLOCK()
の結果を落としました。各カーネルが起動されたときの起動キューの長さを判断できるという考えがありました。しかし、CLOCK()
は十分な精度(0.01s)を持っていません。実際には多くの場合、60個ものカーネルが一度に起動するように見えることがあります。