Calcul générique sur GPU

Généralités

Progamme séquentiel / parallèle

Le concept fondamental de la technologie GPGPU repose sur la parallélisation des programmes et dépend entièrement des ALUs. L'unité arithmétique et logique est l'organe de l'ordinateur chargé d'effectuer les calculs à l'aide d'opérations communes (opérations arithmétiques, opérations logiques, comparaisons, décalages et rotations).
Il est donc important de distinguer les deux types de programme suivants.

Programme séquentiel

Les applications sont traditionnellement réalisées avec des programmes de nature séquentiels, ces programmes exécutent une séquence d’instructions sur un seul ALU.

Programme parallèle

De nos jours, les programmes exécutent plusieurs sous-séquences d’instructions sur plusieurs ALUs simultanément pour augmenter les performances. On parle alors de processeur multi-coeurs.

Puissance de calcul

Ci-dessous l'évolution de la puissance de calcul des CPUs et GPUs des 10 dernières années. Les mesures sont en FLOPS (Floating Point Operation Per Second), ce qui correspond au nombre d'opération à virgule flottante par seconde.

Il est donc facile de constater une évolution très forte de la puissance de calcul des GPUs en comparaison à celle des CPUs. Que ce soit en simple ou double précision, les GPUs ont une puissance de calcul très intéressante.

Architecture CPU/GPU

Pour comprendre l'origine d'une telle différence de calcul entre les deux types de processeurs, nous allons parler de l'architecture de ces derniers.

La différence majeure réside dans le nombre d'ALU présent étant donné que ces composants sont chargés de réaliser les calculs.

Ainsi, un CPU est très efficace pour exécuter rapidement des tâches séquentielles de tous types là où un GPU convient au traitement d’algorithmes « parallélisables  » et qui va traiter des types de tâches restreintes. En d'autres termes, un GPU est chargé d'exécuter des milliards d'opérations simultanées en un temps donné, le temps d'une opération est presque sans importance. Dans un jeu vidéo par exemple, les performances se mesurent en FPS. Pour cela, il faut qu’une image, avec tous les pixels, s’affichent tous les 30 millisecondes. Peu importe le temps d’affichage d’un seul pixel.

Le GPU possède des unités de calculs indépendantes qui exécutent les instructions dans l’ordre où elles apparaissent dans le programme, il y a finalement peu de contrôle dynamique sur l’exécution. Il utilise le modèle de calcul prallèle SIMD (Single Instruction Multiple Data). Dans ce modèle, la même instruction est appliquée simultanément à plusieurs données.

Applications cibles

Le GPGPU permet d’accélérer de manière considérable une classe particulière d’applications. Les besoins de calculs doivent être très important en traitant beaucoup de données. Ensuite, l’algorithme doit être en grande partie parallélisable, le calcul peut être parallélisé pour différentes parties et à différents niveaux de granularité. Enfin, l’accélération dépend des proportions parallélisables d’une application.

Illustration

Pour conclure sur cette partie à propos des généralités, voici une vidéo réalisée par le programme télévisé MythBusters illustrant le concept de GPGPU.