Un nouveau langage de programmation pour les accélérateurs matériels

puces informatiques

Les chercheurs ont créé Exo, qui aide les ingénieurs de performance à transformer des programmes 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. Crédit : Pixabay/CC0 Domaine public

La loi de Moore a besoin d’un câlin. Les jours de bourrage de transistors sur de petites puces informatiques en silicium sont comptés, et leurs radeaux de sauvetage – des accélérateurs matériels – ont un prix.

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.

Maintenant, des scientifiques du Laboratoire d’informatique et d’intelligence artificielle du MIT (CSAIL) ont créé un nouveau langage de programmation appelé “Exo” pour écrire du code haute performance sur des accélérateurs matériels. Exo 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”. “Traditionnellement, de nombreuses recherches se sont concentrées sur l’automatisation du processus d’optimisation pour le matériel spécifique”, explique Yuka Ikarashi, titulaire d’un doctorat. étudiant en génie électrique et en informatique et affilié à CSAIL qui est l’un des principaux auteurs d’un nouvel article sur Exo. “C’est très bien pour la plupart des programmeurs, mais pour les ingénieurs de performance, le compilateur gêne aussi souvent que nécessaire. Parce que les optimisations du compilateur sont automatiques, il n’y a pas de bon moyen de le réparer quand il fait la mauvaise chose et vous donne 45 % efficacité au lieu de 90 %. »

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. De cette façon, ils n’ont pas à perdre de temps à combattre le compilateur d’une part, ou à tout faire manuellement d’autre part. En même temps, Exo prend la responsabilité de s’assurer que toutes ces optimisations sont correctes. Par conséquent, l’ingénieur des performances peut passer son temps à améliorer les performances, plutôt qu’à déboguer le code complexe et optimisé.

“Le langage Exo est un compilateur 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 donne un moyen abstrait et uniforme d’écrire la” forme “du matériel que vous souhaitez cibler. Ensuite, vous pouvez réutiliser le compilateur Exo existant pour adapter à cette nouvelle description au lieu d’écrire quelque chose d’entièrement nouveau à partir de zéro. L’impact potentiel d’un travail comme celui-ci est énorme : si les innovateurs en matériel peuvent cesser de s’inquiéter du coût de développement de nouveaux compilateurs pour chaque nouvelle idée de matériel, ils peuvent essayer et expédier plus d’idées . L’industrie pourrait rompre sa dépendance vis-à-vis du matériel hérité qui ne réussit que grâce au verrouillage de l’écosystème et malgré son inefficacité.”

Les puces informatiques les plus performantes fabriquées aujourd’hui, telles que le TPU de Google, le Neural Engine d’Apple ou les Tensor Cores de NVIDIA, alimentent les applications de calcul scientifique et d’apprentissage automatique en accélérant ce que l’on appelle les “sous-programmes clés”, les noyaux ou le calcul haute performance (HPC ) sous-programmes.

Mis à part le jargon maladroit, les programmes sont essentiels. Par exemple, quelque chose appelé Basic Linear Algebra Subroutines (BLAS) est une “bibliothèque” ou une collection de tels sous-programmes, qui sont dédiés aux calculs d’algèbre linéaire et permettent de nombreuses tâches d’apprentissage automatique comme les réseaux de neurones, les prévisions météorologiques, le cloud computing et la découverte de médicaments. . (BLAS est si important qu’il a remporté le prix Turing de Jack Dongarra en 2021.) Cependant, ces nouvelles puces, dont la conception nécessite des centaines d’ingénieurs, ne sont aussi bonnes que le permettent ces bibliothèques logicielles HPC.

Actuellement, cependant, ce type d’optimisation des performances est toujours effectué à la main pour s’assurer que chaque dernier cycle de calcul sur ces puces est utilisé. Les sous-programmes HPC fonctionnent régulièrement à plus de 90 % de l’efficacité théorique maximale, et les ingénieurs en matériel se donnent beaucoup de mal pour ajouter 5 ou 10 % supplémentaires de vitesse à ces pics théoriques. Ainsi, si le logiciel n’est pas optimisé de manière agressive, tout ce travail acharné est gaspillé, ce qui est exactement ce qu’Exo permet d’éviter.

Un autre élément clé d’Exocompilation est que les ingénieurs de performance peuvent décrire les nouvelles puces pour lesquelles ils souhaitent optimiser, sans avoir à modifier le compilateur. Traditionnellement, la définition de l’interface matérielle est maintenue par les développeurs du compilateur, mais avec la plupart de ces nouvelles puces accélératrices, l’interface matérielle est propriétaire. Les entreprises doivent conserver leur propre copie (fork) d’un compilateur traditionnel complet, modifié pour prendre en charge leur puce particulière. Cela nécessite l’embauche d’équipes de développeurs de compilateurs en plus des ingénieurs de performance.

“Dans Exo, nous externalisons plutôt la définition des backends spécifiques au matériel de l’exocompilateur. Cela nous donne une meilleure séparation entre Exo – qui est un projet open source – et le code spécifique au matériel – qui est souvent propriétaire. Nous avons montré que nous pouvons utiliser Exo pour écrire rapidement du code aussi performant que la bibliothèque Math Kernel d’Intel optimisée à la main. Nous travaillons activement avec des ingénieurs et des chercheurs de plusieurs entreprises », déclare Gilbert Bernstein, postdoctorant à l’Université de Californie à Berkeley.

L’avenir d’Exo implique d’explorer un méta-langage d’ordonnancement plus productif et d’étendre sa sémantique pour prendre en charge des modèles de programmation parallèles afin de l’appliquer à encore plus d’accélérateurs, y compris les GPU.

Ikarashi et Bernstein ont rédigé l’article aux côtés d’Alex Reinking et Hasan Genc, ​​tous deux titulaires d’un doctorat. étudiants de l’UC Berkeley et du professeur adjoint du MIT, Jonathan Ragan-Kelley.


Développement du logiciel de base d’IA “Deep Learning Compiler”


Plus d’information:
Yuka Ikarashi et al, Exocompilation pour la programmation productive d’accélérateurs matériels, Actes de la 43e conférence internationale ACM SIGPLAN sur la conception et la mise en œuvre des langages de programmation (2022). DOI : 10.1145/3519939.3523446

Fourni par le Massachusetts Institute of Technology

Cette histoire est republiée avec l’aimable autorisation de MIT News (web.mit.edu/newsoffice/), un site populaire qui couvre l’actualité de la recherche, de l’innovation et de l’enseignement du MIT.

Citation: Un nouveau langage de programmation pour les accélérateurs matériels (11 juillet 2022) récupéré le 11 juillet 2022 sur https://techxplore.com/news/2022-07-language-hardware.html

Ce document est soumis au droit d’auteur. En dehors de toute utilisation loyale à des fins d’étude ou de recherche privée, aucune partie ne peut être reproduite sans l’autorisation écrite. Le contenu est fourni seulement pour information.