Le Dr Juan Fumero Alfonso de l’université de Manchester a récemment fait une présentation au QCon de Londres sur TornadoVM, un plug-in pour OpenJDK et GraalVM qui fait tourner Java sur du matériel hétérogène comprenant des unités de traitement graphique (GPU) et des circuits logiques programmables (FPGA ou Field-Programmable Gate Array). Des démonstrations ont montré que le code est accéléré des centaines de fois lorsqu’il fonctionne sur un GPU par rapport à un CPU. Mais Java peut-il être vraiment considéré comme un langage de haut niveau adapté à la programmation sur GPU, sachant que Java est un langage de programmation général et que les GPU ne sont pas des adaptés à un usage général ;?
Les GPU et les FPGA peuvent offrir une amélioration de la vitesse de 2 à 3 fois supérieure pour une charge de travail hautement parallèle. Mais ces améliorations de vitesse ont été difficiles à obtenir, car la programmation nécessite l’utilisation de langages de bas niveau tels que OpenCL et VHDL : et c’est là tout l’intérêt de TornadoVM ;! Ce dernier rend l’accélération accessible aux programmeurs utilisant Java et Node.js, et des annotations sont utilisées pour marquer les blocs de code pouvant être traités en parallèle comme un indice pour le compilateur.
TornadoVM est compatible avec les processeurs multicœurs, les GPU de NVIDIA, AMD et Intel, ainsi que les FPGA d’Intel. Le choix de l’accélérateur matériel est transmis à TornadoVM en paramètre, et le Dr Fumero a fait une démonstration de TornadoVM avec du code fonctionnant sur un CPU, un GPU Intel intégré et un GPU NVIDIA présent sur son ordinateur portable. TornadoVM permet également la migration de tâches en direct entre différents types de matériel, ce qui a également été démontré. Les Tensor Processing Units (TPU) ne sont pas encore supportées, mais le Dr Fumero a déclaré qu’il serait simple d’ajouter un backend supplémentaire à TornadoVM tant que le support OpenCL est présent. L’équipe en charge du projet travaille actuellement sur l’ajout du support de la technologie Parallel Thread Execution (PTX) de NVIDIA.
D’après l’équipe en charge de développement du projet, TornadoVM n’est pas encore prêt pour une exploitation à grande échelle, car le produit n’est pas encore finalisé. Cependant, ils précisent que ce produit a déjà été utilisé par la société Exus pour accélérer la formation des modèles d’apprentissage machine (Machine Learning) travaillant sur des données relatives aux soins de santé. Néanmoins, en raison de limitations dans le modèle de programmation sous-jacent, TornadoVM ne supporte pas les objets (sauf pour les cas triviaux), la récursion, l’allocation de mémoire dynamique ou les exceptions (un nouveau JavaCard ;?).
Le Dr Juan Fumero Alfonso n’a malheureusement pas précisé si TornadoVM se rapprochait plus d’un outil permettant de lancer une JVM (machine virtuelle Java) sur un GPU ou d’un outil (compilateur, par exemple) permettant la programmation de certaines tâches à l’aide d’un sous-ensemble Java restreint limité aux bibliothèques spécialisées sur un GPU ou un FGPA.
Source : Démos publiées sur Github, Slide (PDF)
Et vous ?
Que pensez-vous du projet TornadoVM ?
Java peut-il être considéré comme un langage de haut niveau adapté à la programmation sur GPU ? Pourquoi, selon vous ?
Pensez-vous que le problème, s’il existe, vienne du langage en lui-même ou plutôt des outils mis à disposition pour l’exploiter ?
Une équipe de chercheurs présentent TornadoVM, un plug-in pour OpenJDK et GraalVM qui permet de faire tourner Java sur du matériel hétérogène
Comprenant des GPU et des FPGA
Une équipe de chercheurs présentent TornadoVM, un plug-in pour OpenJDK et GraalVM qui permet de faire tourner Java sur du matériel hétérogène
Comprenant des GPU et des FPGA
Le , par Christian Olivier
33 % | ||
33 % | ||
0 % | ||
0 % | ||
0 % | ||
0 % | ||
33 % |
Une erreur dans cette actualité ? Signalez-nous-la !