Réduire l'impact environnemental du calcul scientifique par l'optimisation des codes et la formation

Résultat scientifique Automatique

La consommation d'énergie du calcul scientifique, qui peut mobiliser d'importantes ressources informatiques, est un véritable enjeu environnemental. Une équipe menée par le Laboratoire des écoulements géophysique et industriels a montré comment l'utilisation de technologies d'accélération automatique des codes réduit sensiblement la facture énergétique de l'exécution d'un programme. Elle préconise de recourir à ce type d'outils, et de mieux former les scientifiques et ingénieurs à l'optimisation des codes.

Le calcul sur ordinateur est devenu un outil de base pour la recherche et l'ingénierie. Mais avec l'utilisation croissante des moyens informatiques, c'est aussi la consommation énergétique de ces systèmes qui s'envole. Mesurer la consommation d'énergie de l'exécution d'un programme, et son équivalent en production de CO2, permet d'évaluer son impact sur l'évolution du climat. C'est pourquoi des utilisateurs du calcul scientifique s'interrogent sur la manière de réduire la consommation énergétique d'un programme.

Dans une lettre publiée dans la revue Nature Astronomy, Pierre Augier, chercheur au Laboratoire des écoulements géophysique et industriels (LEGI, CNRS/Université Grenoble Alpes), propose, avec des collègues de l'université de Düsseldorf et de l'université de Stockholm, une voie à suivre pour réduire l'impact environnemental des calculs.

Les propositions de cette équipe internationale sont en fait une réponse à un article publié récemment, dans la même revue, sur l'impact environnemental du calcul en astrophysique, et qui recommandait d'éviter de programmer en Python.  Or, ce langage de programmation est très utilisé en calcul scientifique, car il est simple d'accès, accroît la productivité des programmeurs, et facilite la maintenance et l'évolution des codes informatiques. Les auteurs de la lettre pensent donc qu'abandonner Python serait contre-productif. Pour soutenir leur thèse, ils ont montré expérimentalement que des logiciels en Python pouvaient être aussi, voire plus efficace sur le plan énergétique que des programmes en Fortran ou C++.

L'équipe s'est focalisé sur un algorithme de résolution du problème dit «à N corps»1 , sur lequel les précédents auteurs se sont basés pour proposer d'éviter la programmation en Python: leur programme en Python s'avérait 50 fois plus lent que le code en C++...  Pierre Augier et ses collègues ont codé le même algorithme en Python, mais cette fois en optimisant le code avec des outils dotés des dernières évolutions disponibles sur le marché (compilateurs et  interpréteurs2 ).

La mesure de l'énergie consommée (convertie en production de CO2) à chaque exécution de programmes a été comparée avec celle des programmes en Fortran et C++. Résultats: la plupart des codes Python testés s'avèrent plus efficaces sur le plan énergétique que leurs homologues. Les auteurs insistent sur le fait que les codes Fortran et C++ pourraient eux-mêmes être optimisés pour une meilleure performance énergétique, et que la clé n'est pas dans le choix du langage de programmation, mais plutôt dans l'effort d'optimisation.

Ils concluent que la réduction de l'impact environnemental du calcul scientifique passe avant tout par une meilleure connaissance des outils de programmation, et par la formation des chercheurs et ingénieurs aux méthodes d'optimisation des codes informatiques. Ils recommandent également le recours aux ressources informatiques partagées, qui sont elles-mêmes optimisées en termes de consommation énergétique.

Graphique figurant la production de CO2 (en kg) en fonction du temps de résolution du problème (en jours).  Quatre implémentations sur cinq du programme en Python (marqueurs en rouge) sont plus efficaces en termes énergétiques que les implémentations en Fortran et C++ qui ont servi de comparaison.
Graphique figurant la production de CO2 (en kg) en fonction du temps de résolution du problème (en jours).  Quatre implémentations sur cinq du programme en Python (marqueurs en rouge) sont plus efficaces en termes énergétiques que les implémentations en Fortran et C++ qui ont servi de comparaison.

Références
Reducing the ecological impact of computing through education and Python compilers.
Augier, P., Bolz-Tereick, C.F., Guelton, S. et al.
Nature Astronomy, avril 2021

https://doi.org/10.1038/s41550-021-01342-y   

  • 1Le problème à N corps consiste à résoudre les équations du mouvement de N corps en interaction, connaissant leurs masses ainsi que leurs positions et vitesses initiales.
  • 2Un interpréteur se distingue d’un compilateur par le fait que, pour exécuter un programme, les opérations d’analyse et de traductions sont réalisées à chaque exécution du programme (par un interpréteur) plutôt qu’une fois pour toutes (par un compilateur).

Contact

Pierre Augier
Chargé de recherche CNRS, Laboratoire des écoulements géophysique et industriels (LEGI, CNRS/Université Grenoble Alpes)
Communication CNRS Ingénierie