OpenMP time und clock () berechnen zwei unterschiedliche Ergebnisse
Ich habe sequentiellen Code zum Parallelisieren über OpenMP. Ich habe entsprechende Pragmas gesetzt und getestet. Während des Testens interpretiere ich den Leistungszuwachs, indem ich die in der Hauptfunktion verbrachte Zeit überprüfe. Das Seltsame ist die verstrichene Zeit, die über berechnet wirdcpu_time()
undomp_get_wtime()
gibt zwei verschiedene Ergebnisse zurück. Was denkst du ist der Grund?
Die verstrichene Zeit berechnet sich übercpu_time()
Die Funktion ähnelt der sequentiellen Zeit.
Bevor die Berechnung beginnt
ctime1_ = cpu_time();
#ifdef _OPENMP
ctime1 = omp_get_wtime();
#endif
Nach der Berechnung endet
ctime2_ = cpu_time();
#ifdef _OPENMP
ctime2 = omp_get_wtime();
#endif
Definition der Funktion cpu_time ()
double cpu_time(void)
{
double value;
value = (double) clock () / (double) CLOCKS_PER_SEC;
return value;
}
Druckergebnis
printf("%f - %f seconds.\n", ctime2 - ctime1, ctime2_ - ctime1_);
Beispielergebnis
7.009537 - 11.575277 seconds.