Nvidia CUDA : aperçu

Tags : CUDA; GPGPU; Nvidia;
Publié le 02/03/2007 par
Imprimer
CUDALes processeurs graphiques ou GPUs ont changé en l'espace de quelques années. Aujourd'hui ils sont capables de bien plus que de calculer des pixels dans les jeux vidéo, mais encore faut-il pouvoir les utiliser d'une manière efficace pour d'autres tâches. Si AMD a été le premier à présenter une solution concrète à ce problème, Nvidia est le premier à rendre disponible une telle solution dont nous avons décidé de vous parler dans cet article.

(nous déclinons tout responsabilité quant à l'apparition de maux de tête suite à la lecture de cet article)


CPU et GPU : quelle différence ?
Depuis quelques années, la puissance de calcul des GPUs a évolué exponentiellement, bien plus rapidement que celle des CPUs. Ceci ne veut bien entendu pas dire que les GPUs évoluent plus que les CPUs, il s'agirait là d'un raccourci trop facile. Ces 2 composants s'attaquent à des problèmes très différents, ce qui les a fait évoluer dans des directions également différentes.


En simplifiant, on attend d'un CPU qu'il exécute une tâche le plus rapidement possible alors que l'on attend d'un GPU de pouvoir traiter un maximum de tâches, ou plutôt une tâche sur un maximum de données, dans un temps réduit. Bien entendu un GPU doit également aller vite et un CPU doit traiter plusieurs tâches, mais l'évolution de leurs architectures, tout du moins jusqu'à ce point, a reflété cette priorité. Cela signifie dans le cas d'un GPU une multiplication des unités de traitement et dans le cas du CPU une complexification des unités de contrôle ainsi qu'une augmentation régulière de la mémoire cache embarquée.


Une énorme proportion du GPU est dédiée à l'exécution, contrairement au CPU

Le CPU est ainsi capable de traiter rapidement tout type de tâches alors que le GPU est capable de traiter extrêmement rapidement un certain type de tâches. Celles-ci doivent pouvoir s'exprimer sous forme d'un problème qui se décompose en éléments indépendants puisqu'il s'agit d'exploiter la parallèlisation massive des GPUs. C'est en réalité un problème similaire à celui rencontré par les CPUs dont la puissance de calcul repose en partie sur les unités vectorielles (SSE etc.). Reste que là où le Core 2 Duo peut être vu comme un ensemble de 8 unités, le GeForce 8800 est vu comme un ensemble de 128 de ces unités ! Nous sommes donc à un tout autre niveau ce qui implique que la manière d'aborder un problème doit être vue en conséquence sous peine de ne pas pouvoir exploiter cette puissance de calcul.


BrookGPU : les prémices
L'idée d'utiliser un GPU comme unité de calcul complémentaire n'est pas nouvelle et à commencer à germer avec l'arrivée des GeForce FX, premiers GPUs à supporter le format de calcul flottant simple précision (FP32). Il y a plus de 3 ans, lors des premières publications officielles autour de BrookGPU, un langage de programmation destiné à faciliter l'accès à la puissance de calcul des GPUs, nous écrivions ceci :

"… Autrement dit, les ingénieurs de NVIDIA et ATI devront encore travailler un petit peu avant que ceci ne soit réellement utilisable. Car se servir d'un GPU actuel pour du calcul général revient un petit peu à essayer de s'éclairer grâce au courant tiré d'une pomme de terre. Ceci dit, l'évolution des GPUs étant fulgurante, il n'est pas trop tôt pour commencer à y travailler. Pour avoir quelques chose d'utilisable lors de la sortie des NV50 et R500 ? Nous pouvons même imaginer que ceci pourrait permettre dans le futur à ATI et NVIDIA de proposer leurs puces sur des marchés très différents. …"
Ces prévisions étaient donc plutôt proches de la réalité puisque ATI/AMD a introduit la CTM, une API de bas niveau pour utiliser le cœur de calcul des Radeon X1000 (R5xx) ainsi qu'une gamme de produits dédiés à ce type d'utilisation et que Nvidia a introduit CUDA, un langage de programmation proche du C qui permet d'exploiter le cœur du GeForce 8800 (G80 qui est le nouveau nom de code du NV50).

Se servir d'un GPU comme unité de calcul relève-t-il toujours aujourd'hui de l'éclairage à la pomme de terre ? La réponse est non bien que nous soyons toujours aux débuts de ce type d'utilisation. Les progrès ont été nombreux tant au niveau du hardware que du software. Nous vous avons déjà parlé à plusieurs reprises de la CTM mais sans pouvoir rentrer dans trop de détails, celle-ci n'étant toujours pas publique. Nvidia a par contre rendu publique une version beta de CUDA il y a peu, l'occasion de nous y attarder quelque peu.
Vos réactions

Top articles