Exo : un langage pour écrire du code hautes performances sur des accélérateurs matériels

Par:
fredericmazue

mer, 13/07/2022 - 11:59

A lire sur le site du MIT. Des scientifiques du Laboratoire d'informatique et d'intelligence artificielle du MIT (CSAIL) ont créé un nouveau langage de programmation appelé "Exo"

Lors de la programmation d'un accélérateur - un processus dans lequel les applications déchargent certaines tâches sur le matériel du système, en particulier pour accélérer cette tâche -, vous devez créer un tout nouveau support logiciel. Les accélérateurs matériels peuvent exécuter certaines tâches plus rapidement que les processeurs, mais ils ne peuvent pas être utilisés tels quels. Le logiciel doit utiliser efficacement les instructions des accélérateurs pour le rendre compatible avec l'ensemble du système d'application. Cela se traduit par beaucoup de travail d'ingénierie qui devrait ensuite être maintenu pour une nouvelle puce sur laquelle vous compilez du code, avec n'importe quel langage de programmation. 

D'où EXO qui  aide les ingénieurs de performance de bas niveau à transformer des programmes très simples qui spécifient ce qu'ils veulent calculer, en programmes très complexes qui font la même chose que la spécification, mais beaucoup, beaucoup plus rapidement en utilisant ces puces d'accélération spéciales. Les ingénieurs, par exemple, peuvent utiliser Exo pour transformer une simple multiplication matricielle en un programme plus complexe, qui exécute des ordres de grandeur plus rapidement en utilisant ces accélérateurs spéciaux.

Contrairement à d'autres langages de programmation et compilateurs, Exo est construit autour d'un concept appelé "Exocompilation". Avec Exocompilation, l'ingénieur performance est de retour aux commandes. La responsabilité du choix des optimisations à appliquer, du moment et de l'ordre est externalisée du compilateur vers l'ingénieur des performances. 

Le langage Exo est un compilateur qui est paramétré sur le matériel qu'il cible ; le même compilateur peut s'adapter à de nombreux accélérateurs matériels différents, explique Adrian Sampson, professeur adjoint au Département d'informatique de l'Université Cornell.  Au lieu d'écrire un tas de code C++ désordonné à compiler pour un nouvel accélérateur, Exo vous offre une manière abstraite et uniforme d'écrire la « forme » du matériel que vous souhaitez cibler.