Résumé
La recherche en physique des hautes énergies (HEP) nécessite d'énormes quantités de calcul et de stockage, ce qui impose de fortes contraintes sur la vitesse du code et l'utilisation des ressources. Pour répondre à ces exigences, un langage compilé à haute performance est généralement utilisé ; tandis que pour les physiciens, qui se concentrent sur l'application lors du développement du code, une meilleure productivité de la recherche plaide en faveur d'un langage de programmation de haut niveau. Une approche populaire consiste à combiner Python, utilisé pour l'interface de haut niveau, et C++, utilisé pour la partie du code à forte intensité de calcul. Une approche plus pratique et plus efficace consisterait à utiliser un langage qui offre à la fois une programmation de haut niveau et des performances élevées. Le langage de programmation Julia, développé au MIT spécialement pour permettre l'utilisation d'un langage unique dans les activités de recherche, a suivi cette voie. Dans cet article, l'applicabilité de l'utilisation du langage Julia pour la recherche HEP est étudiée, en couvrant les différents aspects qui sont importants pour le développement du code HEP : performance d'exécution, gestion de grands projets, interface avec le code hérité, informatique distribuée, formation et facilité de programmation. L'étude montre que la communauté HEP bénéficierait de l'adoption à grande échelle de ce langage de programmation. Les bibliothèques de base spécifiques à la HEP qui devraient être consolidées sont identifiées.
Conclusions
Le langage de programmation Julia a été présenté et comparé à C++ et Python. Afin d'étudier le potentiel de Julia pour le HEP, une liste d'exigences pour les applications HEP hors ligne et à déclenchement logiciel, couvrant à la fois le langage et son écosystème, a été établie. La compatibilité de Julia avec ces exigences a été étudiée. Julia et son écosystème répondent de manière impressionnante à toutes ces exigences. De plus, Julia apporte d'autres caractéristiques - système d'emballage intégré avec support de reproductibilité, distribution multiple et différenciation automatique - dont les applications HEP pourraient bénéficier.
La capacité de fournir, en même temps, facilité de programmation et performance fait de Julia le langage de programmation idéal pour l'analyse des données HEP et est plus généralement un atout important pour toutes les applications HEP considérées. Le paradigme de distribution multiple dynamique de Julia a prouvé qu'il facilitait la réutilisation du code. Cette propriété profitera grandement aux applications de la communauté HEP qui impliquent un code développé par de nombreuses personnes de différents groupes.
L'utilisation d'un langage de programmation unique et simple facilitera la formation. L'expérience a montré que les étudiants ayant une formation en C++ ou en Python apprennent le langage très rapidement et sont productifs après quelques jours. L'utilisation de Julia comme langage principal dans une collaboration permet aux étudiants travaillant sur des projets à court terme d'utiliser le langage de programmation commun, alors que dans le cas de C++, l'utilisation d'un langage plus simple comme Python est souvent nécessaire. Cela facilite la réutilisation du code développé dans ce contexte.
Nous avons mesuré les performances du langage dans le contexte de l'analyse des données HEP. Les mesures montrent d'excellentes performances d'exécution, compétitives par rapport à C++ : 11 % plus rapide pour l'exemple simple d'analyse d'événements LHC utilisé comme référence. Comparé à Python, il est non seulement plus rapide, mais aussi beaucoup moins sensible aux choix d'implémentation. L'implémentation Python s'est avérée être trois ordres de grandeur plus lente que Julia lorsque la boucle d'événements est exécutée en Python. Les techniques de vectorisation peuvent être utilisées pour déplacer la boucle d'événements en utilisant les bibliothèques compilées sous-jacentes, ce qui réduit l'écart de performance.
L'une des différences avec C++ et Python est que Julia est plus jeune et que sa communauté est plus petite. La communauté Julia est très collaborative et, malgré sa faible popularité, les informations relatives au développement avec ce langage sont faciles à trouver sur Internet. La croissance rapide de Julia dans le monde académique et industriel nous donne confiance dans la continuité à long terme du langage Julia, ce qui est essentiel pour les projets HEP, en raison de leur longue durée de vie.
Au vu de cette étude, la communauté HEP bénéficiera définitivement de l'adoption à grande échelle du langage de programmation Julia pour le développement de ses logiciels. La consolidation des bibliothèques de base spécifiques à la HEP sera essentielle pour faciliter cette adoption.
Partager