Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

90PARTAGES

5  0 
Le langage idéal pour programmer en tirant parti d’accélérateurs optimisés pour le parallélisme ?
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 erreur dans cette actualité ? Signalez-le nous !

Avatar de L33tige
Membre éprouvé https://www.developpez.com
Le 10/03/2020 à 9:36
TornadoVM ne supporte pas les objets (sauf pour les cas triviaux), la récursion, l’allocation de mémoire dynamique ou les exceptions
Ça valait le coup d'utiliser java du coup.

Java Card supporte néanmoins les objets et les exceptions non ?
5  0 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 10/03/2020 à 10:17
En effet, faire du Java non idiomatique, j'ai déjà donné avec des projet J2ME absolument infâmes pour satisfaire les contraintes, là ça a l'air encore pire. C'est complètement idiot.

Autant faire du C, ou du Rust si on veut un langage plus moderne et plus sur.
3  0 
Avatar de wax78
Modérateur https://www.developpez.com
Le 10/03/2020 à 15:23
Tiens quelqu'un a-t-il déjà essayer ceci : http://aparapi.com/introduction/gett...g-started.html ?
0  0