|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() Tarik Zakaria BenmerarCEO Inscription : juillet 2012 Messages : 78 ![]() |
Oracle et AMD veulent un Java boosté par le GPU
Une nouvelle proposition se greffe au projet Lambda de Java 8 Oracle et AMD lancent un gros chantier pour le langage Java. Un nouveau projet vise à booster les performances des applications Java en exploitant les avantages des GPU (processeurs graphiques), qu'ils soient intégrés ou non au CPU. Et pas seulement pour les rendus graphiques, le GPU est convoité pour l’exécution de certaines tâches de calcul. Cette proposition a été conjointement communiquée ce lundi dans le mailing-list d'OpenJDK par John Coome, chef de groupe d'OpenJDK HotSpot, et par Gary Frost d'AMD. Le projet vise en fait à démontrer « les avantages en performance en déléguant certaines tâches de calcul Java au GPU. Nous proposons d'utiliser HotSpot JVM, ensuite nous nous concentrerons sur la génération de code, la garbage collection, et les exécutables », expliquent-ils dans le mail. En effet, HotSpot JVM comporte certains composants permettant l'analyse des performances du code pendant l'exécution. Toutefois, le temps de compilation, la consommation mémoire, et la qualité du code générée ne seront pas concernés par cette optimisation. Les développeurs veulent commencer le projet autour du projet Java 8 Lambda, mais s'attendent à faire face à de vrais « challenges » avec l'API Java. Ceci peut carrément aboutir à un nouveau langage ou à des extensions de la JVM et de bibliothèques qui nécessiteraient une standardisation à travers le JCP (Java Community Process, organisme coordinateur de l'évolution du langage). Une autre facette du projet consiste à fournir un guide aux développeurs de langages utilisant la JVM comme hôte (Scala, JRuby, JavaScript/Nashorn, etc.), sur la manière à suivre pour activer le support du GPU dans leurs langages. Il faut noter que ce projet a des objectifs en commun avec celui du compilateur RootBeer GPU récemment annoncé. Il existe une possibilité que les développeurs des deux projets travaillent en collaboration. Gary Frost confirme que AMD se prépare à engager ses ingénieurs comme commiters sur ce projet. Compilateur Rootbeer GPU sur GitHub Le projet Java LambdaSources : annonce sur le mailing-listEt vous ? Que pensez-vous de ce projet et de ses objectifs ?
|
|
|
10
|
|
|
#2 |
|
Expert Confirmé
![]() Baptiste ROUSSELDéveloppeur Temps réel Embarqué Inscription : janvier 2011 Messages : 1 294 ![]() |
C'est une bonne nouvelle je trouve. Java est en effet assez lent niveau affichage quand on utilise une librairie graphique.
C'est même un calvaire sur certains vieux PCs.
__________________
|
|
|
24
|
|
|
#3 |
|
Membre chevronné
![]() Claude Développeur .NET Inscription : juin 2007 Messages : 194 ![]() |
Je suis perplexe concernant leur projet. Si vraiment il faut améliorer les performances de Java, ne faudrait-il pas commencer par l'optimiser plutôt que de déporter le boulot sur les GPU ? Surtout si c'est pour faire des trucs dégueulasses pour contourner l'API Java
De plus, vu comment Java s'avère parfois lourd juste pour l'OS, si maintenant il doit envahir nos GPU ... J'espère qu'un tel projet a surtout pour objectif des applications spécifiques de calculs avancés ou autre, parceque si demain on doit le voir sur le PC de Mme Michou, ça va ramer dur. ![]() Je m'y connais pas énorme en Java, mais n'est-ce pas le but de JavaFX théoriquement ? |
|
|
14
|
|
|
#4 |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 51 ![]() |
Olivier Chafik a créé un projet opensource justement là dessus, il a fait une présentation à Devoxx France 2012. Ces projets visent notamment le calcul ils pourraient donc bien s'intégrer avec les plans d'Oracle sur les Lambda.
http://code.google.com/p/javacl/ http://code.google.com/p/scalacl/ http://www.parleys.com/#st=5&id=3292&sl=0
__________________
http://dutheil.brice.online.fr/blog/ |
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 565 ![]() |
Il faudrait relativiser un peu, Java n'est franchement pas un veau comme c'était peut être le cas il y a 15 ans. Quant à la lenteur d'affichage, ben c'est souvent un cliché qui vient d'un ancien Swing sans accélération matérielle.
Si vous regardez des benchmarks comparatifs, vous voyez que java est en fait largement décent même s'il n'égale clairement pas du C. Pour ce qui est de permettre le calcul sur GPU en java, c'est certainement bon à prendre et peut être que ça pourra dans certains cas éviter le recours aux DLL natives pour certains besoins. |
|
|
50
|
|
|
#6 |
|
Membre éprouvé
![]() Développeur Inscription : mars 2012 Messages : 373 ![]() |
Java est quand même vachement rapide sur Android avec Dalvik.
"Créer un nouveau langage" je n'en vois pas l'intérêt, ils n'ont qu'à étoffer les librairies. |
|
04
|
|
|
#7 | |
|
Membre chevronné
![]() Claude Développeur .NET Inscription : juin 2007 Messages : 194 ![]() |
Citation:
Java n'est qu'un langage, c'est la machine virtuelle qui fait la performance. Et à ce jeu-là, en effet, Dalvik est plus performante que la JVM. |
|
|
|
11
|
|
|
#8 |
|
Membre du Club
![]() Inscription : avril 2006 Messages : 51 ![]() |
Pas assez pour développer des jeux! J'ai eu des retours sur des problèmes de framerate, lorsque l'appli tourne sur Dalvik (donc Java)
Bien sur qu'il y a un intérêt, quand la théorie de la programmation objet n'était qu'un pattern, il fallait coder en C, puis ça a été intégré aux langages SmallTalk, C++, Java, etc. Scala, Kotlin, FANTOM, LINQ sont tous des essais pour intégrer de nouveaux patterns et paradigmes pour la prochaine génération de langage. Donc c'est une bonne chose si la JVM permet de créer plus facilement un langage adapté à un besoin. On pourrait par exemple avoir des fragments de code dans un langage adapté à OpenCL et qui pourraient interagir facilement avec du code Java.
__________________
http://dutheil.brice.online.fr/blog/ |
|
10
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Paul TOTHFreelance Inscription : novembre 2002 Messages : 4 405 ![]() |
"booster les performances" ? car il faut utiliser le GPU pour avoir du Java performant ? moi j'appelle ça une contre performance
__________________
Developpez.com: Mes articles, forum FlashPascal Entreprise: Execute SARL Produits : UPnP, RemoteOffice, FlashPascal Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5% |
|
44
|
|
|
#10 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur d'applications Inscription : novembre 2005 Messages : 2 565 ![]() |
Citation:
Je vois pas en quoi cela dérange que ce soit possible depuis java de façon transparente ou non. |
|
|
|
60
|
|
|
#11 |
|
Membre chevronné
![]() Claude Développeur .NET Inscription : juin 2007 Messages : 194 ![]() |
JE n'ai dit pas que c'est une mauvaise chose (au contraire), simplement que cela risque d'engendrer des effets de bord et que certains en profitent pour utiliser le GPU plutôt qu'optimiser leur programme. Quand au fait que ce soit utilisé de nos jours, j'en suis conscient, mais encore une fois, ce sont les effets de bords que je crains le plus, pas la technologie en elle-même.
|
|
|
02
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2003 Messages : 1 660 ![]() |
En fait Dalvik n'a rien à voir avec la plateforme Java. Ce n'est pas du langage Java qu'il est question ici.
__________________
Les brevets ? Le type qui a inventé l'eau chaude doit être grave blindé de thunes ! |
|
|
20
|
|
|
#13 | ||
|
Membre actif
![]() Inscription : avril 2009 Messages : 131 ![]() |
Citation:
Oui pour les applications spécifiques de calculs c'est une bonne chose mais pense aussi aux applications serveurs, imagine le rapport performance/prix qu'un APU pourrait apporter dans certain cas. Citation:
|
||
|
|
10
|
|
|
#14 |
|
Inactif
Inscription : juillet 2006 Messages : 215 ![]() |
Mauvaise idée, palier les déficiences d'un langage avancé avec du hardware.
|
|
|
08
|
|
|
#15 |
|
Membre expérimenté
![]() |
|
|
|
11
|
|
|
#16 |
|
Membre confirmé
![]() Développeur Java Inscription : juillet 2009 Messages : 70 ![]() |
Je ne comprends pas pourquoi certains d'entre vous parlent de lenteur ou de déficience concernant Java: depuis ses débuts la JVM n'a cessé d'être optimisée et il n'y a vraiment pas à rougir du résultat aujourd'hui. D'accord un programme Java est généralement moins performant qu'un programme C ou C++ équivalent, mais à ma connaissance l'écart reste raisonnable. Donc à moins que vous ayez des données qui prouvent le contraire merci d'éviter de propager cette vieille idée reçue...
Par ailleurs, l'idée d'utiliser le GPU est une conséquence logique de ce qui se passe aujourd'hui: auparavant pour améliorer les performances d'un programme c'était facile, il suffisait d'attendre tranquillement que la prochaine génération de CPU sorte et voilà. Aujourd'hui le problème vient du fait que ce n'est pas tellement la puissance des CPU qui augmente, mais le nombre de coeurs. Donc on est de toute façon condamné à faire de la programmation multithread si on souhaite boosteer les performances de nos applications (même l'optimisation de code en monothread a ses limites). Du coup, tant qu'à faire de la programmation parallèle pourquoi se limiter aux coeurs des CPU et ne pas déborder sur le GPU? C'est une excellente chose qui sera peut être un peu difficile à maîtriser, mais il en ira comme de la programmation multithreads: les moins ténéraires d'entre nous n'y toucherons pas, les autre s'amuserons comme des petits fous |
|
60
|
|
|
#17 |
![]() ![]() Logan Développeur Java Inscription : août 2005 Messages : 1 692 ![]() |
Une tentative d'AMD pour contrer CUDA ?
Pourquoi pas mais je pense que les calculs distribués (ceux qui bénéficient le plus de l'utilisation de l'architecture d'un GPU) sont plutôt codés en C afin de bien maîtriser chaque opération du traitement. De plus, j'ai un peu peur que pour bénéficier des avantages il faille investir dans des plateformes AMD et pour le coup on a toujours du "Compile Once, Run Everywhere" mais pas aux mêmes conditions :-/ Concernant les performances de la JVM. Des fois c'est mieux que le C, des fois c'est moins bon. Bref on ne peut pas conclure. Ca dépend pas mal de comment c'est codé, comment c'est découpé, quelle JVM/CPU/OS est utilisé. Avec JIT, on peut utiliser des instructions spécifiques à un processeur ce qui n'est pas le cas de la plupart des programmes compilés en C qui se veulent relativement "multi-plateforme". Ensuite il faut comparer ce qui est comparable, à la base en C pas ou peu de découpage, en Java on a des milliers classes et un minimum de DLL. Il faut donc linker tout ça aux premières exécutions des bouts de code, ensuite on peut inliner plus facilement et même en cours de traitement. Donc à une exécution one-shot, la faveur ira sûrement au C mais sur le long termes, l'écart va se resserrer par devenir null ou à la faveur de Java. Dans le même genre, vous comparez sûrement des applications écrites à la va-vite en Java et proprement en C. Concernant l'amélioration à l'aide du GPU Le GPU a un fonctionnement caractéristique qui ne lui permet pas d'être performant pour la plupart des codes que l'on écrit, le procédurale. Là où il excelle c'est la grande parallélisation de tâches très atomiques. Un CPU doit gérer les priorités, les conflits de lecture/écriture en mémoires, être prédictif. Bref, on a améliore pas les applications mal écrites en utilisant le GPU. De la même manière que l'ordinateur quantique n'est pas adapté à la plupart des codes procéduraux. Concernant l'utilisation du GPU La bibliothèque Java3D permet déjà de bénéficier de l'accélaration matérielle pour le traitement de graphe. JavaFX étant très proche d'un point de vue architecture logique (utilisation d'un Scene Graphe), il se peut qu'il bénéficie également de l'accélération offerte par le GPU. Donc rien de réellement neuf sauf que cela pourrait profiter aux nouvelles APIs (et améliorations associées) introduites en Java7 concernant le calcul distribué. D'ailleurs Java8 devrait permette également d'améliorer les performances lors de l'utilisation de ces APIs.
__________________
Java : Forum - FAQ - Java SE 7 API - Java EE 6 API ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !) Une solution vous convient ? N'oubliez pas le tag ![]() Signature par pitipoisson |
|
|
11
|
|
|
#18 |
![]() ![]() R&D en systemes informatiques bas niveau Unix/Linux Inscription : mai 2004 Messages : 7 174 ![]() |
A mon sens, il y a confusion entre "La JVM va s'executer sur plusieurs coeurs, CPU et GPU confondus", et "On va faire de la programmation GPU en Java".
Ce dont il est question est de permettre a la JVM de deporter certains calculs (certaines operations qui vont bien) sur un GPU, sans pour autant que le developpeur n'ait besoin d'ecrire du code specifique. Est-ce que ca va apporter beaucoup a Java ? Pour le commun des mortels, non, car les PCs de developpement, comme les serveurs, ne sont pas equipes de cartes graphiques performantes en calcul. Par contre, cela va dans le sens des puces multi-coeur multi-architectures, qui commencent de plus en plus a devenir realite, malgre la controverse de l'utilite a leur sujet. Encore une fois, il ne s'agit pas ici de faire du developpement GPU en Java. |
|
|
10
|
|
|
#19 | |
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 074 ![]() |
Citation:
Coté graphique, JavaFX supporte l'accélération GPU et a gagné énormément de performances lors du passage en 2.2, probablement plus encore à venir lors du découplage à venir des deux threads du SceneGraph. Après c'est comme AWT/Swing/Java2D, certaines manips sont plus lentes que d'autres et certaines techniques d'optimisation d'il y a 20 ans permettent de gagner beaucoup (ce matin, une CON sur les nouvelles opérations de pixels montrait un test graphique où on passe de 3fps à 90+fps suivant comment on accède aux pixels et le nombre d'appels de méthodes qu'on fait
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com