Czas OpenMP i clock () obliczają dwa różne wyniki

Mam sekwencyjny kod do równoległego przesyłania przez OpenMP. Umieściłem odpowiednie pragmy i przetestowałem je. Podczas testowania interpretuję przyrost wydajności, sprawdzając czas spędzony w głównej funkcji. Dziwną rzeczą jest czas, który upłynął obliczony przezcpu_time() iomp_get_wtime() zwraca dwa różne wyniki. Jak myślisz, co jest powodem?

Czas, który upłynął obliczony za pomocącpu_time() funkcja jest podobna do czasu sekwencyjnego.

Przed rozpoczęciem obliczeń

ctime1_ = cpu_time();
#ifdef _OPENMP
ctime1 = omp_get_wtime();
#endif

Po zakończeniu obliczeń

ctime2_ = cpu_time();
#ifdef _OPENMP
ctime2 = omp_get_wtime();
#endif

definicja funkcji cpu_time ()

double cpu_time(void)
{
  double value;
  value = (double) clock () / (double) CLOCKS_PER_SEC;
  return value;
}

Wynik drukowania

printf("%f - %f seconds.\n", ctime2 - ctime1, ctime2_ - ctime1_);

Przykładowy wynik

7.009537 - 11.575277 seconds.

questionAnswers(3)

yourAnswerToTheQuestion