2013-03-01 26 views

答えて

21

cudaFree(0); 

への呼び出しは、CUDAランタイムで怠惰なコンテキスト確立を強制的に標準的な方法です。ドライバ、ランタイム、オペレーティングシステムの待ち時間の関数であるオーバーヘッドを減らすことはできません。しかし、上記の呼び出しは、プログラムの実行中にこれらのオーバーヘッドがどのように発生するかを制御することができます。 cudaSetDeviceは現在のコンテキストを確立し、そのcudaFree()コールが明示的にコンテキストをintialiseする必要はありませんように、ランタイムAPIのコンテキスト初期化のヒューリスティックが微妙にすることができます、時間の経過とともに変化していることを追加するために2015で

EDIT代わりにcudaSetDeviceを使用してください。また、最初のカーネルの起動時にはまだセットアップ時間がかかりますが、それ以前はそうではありませんでした。カーネルのタイミングについては、カーネルを起動する前にウォームアップ・コールを最初に含めておくことをお勧めします。このセットアップ・レイテンシを削除する時間があります。さまざまなプロファイリングツールには、余分なAPIコールやカーネルコールがなければ、これを避けるために十分な粒度が組み込まれているようです。

+0

正確に!すべての初期化時間を取得します。ありがとう! – szli

関連する問題