Travaux réalisés dans le cadre du projet CALMIP :
Les durées de calcul nécessaires pour la première version du code étaient un élément
très pénalisant. Ainsi, la modélisation de la décharge pour un espace inter-électrode de 3mm
n’était pas envisageable (en dessous de 3mm il est très difficile d’avoir un régime stable de
streamer). En effet, la durée de calcul s’estimait à trois semaines pour que le streamer se
forme et se propage de la pointe jusqu’au plan (sans la phase de relaxation) ; la durée du
phénomène simulé était de 3ns, soit 1 semaine par nanoseconde. De plus, les courbes de
courant (expérimentales) de la décharge montraient des durées de phénomène de l’ordre de
cent nanosecondes (voir figure 5). Donc, la résolution du problème de durée de calcul
devenait primordiale. Face à cette difficulté, nous avons fait appel aux services du Centre
Interuniversitaire de Calcul de Toulouse (CICT) qui héberge le Supercalculateur « Soleil » du
groupement scientifique CALMIP (CALcul en MIdi-Pyrénées). Ainsi, nous avons diminué la
durée de calcul, à tel point que le code est maintenant capable de simuler une décharge
électrique dans un espace inter-électrode de 4mm sur une durée de 120ns, en environ 10
jours ; cette opération a demandé plus de 9 mois de travail. Ce paragraphe résume les
principales étapes de l’optimisation.
Optimisation des durées de calcul en agissant sur
l’agencement des lignes de code :
Cette première optimisation met en adéquation le code avec la manière dont le
processeur traite les informations. Cela concerne l’harmonie du complexe compilateur -
processeur. Par exemple, pour un calcul impliquant une matrice à deux dimensions (comme le
potentiel V(i,j)), le compilateur FORTRAN ordonne les valeurs du tableau dans la mémoire
du processeur colonne après colonne (indice j) (il fixe j et fait varier i). Dans ce cas, entre
l’indice de ligne (i) et l’indice de colonne (j), c’est l’indice de ligne qui varie le plus vite.
Ainsi, dans l’exemple de la figure 1, c’est la configuration (a) qui sera la plus rapide. Pour
quantifier le gain de temps, on mesure la durée d’un échantillon de 10000 itérations de
l’algorithme SOR (pour la résolution de l’équation de Poisson) respectivement traité dans les
configurations (a) et (b). Ce test est d’abord effectué sur le Supercalculateur Soleil du CICT.
On voit sur le tableau 1 que la succession j → i est plus rapide que celle i → j, mais la
variation est seulement de 3,7% (soit 5 secondes pour 10000 itérations). En effet, les
processeurs Itanium du Supercalculateur sont dotés d’une architecture optimisée pour le
calcul sur les nombres flottants (c'est-à-dire nombre réels) et sont donc très performant à la
base. De plus, les processeurs Itanium sont accompagnés d’un compilateur Intel spécialement
développé pour son architecture (il existe plusieurs versions de compilateur qui sont plus ou
moins performantes pour un problème donné). Cependant, on observe, toujours sur le tableau
1, qu’en utilisant l’option de compilation de niveau trois, on diminue la durée de calcul des
10000 itérations de SOR de 39% par rapport à la configuration initiale (l’augmentation de
l’ordre des options de compilation conduit à des exécutables de taille mémoire plus
importante mais optimisés pour le calcul). Le même test effectué sur le PC Xéon du groupe
avec un compilateur FORTRAN GNU réduit la durée de calcul d’un facteur 2 (diminution de
50% au lieu de 3,7%).