"Python est à l'informatique scientifique ce que les mathématiques sont à la physique" : provocateur comme comparaison, mais nous le montrerons dans deux exemples issus du calcul scientifique : Python comme langage transformant des noeuds en architecture de stockage distribué, Python comme outil d'investigation pour explorer les limites des matériels d'aujourd'hui, notamment les GPU faces au CPU.
L'informatique scientifique doit faire face à deux enjeux majeurs dans un contexte paradoxal : l'explosion des volumes de données à traiter d'une part, et la multiplication des unités de traitement permettant de les traiter d'autre part. Le paradoxe, c'est que les programmes associés ont souvent plusieurs dizaines d'années, sont éprouvés, s'enchaînent les uns les autres mais que les composants matériels pour les exécuter n'ont, eux, une durée de vie n'excédant pas quelques années ! Comment rapidement, évaluer la performance de ces nouvelles infrastructures pour ensuite mettre à disposition ces vieux outils de manière efficace ? Notre approche s'inspire de ce que l'aéronautique a développé depuis un siècle : l'exploration de "domaines de vol", ou la délimitation du "là où ça marche". C'est là, dans le rapide prototypage de tests d'évaluation que Python s'avère très précieux et nous illustrerons son exploitation sur deux cas particuliers. Le premier concerne le stockage : pour que le stockage soit efficace, il faut désormais le distribuer. Nous verrons comment, en quelques lignes, Python, utilisé comme "liant", permet de déployer une infrastructure de stockage distribué en quelques lignes puis d'en évaluer la performance, et ce en ne s'appuyant que sur des composants externes : Python révèle sa puissance de langage de script. Le second concerne l'exploitation des circuits graphiques, ces fameux GPU, comme accélérateurs de calcul : nous montrerons comment Python peut permettre la programmation expresse de ces composants, leur comparaison avec les processeurs traditionnels mais surtout dans quelles conditions leur usage est optimal. Ces deux cas d'usage révèleront chacun leur lot de surprises. Notre conclusion offrira un constat nuancé mais finalement rassurant : sans une connaissance approfondie de son infrastructure matérielle, sans une maîtrise parfaite de l'environnement logiciel et son optimisation application par application, il est bien difficile de les exploiter efficacement. En résumé, "sans la maîtrise, la puissance n'est rien".