Reproducibility and Performance: Why Choose?
Reproductibilité et performance : pourquoi choisir ?
Abstract
Research processes often rely on high-performance computing (HPC), but HPC is often seen as antithetical to "reproducibility": one would have to choose between software that achieves high performance, and software that can be deployed in a reproducible fashion. However, by giving up on reproducibility we would give up on verifiability, a foundation of the scientific process. How can we conciliate performance and reproducibility? This article looks at two performance-critical aspects in HPC: message passing (MPI) and CPU micro-architecture tuning. Engineering work that has gone into performance portability has already proved fruitful, but some areas remain unaddressed when it comes to CPU tuning. We propose package multi-versioning, a technique developed for GNU Guix, a tool for reproducible software deployment, and show that it allows us to implement CPU tuning without compromising on reproducibility and provenance tracking.
Les travaux de recherche dépendent souvent de calcul intensif (ou HPC, pour « high-performance computing »), mais celui-ci est souvent perçu comme incompatible avec la « reproductibilité » : il faudrait choisir entre un logiciel performant et un logiciel qui puisse être déployé de manière reproductible. Mais en renonçant à la reproductibilité, on perdrait la capacité de vérifier les résultats, qui est pourtant un fondement de la démarche scientifique. Comment peut-on concilier performance et reproductibilité ? Cet article s’intéresse à deux aspects critiques de la performance en HPC : le passage de messages (MPI) et les micro-architectures de processeurs. Le travail d’ingénierie pour atteindre la portabilité des performances a été fructueux, mais certaines zones d’ombres persistent lorsqu’il s’agit de produire du code pour un processeur spécifique. Nous proposons le multi-versionage de paquets, une technique développée pour GNU Guix, un outil de déploiement logiciel reproductible, et montrons que cela permet de produire du code optimisé pour un CPU sans renoncer à la reproductibilité et à la traçabilité.
Origin | Files produced by the author(s) |
---|