• Aucun résultat trouvé

Chapitre 2. Une méthode de résolution des écoulements multi-matériaux 35

6.2 Performance

i + 2 i + 1 i i− 1 i− 2

Figure 2.11 – Stencil pour calculer les flux numériques.

Le calcul du transport de la fonction level set φ fait intervenir la méthode du WENO5 pour le calcul du gradient ∇xφ. Cette méthode nécessite un stencil de sept mailles puisqu’on ne peut pas déterminer à l’avance dans quel sens sera le vrai stencil utilisé, voir Figure 2.12. Chaque processeur doit alors communiquer à ses voisins trois mailles de bord contenant les valeurs de la fonction level set.

φi+3 φi+2 φi+1 φi φi−1 φi−2 φi−3

Figure 2.12 – Stencil pour calculer les flux du WENO5.

En résumé, les processeurs communiquent à leurs voisins nord, sud, est et ouest deux mailles de bord contenant les valeurs des états ψ pour le calcul des problèmes de Riemann avec recons-truction de pente et trois mailles de bord contenant les valeurs de la fonction level set pour le calcul du transport de celle-ci.

6.2 Performance

La performance d’un code parallèle est la mesure du gain en temps de calcul de ce code par rapport à sa version séquentielle (sur un seul processeur). Pour mesurer la performance, on effectue des tests de scalabilité. Il en existe deux types : la scalabilité faible et la scalabilité forte. Pour ces tests, on supprime toutes les sorties fichier du code. En effet, suivant la vitesse de la bande, le temps d’écriture dans un fichier peut être très variable et donc le temps de calcul total ne serait plus représentatif de l’effet de la parallélisation pure.

Les tests sont effectués sur un problème d’impact d’un projectile sur une plaque. Projectile et plaque appartiennent au même matériau cuivre (une seule fonction level set) et sont immergés dans de l’air. L’impact se fait avec une vitesse initiale du projectile de 800m.s−1. Le domaine de calcul est de taille [−0.4, 0.4]2 en deux dimensions et [−0.4, 0.4]3 en trois dimensions. Les configurations initiales sont schématisées Figure 2.13.

Cuivre Air

(a) Configuration 2D. (b) Configuration 3D.

Figure 2.13 – Configurations initiales des cas test utilisés pour l’évaluation de la performance de la parallélisation.

6.2.1 Scalabilité faible

La scalabilité faible considère un problème de taille fixe pour chaque processeur. Le maillage augmente proportionnellement avec le nombre de processeurs. On mesure le temps CPU to-tal pour différents nombres de processeurs. Idéalement, le temps d’exécution du code pour un maillage de taille M sur un processeur est égal eu temps d’exécution pour un maillage de taille nM sur n processeurs, pour un nombre fixe d’itérations.

On mesure le temps CPU moyenné sur 4 exécutions de 1000 itérations. On veut garder des sous-blocs de calcul carrés. Tout d’abord, on choisit de prendre un maillage de 502 par bloc ce qui revient à un maillage de 502 sur un processeur, 1002sur 4 processeurs, 2002sur 8 processeurs, jusqu’à 8002 sur 256 processeurs. On s’intéresse ensuite à des maillages plus importants de 1002

et 2002 mailles par blocs.

Pour connaître l’écart relatif de temps entre le calcul sur un processeur et le calcul sur n processeurs, on trace la courbe Tn−T1

T1 , voir Figure 2.14, où T1 et Tn sont les temps d’exécution sur un et n processeurs, respectivement.

Les résultats montrent l’impact des communications entre processeurs sur le temps de calcul total. En effet, on observe que pour 502 mailles par bloc l’écart relatif Tn−T1

T1 pour n = 256 processeurs est d’environ 0.9. Autrement dit, les communications comptent pour 90% de temps en plus que le temps nécessaire à la résolution du problème. Pour des tailles de bloc de 1002 et 2002 mailles, l’écart relatif est de seulement 0.27 et 0.23 pour 256 processeurs, respectivement. Pour une bonne efficacité de la parallélisation, il est donc conseillé de partitionner les maillages avec des blocs d’au moins 1002 mailles pour des problèmes en deux dimensions.

1 4 16 64 256 0 0.2 0.4 0.6 0.8 1 nombre de processeurs Tn T1 T1 502 1002 2002 0.90 0.27 0.23

Figure 2.14 – Scalabilité faible sur des maillages de 502, 1002et 2002 par bloc.

6.2.2 Scalabilité forte

Mesurer la scalabilité forte revient à considérer cette fois une taille de résolution fixe du domaine et à augmenter le nombre de processeurs. On mesure le temps CPU d’exécution du code et on calcule le gain (ou speedup) tel que g = T1

Tn où T1 et Tn sont les temps de calcul pour un et n processeurs, respectivement. Une parallélisation idéale aurait un gain g = n.

On effectue les calculs sur 2n processeurs avec n ∈ [0, 8]. La taille du maillage en deux dimensions est fixée à 8002 pour toujours garder des sous-blocs carrés. En trois dimensions, la taille du maillage est de 1203. Dans ce cas, les blocs ne sont pas cubiques mais possèdent le même nombre de mailles. Les résultats sont donnés Figure 2.15 où les temps utilisés sont moyennés sur 4 et 3 exécutions, respectivement. 1 2 4 8 16 32 64 128 256 1 2 4 8 16 32 64 128 256 nombre de processeurs gain théorique calcul (a) Maillage 8002. 1 2 4 8 16 32 64 128 256 1 2 4 8 16 32 64 128 256 nombre de processeurs gain théorique calcul (b) Maillage 1203.

On observe une très bonne scalabilité du code 2D. Un point important est qu’il n’y a qu’une seule donnée, le pas de temps, communiquée à tous les processeurs. Tout le reste des calculs s’effectue en parallèle.

On observe sur le graphique Figure 2.15(a) que le point pour le calcul sur deux processeurs est au-dessus de la courbe théorique. Cette anomalie peut s’expliquer par le fait que les pro-cesseurs ont accès à plus de mémoire RAM. La communication avec la mémoire est donc plus rapide. Une deuxième explication est que, dans le cas d’un seul processeur, celui-ci doit s’arrêter sur toutes les instructions "if", pour savoir s’il a des voisins, sans en bénéficier. Le temps passé à vérifier ces instructions peut être plus long que les communications entre deux processeurs.

Le code 3D montre une moins bonne scalabilité. Avec des blocs de forme parallélépipédique, la quantité de données à communiquer diffère selon les directions. De plus, plus le nombre de processeurs augmente, plus les processeurs sont en charge de petit maillage et plus ils sont susceptibles de contenir des mailles d’un seul type de matériau. Le calcul est un peu plus long sur les mailles solides car la vitesse des ondes (1.87) est plus complexe à déterminer et il faut évaluer les valeurs des composantes tangentielles du tenseur des contraintes σ21 et σ31 (1.69). La charge entre processeurs peut donc varier.

Documents relatifs