• Aucun résultat trouvé

Conclusion g´en´erale

En conclusion, nous présentons ici un bilan de nos travaux avant de proposer quelques perspectives.

Le travail présenté dans ce mémoire s’articule au tour de la problématique de la validation numérique des codes de calcul industriels utilisés dans le cadre des simulations numériques. Pourquoi une validation numérique des codes de simulation numérique industriels ? Telle est l’inter-rogation que l’on pourrait avoir à la lecture du titre de ce manuscrit. Lechapitre 1 apporte quelques éléments de réponse. Ce chapitre souligne l’importance de la simulation numérique pour des acteurs industriels comme EDF. En effet, "simuler" permet d’orienter et/ou de valider des décisions stratégiques des industriels. De plus, l’avènement du calcul haute performance a permis à la simulation numérique de prendre une nouvelle envergure. De nos jours, on est en mesure de simuler des phénomènes de plus en plus complexes en des temps records. A titre d’exemple, les codes de neutronique peuvent actuellement traiter un problème neutronique de 1011inconnues en 8 heures alors qu’en 2009 ce même type de calcul nécessitait 100000 heures pour traiter un cas de 1012inconnues.

Dans lechapitre 1, nous attirons également l’attention du lecteur sur les différentes approxi-mations faites durant le processus de simulation numérique. Il apparaît que plusieurs étapes séparent l’étude du phénomène physique de l’exécution du code sur ordinateur. Chacune de ces étapes peut être source d’erreurs. Dans cette thèse, nous nous intéressons particulièrement aux erreurs dues à la résolution numérique en arithmétique flottante IEEE 754, arithmétique que nous avons présentée dans lechapitre 2. En effet, le calcul sur les nombres flottants peut facilement engendrer des pertes de précision. Ces pertes sont encore plus importantes dès qu’il s’agit d’exécutions sur des architectures parallèles où l’on ne peut contrôler l’ordre des opé-rations. De fait, il est presque impossible d’avoir des résultats reproductibles dès lors qu’on

Chapitre 8. Conclusion générale

travaille sur des architectures parallèles. Vu l’importance des décisions prises grâce aux simu-lations numériques, il importe de s’assurer de la qualité des résultats produits. Comment évaluer efficacement, dans un contexte industriel, la qualité des résultats d’un code parallèle de simulation nu-mérique sans pour autant détruire les performances de ce dernier ? Telle était notre interrogation au début de ce travail.

Nous définissons validation numérique d’un code par le processus visant à étudier sa fiabilité en termes de qualité numérique. Concrètement, cela consiste à considérer les effets de la pro-pagation d’erreurs d’arrondi sur la qualité des résultats d’un calcul. Un état de l’art des outils et méthodes de validation numérique a été présenté dans lechapitre 2. Nous avons alors ex-posé les besoins spécifiques aux acteurs industriels en termes de vérification numérique. Des travaux ont montrés que le logiciel de validation CADNA était adapté aux études de qualité dans un contexte industriel. La bibliothèque CADNA, que nous avons présenté auchapitre 3, permet de localiser précisément les résultats entachés d’erreurs d’arrondi. CADNA est assez facile à implémenter sur un code séquentiel écrit dans un seul langage (Fortran90, C/C++). Toutefois, implémenter CADNA dans un code industriel peut s’avérer un brin complexe, ce type de code faisant généralement appel à des bibliothèques externes (MPI, BLACS, BLAS, LA-PACK). Pour étudier complètement le comportement numérique d’un code avec CADNA, il est alors nécessaire de développer des extensions compatibles avec ces bibliothèques. Cela dit, l’implémentation de ces diverses extensions doit répondre à un critère de performance puisque la complexité algorithmique et la taille des logiciels de calcul numérique impliquent d’impor-tants temps d’exécution. Il est donc important de chercher à minimiser l’impact de CADNA sur les performances de ces bibliothèques. Au cours ce de travail, nous nous sommes intéressé au standard de communication MPI et aux routines d’algèbre linéaire BLAS.

Lechapitre 4a été consacré à l’implémentation d’une extension de CADNA pour le stan-dard de communication MPI. Cette bibliothèque est utilisée dans les codes parallèles pour les échanges de données entre processus. Nous avons implémenté une extension CADNA_MPI qui permet l’échange et la réduction des données de types stochastiques. L’utilisation des pad-ding a permis d’obtenir un rapport de 4 entre la taille des types stochastiques et ceux des types conventionnels (float, double). Ce rapport permet d’avoir les données stochastiques alignées en mémoire et donc de meilleures performances pour les temps de communication. CADNA_MPI permet également d’avoir un diagnostic complet des instabilités détectées sur chaque proces-sus. CADNA_MPI est complètement fonctionnel et a été testé sur divers cas. Il a notamment été utilisé pour valider le schéma de communication du code Telemac-3D (voirchapitre 6). Il a également contribué à la mise en place de l’approche "xD+P" utilisée pour estimer la qualité numérique des résultats de Telemac-3D [Moulinec et al., 2011a].

