29 votes

Programmation Java GPU

Est-il possible de faire de la programmation GPU en Java ? Je veux dire sans utiliser les bibliothèques natives.

Et quelle est l'amélioration des performances à laquelle on peut s'attendre lorsqu'on passe aux processeurs graphiques ?

Edit :

Je ne cherche pas à programmer des jeux, je veux faire du calcul de base.

1 votes

Voulez-vous dire écrire le programme du shader en Java ? Ou utiliser Java pour charger un shader écrit dans un langage de shader (GLSL ou HLSL) sur le GPU et l'exécuter ? AFAICT, il n'existe pas de compilateurs de bytecode Java -> GPU (ou de convertisseurs de bytecode Java en bytecode GPU), donc vous ne pouvez pas écrire votre programme GPU en Java.

0 votes

Les gars, vous avez trouvé pas mal de mots clés que je ne connaissais pas. Par exemple, je ne savais pas ce qu'était un langage d'ombrage, mais je l'ai découvert après une recherche rapide sur Google. Ok, sur la base de vos réponses, je vais faire une modification.

12voto

Gunslinger47 Points 5166

Oui. Prise en charge de Java3D, LWJGL et JOGL GLSL (OpenGL Shading Language).

Edit :
Vous pouvez utiliser OpenCL si vous souhaitez effectuer des calculs généraux sur les GPU, indépendamment de la plate-forme. Ce cadre vous permet d'écrire du code qui traite toutes les unités de traitement de manière identique, malgré des ensembles de fonctionnalités et des environnements d'exécution très différents. Cependant, il s'agit d'une programmation de très bas niveau par rapport à Java.

Il semble que votre idéal serait une JVM écrite avec un support OpenCL. En cherchant en ligne, j'ai trouvé un peu d'intérêt pour l'idée mais aucune preuve d'un soutien majeur.

quelle est l'amélioration des performances que l'on peut attendre

Cela dépend du système sur lequel vous travaillez et du type de données que vous traitez (les mathématiques matricielles et vectorielles sont extrêmement efficaces sur les GPU). Vous obtiendriez probablement des gains importants sur un système comme le mien avec deux GPU puissants et un modeste CPU à un seul cœur. Toutefois, sur un ordinateur doté d'un GPU modeste et d'un CPU à quatre cœurs, les gains de performances pourraient avoir du mal à compenser les frais généraux.

5 votes

Il cherche probablement JOCL. jocl.org

1 votes

1 votes

Regardez aussi [rootbear] github.com/pcpratts/rootbeer1

6voto

pcpratts Points 300

Rootbeer1 vient d'être publié sur github : https://github.com/pcpratts/rootbeer1

Avec Rootbeer, vous pouvez programmer en utilisant presque tous les Java sauf les suivants :

  1. méthodes et champs natifs
  2. réflexion
  3. invocation dynamique de méthodes
  4. collecte des déchets
  5. dormir à l'intérieur d'un moniteur

Cela signifie que vous pouvez utiliser des graphes d'objets arbitraires avec des types composites.

2voto

user619318 Points 29

Si vous envisagez toujours de faire du calcul intensif en Java sur GPU sans utiliser de bibliothèques natives, cet article de blog pourrait vous intéresser. http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html Nous (je fais partie de l'équipe Ateji) avons constaté jusqu'à présent des performances allant jusqu'à 60x sur des applications Java qui peuvent être massivement parallélisées.

0 votes

J'ai posté une question sur votre blog lié. J'aimerais vraiment disposer d'une telle fonctionnalité.

1voto

Andy Points 1

Jetez un coup d'œil à rootbeer1, mais vous devez d'abord vous assurer que vous avez une carte graphique acceptée par CUDA avant de commencer à travailler dessus et que vous avez fait toutes les configurations NVIDIA, etc.

lien de téléchargement : Télécharger google CUDA

guide de démarrage http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Windows.pdf

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X