SlideShare a Scribd company logo
1 of 11
Download to read offline
Java & GPGPU
           General-Purpose on Graphics Processing Unit




jeudi 28 février 2013
GPGPU ?

                 General-Purpose processing on Graphics Processing
                 Units
                 Calcul massivement parallèle (!= CPU)
                 Standardisation
                 1 programme à la fois (Execution)
                 Impossible de lire et écrire en même temps



jeudi 28 février 2013
Applications
                 Traitement d’image / convolutions
                 Rendu 3D (ray-tracing, imagerie médicale)
                 Système de particules
                 Physique / Collision
                 Simulation (Météo, neurones)
                 Chiffrage / Déchiffrage / Décryptage



jeudi 28 février 2013
GPU Roadmap
                 Geforce GTX 560 : 336 coeurs / 810 Mhz
                 Geforce GTX 660 : 960 coeurs / 980 Mhz
                 Geforce GTX 690 : 3072 coeurs / 915 Mhz


                 Radeon HD 6870 : 1120 coeurs / 900 Mhz
                 Radeon HD 6990 : 3072 coeurs / 830 Mhz



jeudi 28 février 2013
GPGPU SDKs

                                    Compatibilité
                           NVIDIA AMD  Intel    ARM   IBM
                CUDA
         SDKs ATI Stream
               OpenCL




jeudi 28 février 2013
Java & OpenCL
                 JNI
                 Bindings
                        JavaCL/OpenCL4Java,
                        JOCL
                        JCUDA
                 OpenCL / CUDA «traduit»



jeudi 28 février 2013
JOCL
              Binding Java pour OpenCL
              JogAmp


                        String programSource =
                              "__kernel void "+
                              "sampleKernel(__global const float *a,"+
                              "             __global const float *b,"+
                              "             __global float *c)"+
                              "{"+
                              "    int gid = get_global_id(0);"+
                              "    c[gid] = a[gid] + b[gid];"+
                              "}";



jeudi 28 février 2013
Aparapi
                 «Write once, run everywhere»
                 Traduit le bytecode Java en OpenCL automatiquement
                 une seule version du programme à maintenir
                 Compilation en OpenCL au runtime

                             Kernel kernel = new Kernel(){
                                  @Override public void run(){
                                     int i = getGlobalId();
                                     result[i] = inA[i] + inB[i];
                               }
                             };
                             Range range = Range.create(result.length);
                             kernel.execute(range);



jeudi 28 février 2013
RootBeer
                 Java, comme Aparapi
                 Meilleurs support bytecode
                 Traduction Java -> OpenCL & sérialisation faite une fois
                 pour toutes dans un nouveau jar



                java -jar Rootbeer.jar ArraySumApp.jar ArraySumApp-GPU.jar




jeudi 28 février 2013
Sumatra

                 Intégré dans Java 8 (2013)
                 Basé sur les closures
                 Transformation du code Java en OpenCL par la JVM
                 Distribution de la charge CPU/GPU
                 AMD & Oracle




jeudi 28 février 2013
Démo & Questions




jeudi 28 février 2013

More Related Content

Similar to Jug gpgpu

Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaZenika
 
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013
GWT, quoi de neuf?  Présentation au GDG/GTUG Montréal - 26 juin 2013GWT, quoi de neuf?  Présentation au GDG/GTUG Montréal - 26 juin 2013
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013Claude Coulombe
 
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...Paris Open Source Summit
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovyguest6e3bed
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
Report on GPU complex type usage
Report on GPU complex type usageReport on GPU complex type usage
Report on GPU complex type usageCaner Candan
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdfsayf7
 
Graphics card as computation engine
Graphics card as computation engineGraphics card as computation engine
Graphics card as computation enginevalery brasseur
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Guillaume Laforge
 

Similar to Jug gpgpu (20)

Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - ZenikaPrésentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
 
Gradle_ToulouseJUG
Gradle_ToulouseJUGGradle_ToulouseJUG
Gradle_ToulouseJUG
 
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013
GWT, quoi de neuf?  Présentation au GDG/GTUG Montréal - 26 juin 2013GWT, quoi de neuf?  Présentation au GDG/GTUG Montréal - 26 juin 2013
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013
 
