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