MENU

Nouveau language de programmation pour accélérateurs hardware

Nouveau language de programmation pour accélérateurs hardware

Technologies |
Par A Delapalisse



Appelé « Exo », le langage est conçu pour aider les ingénieurs « performances » à 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 un accélérateur matériel  –  composant spécialisé exécutant certaines tâches des dizaines de fois plus rapidement que les processeurs. De tels composants 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, ce qui se traduit par un travail d’ingénierie important qui devrait ensuite faire l’objet de maintenance pour une nouvelle puce pour laquelle l’tilisateur compile le code, quel que soit le langage de programmation.

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, doctorante en génie électrique et informatique et affiliée à CSAIL, qui est l’auteur principal d’un nouvel article sur Exo. « C’est très bien pour la plupart des programmeurs, mais pour les ingénieurs performances, le compilateur gêne le travail aussi souvent qu’il aide. 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 une efficacité de 45 % au lieu de 90 %.

Flex Logix associe son accélérateur d’inférence IA avec une puce 4 Go à large bande de Winbond

Avec Exocompilation, selon les chercheurs, l’ingénieur « performances » reprend le contrôle. La responsabilité du choix des optimisations à appliquer, du moment et de l’ordre est externalisée du compilateur vers l’ingénieur « 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 « 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 offre une manière abstraite et uniforme d’écrire la « forme » du matériel que vous souhaitez cibler. Ensuite, vous pouvez réutiliser le compilateur Exo existant pour vous 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 », déclare Sampson. « 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 tester et expédier plus d’idées. L’industrie pourrait rompre sa dépendance à l’égard 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. 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 réaliser 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. Cependant, ces nouvelles puces – dont la conception nécessite des centaines d’ingénieurs – sont limitées par la disponibilité et la performance de ces bibliothèques de logiciels HPC.

Tout savoir sur RISC-V

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é – c’est exactement ce qu’Exo aide à éviter, selon les chercheurs.

Un autre élément clé d’Exocompilation est que les ingénieurs « performances » 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 « performances ».

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

Selon les chercheurs, 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. Pour en savoir plus, consultez « Exocompilation for productive programming of hardware accelerators. »

Si vous avez apprécié cet article, vous aimerez les suivants : ne les manquez pas en vous abonnant à :    ECI sur Google News

Partager:

Articles liés
10s