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
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