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.