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.

Ответы на вопрос(3)

Ваш ответ на вопрос