InKS, un modèle de programmation pour la séparation de l’algorithme et des optimisations dans les codes HPC

15 octobre 2019 par Mathieu Lobet
Le modèle de programmation InKS vise à améliorer la lisibilité, la portabilité et la maintenabilité des codes de simulation tout en accroissant la productivité des développeurs de telles applications.

Dans le cadre de sa thèse à la Maison de la Simulation sous la direction de M. Mehrenberger et M. Bastoul et sous l'encadrement de Julien Bigot (Maison de la Simulation) et Olivier Aumage (INRIA), Ksander EJJAAOUANI a développé un nouveau modèle de programmation du nom de InKS.

Le modèle de programmation InKS vise à améliorer la lisibilité, la portabilité et la maintenabilité des codes de simulation tout en accroissant la productivité des développeurs de telles applications. Pour atteindre ces objectifs, InKS propose deux langages, chacun dédié à une partie de l’application. Le premier, InKSPIA, permet d’exprimer les aspects algorithmiques d’un code de simulation scientifique tout en laissant les choix d’optimisation de côté. Il s’agit de décrire les fondations de la simulation : son algorithme. Le second langage, InKSPSO, permet aux spécialistes de l’optimisation de réutiliser les informations contenues dans l’algorithme pour exprimer une large variété de choix d’optimisation.  Le modèle permet d’écrire de nombreuses versions des optimisations, typiquement une par architecture, à partir d’un unique algorithme. En basant les différentes versions d’un programme sur sa partie invariante, l’algorithme, le modèle InKS limite la réécriture du code, boostant la productivité des développeurs. Son fonctionnement est simplifié dans le schéma ci-dessous.

Présentation du modèle de programmation InKS

Suite à la proposition du modèle InKS et de son implémentation, nous avons évalué le modèle au travers de l'implémentation de simulations de plasma: le système Vlasov-Poisson 6D. Cette évaluation a permis de mettre en évidence certaines bonnes propriétés du modèle, notamment en matière de séparation des aspects, mais aussi à montrer sa généralité et ses performances. Pour ce faire, nous avons comparé l'efficacité de deux implémentations du système Vlasov-Poisson 6D, écrite sur InKS ou Fortran. Pour les optimisations les plus importantes, le nombre de lignes dans les deux cas est similaire. Cependant, la présence de l'algorithme permet d'ordonnancer automatiquement, en une simple ligne, un large ensemble de calcul, verbeux et potentiellement sujet aux erreurs. Ainsi, dans les parties non critiques du code, InKSPSO peut résumer une partie du programme de manière concise, permettant de se concentrer sur les parties de calcul intensif. Par ailleurs, en limitant la réécriture du code aux seules optimisations, InKS permet de tester plusieurs stratégies d'optimisations afin d'identifier la plus adaptée à une architecture donnée. En comparaison, dans ces situations, les applications traditionnelles requièrent la réécriture d'une plus grande partie du code, limitant le temps consacré à la recherche des meilleures stratégies d'optimisation.

Les résultats obtenus avec InKS ont fait l'objet de plusieurs publications:

Le projet est par ailleurs hébergé librement sur GitHub.

Ksander EJJAAOUANI présentera ses travaux de thèses le 25 octobre prochain et notamment ses développements au sein de InkS.