Présentation d’un GPU

1.5         Conclusion du chapitre

Dans ce chapitre, nous avons introduit le concept de programmation générique parallèle sur carte graphique, ou GPGPU (General Purpose computing on Graphics Processing Units) en explicitant son intérêt croissant pour la communauté scientifique, en exposant les notions de parallélisme sur lesquels il repose et qu’il est nécessaire de connaitre dans ce cadre, puis nous avons présenté un historique des générations successives de cartes graphiques et l’architecture matérielle des plus récentes, le modèle de programmation GPGPU que cette architecture impose ainsi que ses contraintes.

Avec l’évolution rapide de leurs performances les GPU deviennent de plus en plus intéressant.
Cependant, Il est important de noter, qu’actuellement la performance n’est pas le seul facteur de décision pris en compte par les développeurs lorsqu’ils doivent choisir le processeur chargé d’exécuteur leur applications.
D’autres facteurs doivent aussi être pris en compte :

1.5.1        Présence du processeur cible sur le marché.

Le coût de développement d’un logiciel est plus vite justifié si la population cliente est importante. Les applications qui peuvent fonctionner sur un marché restreint n’auront qu’une faible clientèle, très spécifique.
Ceci a été le problème principal des systèmes de traitements parallèles classiques qui n’avaient qu’une part de marché négligeable comparés aux CPU. Seules quelques applications spécifiques financées par les gouvernements et de grands groupes ont pu être développées avec succès.
Ceci a changé avec les GPU multi-cœurs. Grâce à leur popularité sur le marché des PC, les GPU ont été vendus par centaines de millions (par exemple la famille G80 a été vendue à plus de cent millions d’exemplaires à ce jour). Actuellement quasiment tous les ordinateurs disposent de GPU. C’est la première fois que le calcul massivement parallèle fait partie d’un marché grand public. Une si grande présence a rendu les GPU économiquement très attractifs pour les développeurs.

1.5.2        Facilité d’accès à la technologie

Un autre facteur important à prendre en compte est la pratique et la facilité d’accès à une technologie.
Avant 2006, avec l’apparition de la programmation parallèle et des nouveaux logiciels développés pour fonctionner de cette manière, l’application en production fonctionnait d’habitude sur des serveurs voir des Datacenter répartis sur ces clusters départementaux.
Il était très difficile de pouvoir réaliser des tests sur ce genre de machines, et peu de programmeurs y avaient accès.
Jusqu’en 2006, les puces graphiques étaient très difficiles à utiliser parce que les programmeurs devaient utiliser l’équivalent d’API graphiques pour accéder aux cœurs du processeur, c’est à dire utiliser des techniques Open GL ou Direct3D. Même avec un environnement de développement de plus haut niveau, le code sous-jacent restait limité par les API.
Ces API limitent les choses que l’on peut écrire en réalité pour ces puces. C’est pourquoi seulement quelques personnes pouvaient surmonter ces difficultés par d’habiles compétences pour pouvoir atteindre les performances désirées.
Par conséquent, la programmation GPGPU n’est pas devenu un phénomène de programmation répandu. Néanmoins, cette technologie était suffisamment passionnante pour inspirer quelques efforts héroïques et des résultats excellents.

Mais tout le changé en 2007 avec la sortie de CUDA. NVIDIA a ainsi rendu les GPU plus facilement programmables, et de par le nombre de GPU sur le marché, ce langage de programmation s’est donc ouvert à un plus grand nombre de développeurs.

1.5.3        Prix et disponibilité

Pour environ 300 euros, il est possible de se procurer les GPU les plus puissants existants sur le marché actuel. Ces très faibles prix sont le résultat de l’existence d’un marché énorme et d’une concurrence rude entre les deux plus importants fabricants de cartes graphiques, NVidia et ATI, dont la cible commerciale principale est le grand public, pour la pratique des jeux vidéo.
La composition d’un cluster à utilisation professionnelle est donc très raisonnablement envisageable. De plus, par ces faibles coûts, il est aujourd’hui rare pour une station de travail ou même un ordinateur grand public de ne pas disposer d’un GPU performant.
Même si le GPU ne peux rivaliser en terme de tâches généralistes comme les CPU, il reste un excellent moteur de calcul, et permet de délester le CPU de ce type de tâches.

1.5.4        Choix du langage

Le langage OpenCL formé entre autre par les sociétés Apple, AMD, Intel et NVidia est un langage open-source visant à devenir le langage de référence pour la programmation des GPU.
Cependant devant la jeunesse de ce langage, moins d’un an d’existence, et manque de retour d’expérience et le manque d’accès aux informations à fait que nous nous baserons sur le langage CUDA.
OpenCL étant très similaire à CUDA : en effet le vocabulaire de dénomination des concepts change, mais les concepts eux restent similairement les même.

Dans l’article suivant nous étudierons le langage CUDA plus en détails.