OpenMP temps et de l'horloge() calcule deux résultats différents

J'ai du code séquentiel pour paralléliser via OpenMP. J'ai mis correspondant pragmas et de le tester. Lors du test j'interprète gain de performance en vérifiant de temps passé dans la fonction principale. La chose étrange est le temps écoulé, calculé par cpu_time() et omp_get_wtime() retourne deux résultats différents. Que pensez-vous de la raison?

Le temps écoulé, calculé par cpu_time() fonction est similaire à séquentielle temps.

Avant le calcul commence

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

Après le calcul se termine

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

cpu_time() définition de la fonction de

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

Résultat de l'impression

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

Exemple de résultat

7.009537 - 11.575277 seconds.

OriginalL'auteur mert | 2012-05-20