Comment le GPGPU va révolutionner le calcul parallèle

Les constructeurs de cartes graphiques, NVIDIA en tête, sont en train de bouleverser le monde des supercalculateurs. Vue d’ensemble de ce marché et de son évolution. Attention : dossier sur six pages !

Comme vous pouvez vous y attendre, il n’y a encore aucun miracle ici. Le Cell est difficile à programmer. Avec un Core 2 Quad nous disposons d’une architecture similaire à quatre processeurs x86 qui tourneraient en parallèle. Le seul point noir est de composer avec la bande passante mémoire du processeur, qui doit être partagée entre les différentes unités de traitement. Le Cell est différent : il convient d’adresser chacun des SPE (Synergistic Processing Element) de façon explicite, ces modules n’étant pas totalement autonomes.

Les GPU : une solution inattendue

Les cartes graphiques actuelles emploient un processeur de traitement graphique spécialisé (GPU pour Graphics Processing Unit). Ce dernier va gérer les différentes opérations, par exemple le calcul d’une scène en 3D. Ce type de calculs est aisé à paralléliser. C’est donc tout naturellement que les constructeurs ont choisi un modèle où le GPU comprend de multiples unités de traitement. La 3D nécessite également une large bande passante, ce qui impose l’utilisation de mémoire spécialisée, à haut rendement.

Unités de traitement multiples et bande passante avancée… ce sont exactement les caractéristiques demandées par les supercalculateurs. Les programmeurs ont rapidement mis à profit la puissance des cartes graphiques pour des calculs classiques (GPGPU pour General-Purpose Computing on Graphics Processing Units).

La solution la plus universelle reste l’utilisation de l’OpenGL, une bibliothèque graphique exploitable sur l’ensemble des cartes graphiques. En manipulant des textures et points à l’écran, il est possible d’effectuer des opérations complexes de calcul matriciel. C’est artisanal, mais cela fonctionne. Problème ; une très large partie de la puissance disponible est perdue.

Les constructeurs fournissent depuis peu des solutions plus efficaces : au besoin, les nouveaux processeurs de flux peuvent abandonner leur fonction initiale de traitement graphique, pour effectuer d’autres types de calculs. Les constructeurs fournissent des kits de développement logiciel permettant d’adresser directement le hardware inclus sur les cartes graphiques : Stream pour AMD et CUDA pour NVIDIA. Ces solutions fournissent une puissance maximale, mais ne sont pas compatibles entre elles.

Heureusement, l’OpenCL fournira une réponse commune à tous les constructeurs. Il permettra même de créer du code compatible avec les processeurs multicœurs classiques, les GPU et le Cell.

quadrofx58000.jpg