Nous nous sommes ensuite posé la question de l’implémentation de CADNA dans les bibliothèques de calcul scientifique. En ce sens, nous avons développé une routine Dgemm-Cadna qui implémente un produit matriciel basé sur l’arithmétique stochastique discrète. Cette routine est présentée au chapitre 5. Nous montrons que l’implémentation directe (naïve) de CADNA dans la routine DGEMM des BLAS, introduit un important surcoût (supérieur à 1000 pour une matrice carré de taille 1024). Ce surcoût vient de l’utilisation de la méthode CESTAC, qui effectue chaque opération arithmétique trois fois avec à chaque opération un mode d’ar-rondi choisi aléatoirement. Il faut ajouter à cette première explication le fait que l’implémenta-tion basique de la foncl’implémenta-tion DGEMM se fait avec trois boucles et sans aucune optimisal’implémenta-tion de l’utilisation de la mémoire. Nous présentons, à travers notre routine DgemmCADNA, une mé-thodologie pour réduire ce surcoût. Nous montrons qu’une meilleure utilisation des données avec un mode de stockage et un algorithme adapté à l’architecture matérielle, permet d’obte-nir de biens meilleures performances. Outres ces apports d’ordre algorithmique, nous avons

également introduit une nouvelle implémentation de la méthode CESTAC. L’objectif de cette implémentation est de faire le minimum de changement d’arrondi tout en respectant les hypo-thèses stochastiques de la méthode CESTAC. Cette routine a permis de réduire ce surcoût d’un facteur 1100 à un facteur 35 par rapport aux versions de BLAS optimisées (GotoBlas [Goto et van de Geijn, 2008a]).

Enfin, nous avons travaillé sur la validation numérique des codes de calcul industriels. Notre interrogation était de savoir comment utiliser efficacement l’outil CADNA dans un contexte industriel, où l’aspect coût est un critère prépondérant. Nous nous sommes confronté au code Telemac-2D, code de mécanique des fluides dédié aux écoulements à surface libre ( cha-pitre 6). Une dernière partie de notre travail à été consacrée à l’étude de la qualité numérique du code Telemac-2D. Ce code, développé par le département LNHE d’EDF R&D, permet de simuler les écoulements à surface libre en résolvant les équations de Saint-Venant discrétisées avec la méthode des éléments finis [Hervouet, 2007]. L’objectif de ce travail est de détecter les sources potentielles d’instabilités numériques dans le code Telemac-2D et de proposer des so-lutions pour minimiser l’impact de la propagation des erreurs arrondi. Le débogage numérique à l’aide de CADNA a montré que plus de 30% des instabilités détectées apparaissent dans les produits scalaires liés au calcul du résidu dans les méthodes itératives et dans les résolutions de systèmes linéaires creux. Nous montrons que l’utilisation des algorithmes de produit sca-laire compensé [Ogita et al., 2005] permet d’améliorer la précision des résultats sans toutefois dégrader les performances du code. Sur la base de cette expérience, nous avons mis en place une procédure de validation numérique des codes de calcul industriels dans lechapitre 7.

A travers les pages de ce mémoire, nous avons mis en exergue l’importance de la vérifi-cation numérique, en particulier pour les codes de simulation industriel. Nous faisons aussi remarquer qu’il est important de trouver l’outil adéquat qui réponde aux besoins de l’indus-triel pour une étude de qualité numérique efficace. Notre expérience de validation numérique chez EDF, nous a alors permis de proposer des idées pour la mise en place d’une plate-forme (efficace et performante) de vérification numérique industrielle basée sur le logiciel CADNA (chapitre 7). Intuitivement, le développement de cette plate-forme constitue la suite naturelle des travaux présentés dans ce mémoire. Nous dégageons ci-dessous trois principaux axes de travail pour y parvenir :

Sur les bibliothèques de communication. Il serait intéressant de travailler sur le second stan-dard de communication : BLACS. Nous avons commencé à travailler sur cette problématique. Nous présentons une première implémentation en annexe de ce document. Outre les différents standard de communication, il serait pertinent d’étudier la possibilité de coupler CADNA et le paradigme de programmation parallèle OpenMP. L’objectif à terme serait d’avoir une version de CADNA compatible avec tous les outils de programmation parallèle.

Sur les bibliothèques de calcul scientifique. Notre travail a été consacré à la performance de la routine DgemmCADNA. La performance peut être améliorer avec l’utilisation des ins-tructions vectoriels. Un premier travail dans ce sens a montré qu’il fallait modifier les opé-rations mathématiques directement dans CADNA. En effet, une utilisation directe des unités vectorielles est limitée par la non homogénéité des types stochastiques. Il faudrait également s’intéresser à la détection des instabilités numériques et particulièrement aux multiplications instables. Il faut travailler à trouver une méthode de détection qui limite le surcoût qui en

Chapitre 8. Conclusion générale

découlerait. L’objectif à terme serait d’étendre nos travaux et la méthodologie mise en œuvre aux autres routines BLAS et aux principales bibliothèques d’algèbre linéaire (LAPACK, ScaLA-PACK).

Sur la validation des codes industriels. A partir de notre expérience, nous avons mis en place une procédure de validation numérique pour les codes industriels. Les travaux futurs seront consacrés à la mise en place des idées exposées auchapitre 7. On pourra ainsi développer un outil de développement intégré complet (IDE) basé sur l’outil CADNA. Il serait alors possible d’automatiser l’intégration de CADNA dans les codes industriels et et l’analyse de la qualité numérique de ces derniers.