Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 06_pi_for_atomic.cpp #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

soriyath
Copy link

J'ai revu l'implémentation. J'ai l'impression que faire
sum += fpi (x) dans la directive #pragma omp atomic rend ton code séquentiel.

@krypty
Copy link
Owner

krypty commented Oct 28, 2015

Il y a une différence entre:

  • Fichier: 05_pi_for_critical.cpp
#pragma omp parallel for private (x)
for(int i = 0; i < n; i++)
    {
    // V1 : double x = ....
    x = i * dx;

    // pas bon ! n * NB_THREAD / NB_THREAD
#pragma omp critical (toto)
    {
    somme += fpi(x);
    }
    }
return somme/n;
}
  • Fichier: 04_pi_entrelacer_atomic.cpp
#pragma omp parallel for private (x)
for(int i = 0; i < n; i++)
    {
    // V1 : double x = ....
    x = i * dx;

    // pas bon ! n * NB_THREAD / NB_THREAD
    // mais quand meme meilleur que critical for car fpi(x) est fait en parallel et += séquentiellement
#pragma omp atomic
    somme += fpi(x);
    }
return somme/n;
}

Dans le fichier 05_pi..., le fpi(x) et le += sont fait séquentiellement.
Dans le fichier 06_pi...m le fpi(x) est fait en parallèle et seul le += est séquentialisé.

Et mon code compile ;-)

PS: tu as aussi sorti le fpi(x) pour le passer dans la partie parallélisée, c'est sûrement pour cette raison que ton code s'exécute plus vite. Maintenant, je crois que c'était volontaire de la part du prof de le mettre dedans, peut être pour être cohérent ou pour mieux montrer les variantes d'un exemple à l'autre.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants