
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 ?


