cプログラムの合計所要時間を計算するには、通常、<time.h>
にあるclock()
とtime()
という関数を使用します。
clock()
は、CPUが使用したティック数(CLOCKS_PER_SEC
)を測定した後、CLOCKS_PER_SEC
で計算したいコードスニペットの開始点と終了点の差を簡単に分けることができます。これは、時間を秒単位で取得するのに役立ちます。
time(null)
は、特定の時点からの秒数を返します。 here
ここに私の問題があります。 OpenMP
を使用して実行すると、システムに存在するすべてのプロセッサーを使用する通常のCプログラムによって実行された合計時間(文書処理の高速化に要する時間)を計算するために、時間を計算する最良の方法は何ですか。 clock()
だけで、基本的(actual_time_taken x omp_get_max_threads())
と時間(各プロセッサ上でプログラムを実行するのにかかる累積時間)を返すように私は、ミリ秒単位の時間の計算に興味として計算するための非常に漠然とした方法があります。並列プログラムの時間計算
答えて
OpenMPはこれを正確に行うためにomp_get_wtime()
を提供します。あなたのコードでこの関数を使わない何らかの理由はありますか?
Cでプログラミングしているので、関数getrusage()
を使用する必要があります。これにより、プロセス全体とその子プロセス、現在のプロセスだけ、またはすべてのスレッドのシステムとユーザーのモード時間が表示されます。開始時に1回、終了時に1回呼び出してから、その差を取ってください。
この回答は多くのレベルで間違っています:1) 'TICKS_PER_SEC'はCPUの周波数とは関係ありません。これはヘッダー '#define'なので、おそらく頻度を参照することはできません。したがって、 'clock'がタイムスタンプカウンタ(TSC)を直接使用することは不可能です。 2)現代のCPUは[constant TSC](https://en.m.wikipedia.org/wiki/Time_Stamp_Counter#Implementation_in_various_processors)を持っているので、周波数スケーリングにもかかわらずTSCを使うことができます。 – Zulan
最新のCPUで '1M 'と定義されている' CLOCKS_PER_SEC'では単純な誤称であると思われ、 'clock()'から読み取られたdouble値の差で使用して操作秒数を決定することができます。 –
@Zulan:OK、私は答えのその部分を削除し、私はかなり良いアドバイスであると確信している部分を残しました。 :) ありがとうございました。 –
- 1. 相互依存スレッドの並列計算時間の測定
- 2. Julia並列計算の同時実行
- 3. 並列計算
- 4. プログラムの計算時間とI/O時間の測定
- 5. 並列計算 - シャッフル
- 6. 計算時間
- 7. 時間計算
- 8. 時間計算
- 9. 瞬時の時間計算
- 10. オクタブでの並列計算
- 11. Haskellでの並列計算
- 12. RxJavaの並列計算
- 13. Mysqlの時間計算 - 時間のみ
- 14. ポストグル時間計算
- 15. ビッグシータ、時間計算
- 16. 時間計算エラー
- 17. 計算時間が
- 18. 時間を加算して合計時間を計算する
- 19. 並列計算用CPUカード?
- 20. Java並列計算/スレッド
- 21. 相対時間の計算
- 22. Pythonのヒープソート時間計算
- 23. 時間計算のPython
- 24. 保持時間の計算
- 25. PHPの夏時間計算
- 26. PHPでの時間計算
- 27. 時間外の計算
- 28. 並列計算でPythonプログラムを高速化する方法は?
- 29. php4時間計算時間エラー
- 30. 開始時間と終了時間の間の計算時間
IMHOこれはhttps://stackoverflow.com/questions/12392278/measure-time-in-linux-time-vs-clock-vs-getrusage-vs-clock-gettime-vs-gettimeofの複製です。私の個人的なお勧めは 'clock_gettime(CLOCK_MONOTONIC_RAW ...')です。残念ながら、銀色の弾丸はありません。時計の品質と移植性の間にトレードオフがあり、もちろん必要です。 – Zulan
私は見ませんでしたomp_get_wtimeを回避するための理由Windowsの場合、クエリパフォーマンスAPIに基づいている可能性があるなど、OSによってタイマーの品質に問題がある場合は、合理的な解決方法が必要です。 – tim18