У меня есть последовательный код, который нужно распараллелить через 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.