Gradle_Paris2010
Gradle_Paris2010Gradle_Paris2010
Gradle_Paris2010
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
OWF12/PAUG Conf Days Render script, sylvain galand, software engineer at geny...
 
Gradle_BordeauxJUG
Gradle_BordeauxJUGGradle_BordeauxJUG
Gradle_BordeauxJUG
 
Gradle_LyonJUG
Gradle_LyonJUGGradle_LyonJUG
Gradle_LyonJUG
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Report on GPU complex type usage
Report on GPU complex type usageReport on GPU complex type usage
Report on GPU complex type usage
 
Chap1_PresentationJava.pdf
Chap1_PresentationJava.pdfChap1_PresentationJava.pdf
Chap1_PresentationJava.pdf
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Paug renderscript-mars-2013
Paug renderscript-mars-2013Paug renderscript-mars-2013
Paug renderscript-mars-2013
 
Gradle_ToursJUG
Gradle_ToursJUGGradle_ToursJUG
Gradle_ToursJUG
 
Graphics card as computation engine
Graphics card as computation engineGraphics card as computation engine
Graphics card as computation engine
 
Javavs net
Javavs netJavavs net
Javavs net
 
Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008Introduction à Groovy - OpenSource eXchange 2008
Introduction à Groovy - OpenSource eXchange 2008
 
Gradle_BreizJUG
Gradle_BreizJUGGradle_BreizJUG
Gradle_BreizJUG
 

Jug gpgpu

  • 1. Java & GPGPU General-Purpose on Graphics Processing Unit jeudi 28 février 2013
  • 2. GPGPU ? General-Purpose processing on Graphics Processing Units Calcul massivement parallèle (!= CPU) Standardisation 1 programme à la fois (Execution) Impossible de lire et écrire en même temps jeudi 28 février 2013
  • 3. Applications Traitement d’image / convolutions Rendu 3D (ray-tracing, imagerie médicale) Système de particules Physique / Collision Simulation (Météo, neurones) Chiffrage / Déchiffrage / Décryptage jeudi 28 février 2013
  • 4. GPU Roadmap Geforce GTX 560 : 336 coeurs / 810 Mhz Geforce GTX 660 : 960 coeurs / 980 Mhz Geforce GTX 690 : 3072 coeurs / 915 Mhz Radeon HD 6870 : 1120 coeurs / 900 Mhz Radeon HD 6990 : 3072 coeurs / 830 Mhz jeudi 28 février 2013
  • 5. GPGPU SDKs Compatibilité NVIDIA AMD Intel ARM IBM CUDA SDKs ATI Stream OpenCL jeudi 28 février 2013
  • 6. Java & OpenCL JNI Bindings JavaCL/OpenCL4Java, JOCL JCUDA OpenCL / CUDA «traduit» jeudi 28 février 2013
  • 7. JOCL Binding Java pour OpenCL JogAmp String programSource = "__kernel void "+ "sampleKernel(__global const float *a,"+ " __global const float *b,"+ " __global float *c)"+ "{"+ " int gid = get_global_id(0);"+ " c[gid] = a[gid] + b[gid];"+ "}"; jeudi 28 février 2013
  • 8. Aparapi «Write once, run everywhere» Traduit le bytecode Java en OpenCL automatiquement une seule version du programme à maintenir Compilation en OpenCL au runtime Kernel kernel = new Kernel(){     @Override public void run(){       int i = getGlobalId();       result[i] = inA[i] + inB[i];     } }; Range range = Range.create(result.length); kernel.execute(range); jeudi 28 février 2013
  • 9. RootBeer Java, comme Aparapi Meilleurs support bytecode Traduction Java -> OpenCL & sérialisation faite une fois pour toutes dans un nouveau jar java -jar Rootbeer.jar ArraySumApp.jar ArraySumApp-GPU.jar jeudi 28 février 2013
  • 10. Sumatra Intégré dans Java 8 (2013) Basé sur les closures Transformation du code Java en OpenCL par la JVM Distribution de la charge CPU/GPU AMD & Oracle jeudi 28 février 2013
  • 11. Démo & Questions jeudi 28 février 2013