Personal tools
You are here: Home Calcul Technique Documentation IBM cluster p575 (Power5) Equation de la chaleur 3D
Document Actions

Equation de la chaleur 3D

Parallélisation de l'équation de la chaleur 3D par MPI et OpenMP



Equation modèle : équation de la Chaleur

L'équation de la Chaleur en trois dimensions d'espace est notre troisième problème.
Le problème mathématique s'écrit :

avec

On construit le second membre f pour que u_ex(x,y,z,t) = g(x).h(t) soit solution de cette équation, avec :

La parallélisation est faite par décomposition de domaine avec MPI et aussi par partage du travail avec OpenMP.

La discrétisation spatiale est faite par un schéma aux différences finies d'ordre deux à trois points.
La discrétisation temporelle est faite par le schéma de Crank-Nicholson, ordre 2 semi-implicite et inconditionnellement stable dans notre cas. Le système discrétisé est :

Soit en forme développée :


La matrice du système linéaire, A, est l'opposée du laplacien discrétisé. Elle est alors symétrique et définie positive.
Les pas d'espace sont hx = 1/(ntx + 1), hy = 1 / (nty + 1) et hz = 1 / (ntz + 1).
Seule la méthode du Gradient Conjugué est employée pour chaque type de parallélisation.


flechehaut

Cas test

Le test est fait pour ntx = nty = ntz = 256.
La viscosité cinématique, lambda, vaut 1E-2.
Le pas de temps, dt, vaut 1E-3.
Le critère d'arrêt pour le Gradient Conjugué est : résidu inférieur à 1E-07 ou 50 itérations effectuées.
Comme la matrice est bien conditionnée la convergence du Gradient Conjugué a lieu en quelques itérations.

Remarque :
Dans ce cas bien précis, le critère de convergence peut même être assoupli jusqu'à 1E-07 .... par rapport aux exemples précédents.
La règle à respecter est que l'erreur de résolution du système linéaire soit majorée en permanence par l'erreur de consistance des schémas numériques. Cela permet d'obtenir des gains subtantiels : pour cet exemple bien précis le temps du run est divisé par un facteur 2 pour 4 processus avec OpenMP lorsque le critère sur le résidu passe de 1E-10 à 1E-06 sans que les erreurs obtenues diffèrent. Il ne sert à rien d'avoir des valeurs très précises sur des quantités pour ensuite les employer dans des schémas avec des erreurs nettement plus grandes.
Dans le cas général ou l'on ne dispose pas de solution analytique comme pour ces exemples, il est impératif de prendre un peu de marge, quitte à faire quelques runs avec différents critères de convergence pour déterminer la valeur la mieux adaptée.

La simulation est réalisée pour pour t allant de 0.0 à 0.05, soit 50 itérations en temps.

Les codes parallèles (MPI et OpenMP) sont lancés sur 2 et 4 processus.


flechehaut

Résultats code séquentiel

Les mesures du temps sont réalisées à l'intérieur du code.
Les tests ont été refaits sur les noeuds p575 (power5 à 1.9GHz) et certaines valeurs mises à jour.
Le résidu correspond à la différence entre deux itérés successifs pour la méthode de Jacobi ou le vecteur résidu pour la méthode du Gradient Conjugué. L'erreur maximale correspond à l'erreur entre la solution calculée et la solution analytique connue.
 
Code séquentiel 
1 processus  Gradient Conjugué 
Temps écoulé (sec.)  190.6
105.5
MFlops  805.7
1448.9


flechehaut

Résultats sur 2 processus

Les mesures du temps sont réalisées à l'intérieur du code.
Les performances sont évaluées en comptant le nombre d'opérations flottantes pour chaque processus.
Les tests ont été refaits sur les noeuds p575 (power5 à 1.9GHz) et certaines valeurs mises à jour.
L'accélération et l'efficacité se calculent à partir des temps du code séquentiel et du code parallèle considéré.
 
Gradient Conjugué 
2 processus  OMP  MPI 
Temps écoulé (sec.)  122.1
63.8
100.7
66.2
MFlops/processus  627.4
1202.7
764.3
1145.4
MFlops code  1254.8
2405.5
1528.5
2290.8
Accélération  1.56
1.65
1.89
1.59
Efficacité  0.78
0.83
0.90
0.80


flechehaut

Résultats sur 4 processus

Les mesures du temps sont réalisées à l'intérieur du code.
Les tests ont été refaits sur les noeuds p575 (power5 à 1.9GHz) et certaines valeurs mises à jour.
Les performances sont évaluées en comptant le nombre d'opérations flottantes pour chaque processus.
L'accélération et l'efficacité se calculent à partir des temps du code séquentiel et du code parallèle considéré.
 
Gradient Conjugué 
4 processus  OMP  MPI 
Temps écoulé (sec.)  77.9
34.0
53.6
46.8
MFlops/processus  493.1
1127.6
716.8
807.9
MFlops code  1972.3
4510.2
2867.3
3231.8
Accélération  2.45
3.11
3.56
2.25
Efficacité  0.61
0.78
0.89
0.56


flechehaut

Load-balancing pour le Gradient Conjugué

Tableau des performances détaillées pour OpenMP pour le Gradient Conjugué :
 
OpenMP  2 threads
cumul
4 threads
cumul
Rappel
Séquentiel 
Temps
saxpy 114.6 146.3 89.9
pmv  64.4  75.8 53.2
prodscal  41.4  49.2 33.4
scdmb  8.2  11.5  6.2
gradconj  7.0  7.1  6.0

Tableau des performances détaillées pour MPI pour le Gradient Conjugué :
 

MPI  2 processus  4 processus  Rappel Séquentiel
Temps  proc 0  proc 1 Cumul proc 0 proc 1 proc 2 proc 3 Cumul
saxpy 45.2 44.5 89.7 22.9 22.1 24.1 22.7 91.8 89.9
pmv 24.1 24.1 48.2 11.0 11.1 10.9 10.6 43.5 53.2
prodscal  2.5  2.5  5.0 11.3 11.4 11.8 11.1 45.6 33.4
scdmb  2.5  2.5  5.0  1.7  1.7  1.9  1.7  7.0  6.2
gradconj  3.0  2.9  5.9  1.5  1.5  1.6  1.5  6.2  6.0


flechehaut

Conclusions

- les versions parallèles permettent d'obtenir des temps de retour plus courts que la version séquentielle du code avec des résultats qualitativement équivalents;
- le load-balancing est bon entre les différents processus même si le temps cumulé est parfois supérieur au temps de la même routine en séquentiel, notamment pour les versions OpenMP;
- La version MPI est en général plus performante car les données de chaque processus sont dans la mémoire locale, contrairement à la version OpenMP qui repose sur le partage (vision globale de données publique). Une version OpenMP basée sur les données locales est en cours de préparation afin de les comparer plus précisément.
- les mesures effectuées dépendent de l'état du système, de la charge de la machine et mais demeurent intéressantes pour les routines représentant une part significative du temps consommé.


flechehaut

Fichiers

On peut récupérer l'arborescence sous forme d'archive tar.gz .
Le répertoire Gradient contient les trois sous-répertoires MPI, OMP et SEQ (resp. version MPI, version OpenMP et version séquentielle).
Chacun de ses trois répertoires contient les répertoires suivants : src, bin et run (resp. code source, les binaires et les fichiers de résultats).
Dans le répertoire run se trouvent des sous-répertoires de la forme xp (x = 1, 2, 4) correspondant au nombre de processus. Ils contiennent les fichiers d'échantillonnage et les analyses qui en résultent. Ces fichiers ont servi à la réalisation des tableaux précédents.


flechehaut

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: