2017-09-22 4 views
0

Cette question est probablement stupide, mais je commence tout juste avec OpenMP en raison de l'augmentation des volumes de données.Les régions parallèles OpenMP imbriquées n'itéérant pas comme prévu

Je vais dans « Programmation parallèle en Fortran 95 en utilisant OpenMP » par Miguel Hermanns et je suis très tôt dans le livre. L'un des premiers exemples montre l'utilisation de régions parallèles imbriquées et indique qu'il devrait produire N + N lignes de sortie. La procédure ressemble à ceci:

program helloworld 
    !$OMP PARALLEL 
     write(*,*) "Hello" 
     !$OMP PARALLEL 
      write(*,*) "Hi" 
     !$OMP END PARALLEL 
    !$OMP END PARALLEL 
end program helloworldcode 

J'attendre 12 Hellos et 144 son, mais je reçois 12 de chaque:

$ ./helloworld.exe 
Hello 
Hello 
Hello 
Hi 
Hi 
Hello 
Hello 
Hello 
Hello 
Hello 
Hello 
Hi 
Hi 
Hello 
Hello 
Hi 
Hi 
Hi 
Hi 
Hi 
Hello 
Hi 
Hi 
Hi 

Pourquoi je ne reçois pas les 156 lignes de production que je attendre?

+0

Ues tag [tag: fortran] pour toutes les questions Fortran. Vous pouvez ajouter une balise de version pour une question spécifique à la version (celle-ci n'est pas spécifique à la version Fortran). Et même le livre que vous citez est F95 et non F90 ... –

Répondre

0

Par défaut, OpenMP sérialise toutes les régions parallèles imbriquées afin d'éviter le pire des cas de second degré sursouscription lorsque N^2 threads de travail sont créés. Avec un nombre suffisant de processeurs (disons> = 16), la surabondance quadratique peut ruiner l'exécution avec des frais généraux de cauchemar ou provoquer un problème d'épuisement des ressources lorsque le nombre requis de threads ne peut simplement pas être créé.

Pour plus d'informations sur l'activation du parallélisme imbriqué dans OpenMP sur vos risques, veuillez vous reporter à omp_set_nested et à la variable d'environnement correspondante OMP_NESTED.

+0

Ah, d'accord, merci. Si je le voulais, y a-t-il un drapeau pour lui dire d'exécuter des régions parallèles imbriquées comme elles sont écrites? – Vorticity