最初のcudaMalloc呼び出しは、GPUの初期化作業のために遅いです(0.2秒など)。時間を分けることができるように、初期化だけを行う機能はありますか? cudaSetDeviceは時間を0.15秒に短縮するようですが、まだすべての初期オーバーヘッドを排除するわけではありません。最初のcudaMallocコール以外にGPUを初期化する特定の関数はありますか?
14
A
答えて
21
cudaFree(0);
への呼び出しは、CUDAランタイムで怠惰なコンテキスト確立を強制的に標準的な方法です。ドライバ、ランタイム、オペレーティングシステムの待ち時間の関数であるオーバーヘッドを減らすことはできません。しかし、上記の呼び出しは、プログラムの実行中にこれらのオーバーヘッドがどのように発生するかを制御することができます。 cudaSetDevice
は現在のコンテキストを確立し、そのcudaFree()
コールが明示的にコンテキストをintialiseする必要はありませんように、ランタイムAPIのコンテキスト初期化のヒューリスティックが微妙にすることができます、時間の経過とともに変化していることを追加するために2015で
EDIT代わりにcudaSetDevice
を使用してください。また、最初のカーネルの起動時にはまだセットアップ時間がかかりますが、それ以前はそうではありませんでした。カーネルのタイミングについては、カーネルを起動する前にウォームアップ・コールを最初に含めておくことをお勧めします。このセットアップ・レイテンシを削除する時間があります。さまざまなプロファイリングツールには、余分なAPIコールやカーネルコールがなければ、これを避けるために十分な粒度が組み込まれているようです。
関連する問題
- 1. 定数データメンバをランダムに初期化する方法はありますか?
- 2. コールバック関数の初期化
- 3. TensorFlowでは、初期化されていない変数を初期化する方法はありますか? TensorFlowで変数を初期化する
- 4. グローバル変数初期化の最適化
- 5. JBrowserDriverが初期化に1分以上かかります
- 6. ゼロ以外の配列を初期化する
- 7. 初期化関数内でオブジェクトの項目を定義する
- 8. 別のstd :: arrayからstd :: arrayを初期化するための特定の構文はありますか?
- 9. 定数マップ初期化++
- 10. 未初期化定数RAILS_DEFAULT_LOGGER
- 11. 未初期化定数...エラー
- 12. ローカル変数のストレージを初期化するgccフラグはありますか?
- 13. メンバー関数を使用して初期化リストのメンバー変数を初期化できますか?
- 14. リストをPythonの特定の値に初期化する方法
- 15. 静的変数は特定のスレッドで初期化されていますか?
- 16. UpdatePanelの初期コール
- 17. 最初のjqueryタブの後ろにあるURLを呼び出す(初期化)
- 18. タイプの初期化例外
- 19. 選択メニューを特定の値に初期化する方法?
- 20. std :: mapは初期化する必要がありますか?
- 21. MEF - パラメータで初期化する方法はありますか?
- 22. JPA関係マッピングを初期化するか、初期化しないか?
- 23. foreach以外でvarを初期化する方法
- 24. 日付関数でクラス変数を初期化しますか?
- 25. C++クラスの初期化は、以下
- 26. VB.NETクラスの初期化と関数
- 27. Javaのコンストラクタの前に最終変数を初期化する
- 28. 指定された初期化子にスーパークラスの初期化メソッドをリンクする
- 29. 初期化リストをヘッダファイルに定義する必要がありますか?
- 30. erlで変数を初期化する方法はありますか?
正確に!すべての初期化時間を取得します。ありがとう! – szli