Jug gpgpu

1 693 vues

Publié le

FinistJUG by Jean-Baptiste Ollagnon

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 693
Sur SlideShare
0
Issues des intégrations
0
Intégrations
862
Actions
Partages
0
Téléchargements
8
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Jug gpgpu

  1. 1. Java & GPGPU General-Purpose on Graphics Processing Unitjeudi 28 février 2013
  2. 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 tempsjeudi 28 février 2013
  3. 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écryptagejeudi 28 février 2013
  4. 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 Mhzjeudi 28 février 2013
  5. 5. GPGPU SDKs Compatibilité NVIDIA AMD Intel ARM IBM CUDA SDKs ATI Stream OpenCLjeudi 28 février 2013
  6. 6. Java & OpenCL JNI Bindings JavaCL/OpenCL4Java, JOCL JCUDA OpenCL / CUDA «traduit»jeudi 28 février 2013
  7. 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. 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. 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.jarjeudi 28 février 2013
  10. 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 & Oraclejeudi 28 février 2013
  11. 11. Démo & Questionsjeudi 28 février 2013

×