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.
11
задан Boann 29 October 2019 в 16:49
поделиться