OpenMP time и clock () вычисляют два разных результата
У меня есть последовательный код для распараллеливания через 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.