GPGPU
et programmation de GPGPU
General-purpose Processing on Graphics Processing Units
Les GPU permettent plus de calcul que les CPU
2002: Importante avancé dans la flexibilité de programmation des GPU
Domaines interessés
- Traitement de l'image
- Prevision météorologique
- Simulation
- Rendu graphique
- Outils scientifique tel que Matlab
- Et d'autres..
Algorithme de traitement en série
Comment profiter de cette puissance de calcul ?
Algorithme de traitement simultanée
Trés efficace pour le traitement de grands ensembles de données
Solutions
Shader
CUDA et autres
OpenCL
OpenCL
Une API et un langage
Proposé par Khronos Group (Apple, ATI, Intel, Nvidia et AMD entre autres)
Va au dela de GPGPU : permet aussi l'execution sur CPU avec le même code.
Principes
Similaires aux shader, un programme OpenCl est construit à l'execution
Permet l'echange des données avec OpenGL
Principes
L'unité : Le work-item (ou thread en CUDA)
Synchronisation possible dans un work group
Principes
Exemple de programme OpenCl
__kernel void
SimpleKernel( const __global float *input, __global float *output)
{
size_t index = get_global_id(0);
for(int i = 0; i < ITER_NUM; i++)
{
output[index] = sin(fabs(input[index]));
}
}
Demonstration
GPGPU
By Will Bobo
GPGPU
- 983