OpenMP を介して並列化する順次コードがあります。対応するプラグマを入れてテストしました。メイン関数で費やされた時間をチェックすることで、パフォーマンスの向上を測定します。
cpu_time()
奇妙なことに、 と を介して計算された経過時間omp_get_wtime()
は異なります。なんで?
による経過時間cpu_time()
はシーケンシャル時間と同様です。
計算を開始する前に:
ctime1_ = cpu_time();
#ifdef _OPENMP
ctime1 = omp_get_wtime();
#endif
計算終了後:
ctime2_ = cpu_time();
#ifdef _OPENMP
ctime2 = omp_get_wtime();
#endif
cpu_time() 関数の定義:
double cpu_time(void)
{
double value;
value = (double) clock () / (double) CLOCKS_PER_SEC;
return value;
}
印刷結果:
printf("%f - %f seconds.\n", ctime2 - ctime1, ctime2_ - ctime1_);
サンプル結果:
7.009537 - 11.575277 seconds.