Jug gpgpu
-
Upload
mikarber -
Category
Technology
-
view
1.112 -
download
3
description
Transcript of Jug gpgpu
![Page 1: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/1.jpg)
Java & GPGPUGeneral-Purpose on Graphics Processing Unit
jeudi 28 février 2013
![Page 2: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/2.jpg)
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
![Page 3: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/3.jpg)
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
![Page 4: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/4.jpg)
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
![Page 5: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/5.jpg)
GPGPU SDKs
CompatibilitéCompatibilitéCompatibilitéCompatibilitéCompatibilité
NVIDIA AMD Intel ARM IBM
SDKs
CUDA
SDKs ATI StreamSDKs
OpenCL
jeudi 28 février 2013
![Page 6: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/6.jpg)
Java & OpenCL
JNI
Bindings
JavaCL/OpenCL4Java,
JOCL
JCUDA
OpenCL / CUDA «traduit»
jeudi 28 février 2013
![Page 7: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/7.jpg)
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
![Page 8: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/8.jpg)
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
![Page 9: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/9.jpg)
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
![Page 10: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/10.jpg)
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
![Page 11: Jug gpgpu](https://reader033.fdocuments.in/reader033/viewer/2022052900/555dfc9ed8b42ae4628b4fd1/html5/thumbnails/11.jpg)
Démo & Questions
jeudi 28 février 2013