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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage