いいえ、 CPU上で計算をしていて、その数値をGPUに転送してそこで動作させます。私は、CPU + GPUでの計算に要した合計時間を計算したいと思います。どうすればいいですか?CPU + GPUの合計時間を計算する方法
答えて
プログラムが起動すると、main()でシステムタイマーを使用して時間を記録します。あなたのプログラムがmain()の最後で終了したら、同じシステムタイマーを使って時刻を記録します。 time2とtime1の差を取る。そこに行く!
使用できるシステムタイマーはいくつかありますが、他のタイマーより高解像度のものもあります。ここでそれらについて話すのではなく、SOサイトで「システムタイマー」を検索することをお勧めします。任意のシステムタイマーが必要な場合、gettimeofday()はLinuxシステム上で動作しますが、新しい、より高精度の関数に取って代わられています。つまり、gettimeofday()は時間をマイクロ秒単位で測定するだけで、必要に応じて十分です。
十分な分解能でタイマーを得ることができない場合は、プログラムをループで何度も実行し、ループの実行を計時し、測定された時間をループ反復回数で除算することを検討してください。
EDIT:
システムタイマーは、GPUの計算中に使用される時間を含む全アプリケーションのパフォーマンスを測定するために使用することができます。このようにシステムタイマーを使用することは、処理時間ではなく、実際の、または壁時計の時間にのみ適用されることに注意してください。ウォールクロック時間に基づく測定には、GPUの処理が完了するまでの時間が含まれていなければなりません。
GPUカーネルの所要時間を測定する場合は、いくつかのオプションがあります。まず、Compute Visual Profilerを使用してさまざまなプロファイリング情報を収集することができますが、時間を報告するかどうかはわかりませんが、基本的なプロファイリング機能です。他のプロファイラ - PAPIが気になる - CUDAカーネルのサポートを提供する。
また、CUDAイベントを使用して時間を記録することもできます。 CUDAイベントを使用して時間を測定する方法については、「CUDA 4.0プログラミングガイド」を参照してください。
さらに別のオプションは、GPUカーネル呼び出しをラップしたシステムタイマーを使用することです。カーネル呼び出しの非同期性が返される場合、このメソッドを適用するには、cudaThreadSynchronize()などのホスト側GPU同期呼び出しを使用してカーネル呼び出しに従う必要があります。このオプションを使用する場合は、ループ内でカーネルを呼び出すことを強くお勧めします(ループ内ではcudaThreadSynchronize()は必要ありません)。反復回数で除算することによって計算されます。
GPUが動作しているかどうかにかかわらず、Cタイマーは動きます。もしあなたが私のことを信じていないなら、この小さな実験をしてください:をループに、GPU_Function_Callを1000回繰り返します。ループの周りにCタイマーを置く。今、あなたがプログラムを実行すると(GPU関数が20msのようなかなりの時間を費やしていると仮定します)、あなたはそれが復帰する前に肉眼で数秒間動くのを見ます。しかし、Cの時間を印刷すると、数ミリ秒のように表示されます。これは、Cタイマーが1000 MemcpyHtoDと1000 MemcpyfromDtoHと1000カーネルコールを待たなかったからです。私が提案する何
は、完全な時間を測定する(ヒューマンエラーを減らすために反復を増やす)、時間GPUと使用ストップウォッチにCUDAイベントタイマーまたはより良いNVIDIAビジュアルプロファイラを使用することです。 CPU時間を得るために合計からGPU時間を引くだけです。
あなたの最初のポイントは厳密には真ではありません。はい、カーネルの起動は非同期ですが、標準のmempcpy APIがブロックされているので、ホストタイマーは正しいウォールクロック時間を記録します。 – talonmies
- 1. 時間を加算して合計時間を計算する
- 2. gpuのパラレルリダクション合計が間違ったopenclを計算する
- 3. wpfコントロールの合計レンダリング時間を計算する方法は?
- 4. ASP - 時間範囲内の合計時間と分を計算する方法
- 5. 合計超過時間の計算MySQL
- 6. jQueryの各ループの合計時間を計算するには?
- 7. 複数行の時間差を計算して合計する
- 8. MPI使用時のCPU時間の計算
- 9. 合計時間数asp.netを計算するC#
- 10. CPU時間の計算方法を説明してください
- 11. ポストグル時間計算
- 12. GPU対CPU?プログラム計算の加速のためのGPUのコア/スレッドの数?
- 13. gprofのは合計時間
- 14. このアルゴリズムの時間計算量を計算する
- 15. GPUの整数計算
- 16. 1日分のイベントの合計継続時間の計算
- 17. リカバリーアルゴリズムの時間計算量を計算する
- 18. UIButtonの計算時間を計算する
- 19. 目覚まし時計のアラーム時間を計算する
- 20. Mysqlの時間計算 - 時間のみ
- 21. 科学計算用GPUの精度
- 22. 通話時間を計算
- 23. PHPの夏時間計算
- 24. PHPでの時間計算
- 25. 時間外の計算
- 26. python numpyで合計計算を並列化する方法は?
- 27. 計算された列の時間を取得する方法
- 28. 関数の経過時間を計算する方法は?
- 29. Rの時間差を計算する
- 30. 計算合計
これらのシステムタイマは、GPUでの計算にかかる時間も考慮していますか?私はそうは思わない...間に、私はコードのセクションの時間を設定したい。したがって、メインの起動だけで助けにならない – Programmer
@Programmer私の編集を確認してください。 – Patrick87