Les différentes technologies utilisées
Après avoir vu les principaux projets en cours et quelques exemples concrets des applications possibles du calcul distribué, qu'en est-il de la partie matérielle ? Si les calculs effectués par nos machines le sont généralement par leur processeur, la carte graphique et même une console de jeu peuvent également jouer un rôle intéressant. En effet, de nombreux projets de calcul distribué utilisent fort logiquement le
calcul parallèle qui avantage certains composants face à d'autres. Explications.
L'incontournable CPU
Les processeurs tels que nous les connaissons actuellement sont composés (entre autres) d'unités de calcul à même de répondre rapidement à tout type de demande, même complexe. Pour réagir le plus rapidement possible, les instructions et les données sont stockées dans la mémoire cache du processeur, afin que les unités de calculs puissent y accéder rapidement. C'est pourquoi cette mémoire occupe une grande partie du processeur, les unités de calcul ne représentant qu'une portion relativement faible de sa surface. En résumé, le CPU (pour
Central Processing Unit) est un excellent élément pour traiter rapidement un flux d'instructions complexes important, du fait de la rapidité de l'échange entre la mémoire cache et les unités de calcul.
La Playstation 3 et son processeur Cell
Si un processeur peut facilement traiter une simple addition (ou d'autres opérateurs plus complexes comme le logarithme ou l'exponentielle), qu'en est-il de plusieurs milliards d'additions simultanées ? Il existe une autre façon de résoudre un problème dont le nombre d'opérations est particulièrement important et dans lequel ces opérations sont indépendantes : il s'agit de la parallélisation.
La plupart des calculs graphiques sont parallélisables, c'est-à-dire que l'on peut les découper en une série d'opérations indépendantes que l'on peut traiter simultanément. Un plus grand nombre d'unités de calcul (moins complexes que celles d'un CPU) parviennent alors à résoudre le problème plus rapidement que ne le ferait un processeur. En contrepartie, la quantité de mémoire cache est moindre que pour un CPU. C'est le facteur limitant dans ce type d'architecture, car la transmission de données de la mémoire vive vers le processeur est plus lente que si les instructions et/ou les données sont stockées dans la mémoire cache.
Un processeur Cell est un savant mélange d'unités de calcul capables à la fois de résoudre rapidement un jeu d'instruction complexe et d'appliquer à de nombreuses données une opération simple et répétitive. C'est lui qui équipe la dernière console de Sony, la Playstation 3, dont les performances ont énormément apporté au projet Folding@Home en terme de puissance.
Le GPU, nouveau venu dans la bataille
Le GPU (pour
Graphics Processing Unit) est la logique de parallélisation poussée à l'extrême : ici, les unités de calcul sont très nombreuses, toutes destinées à du calcul « simple » et la mémoire prend très peu de place. Ces éléments sont donc tout à fait véloces pour ce qui est du calcul parallèle (comme le rendu 3D) et particulièrement peu adaptés aux opérations plus complexes. C'est toutefois moins vrai pour les dernières générations de cartes graphiques, que ce soit chez NVIDIA ou chez AMD, puisqu'elles embarquent quelques unités de calcul programmables et propres à effectuer d'autres tâches plus généralistes que les simples rendus 3D. C'est ce qu'on appelle le GP-GPU (
general purpose GPU).
NVIDIA et son API
CUDA ou AMD avec le Brook+ proposent deux langages de programmation permettant aux développeurs d'utiliser facilement le potentiel de leurs cartes graphiques. C'est ainsi qu'une application comme Folding@Home peut utiliser une (ou plus ?) cartes NVIDIA ou AMD au lieu du traditionnel CPU. Nous verrons à la page suivante les performances de chacun.
Quelques chiffres à titre de comparaison
Vous l'avez compris, un processeur comme le Cell ou même des cartes graphiques peuvent être à leur avantage face à un CPU « classique », même les plus puissants comme le Core Quad d'Intel. Pour exprimer une puissance de calcul, la grandeur utilisée traditionnellement est le FLOP (pour
FLoating point Operations Per Second), qui représente le nombre d'opérations en virgule flottante (c'est à dire en chiffre réel) effectuées en une seconde. Pour exprimer ce dont sont capables les supercalculateurs actuels, quelques préfixes s'imposent : ainsi, le petaflops (qui représente un million de milliards d'opérations par seconde) est aujourd'hui l'unité de référence. C'est un
supercomputer qu'IBM a vendu à l'armée américaine qui a passé cette barrière symbolique en mai dernier : le
Roadrunner composé de 6 948 Opteron bicoeurs et de 12 960 processeurs Cell. A titre de comparaison, le processeur le plus puissant à l'heure actuelle, à savoir le Core Quad QX9775 d'Intel, développe « seulement » 51 gigaflops, tandis qu'une GeForce 8800 Ultra de chez NVIDIA en produit plus de dix fois plus à l'aide de ces 128 unités de calcul (qui ne sont pas comparables à celles présentes dans un CPU, rappelons-le).
Mais le calcul distribué, de par le nombre d'ordinateurs qu'il utilise, bénéficie d'une puissance encore plus extraordinaire. Ainsi, l'ensemble des projets compris dans l'interface BOINC bénéficie actuellement de plus d'un petaflops de puissance, tandis que le très populaire Folding@Home est soutenu par plus de 2,5 petaflops.