GPGPU

GPGPU est l’acronyme de General-Purpose Processing on Graphics Processing Units, désignant le calcul générique sur un processeur graphique. Un processeur graphique (ou GPU, de l’anglais Graphics Processing Unit) est un circuit intégré présent sur une carte graphique permettant, à la base, d’assurer les fonctions de calcul de l’affichage. Si les premiers GPU étaient à fonctions fixes, ils ont nettement évolué depuis les années 2000 et sont devenus programmables. Leur architecture hautement parallèle les rend, par conséquent, éligibles pour l’exécution de tâches lourdes en calcul, du moins celles qui se prêteraient aisément à une parallélisation massive.

Par ailleurs, la plupart des architectures modernes, en plus d’être onéreuses, sont très lourdes du point de vue de l’infrastructure et s’adressent à un marché de niches. Le GPU, pour sa part, est un produit grand public bénéficiant d’une large diffusion grâce au marché des jeux vidéo et permettant une réduction drastique des coûts par rapport à une architecture trop spécialisée. En d’autres termes, on disposerait d’une architecture relativement bon marché et permettant d’afficher, dans certains cas, des performances pour le calcul parallèle supérieures par rapport à celles d’un processeur généraliste CPU (de l’anglais Central Processing Unit) haut de gamme et récent.

Actuellement, un processeur généraliste est composé de nombreuses unités de traitement ainsi que de plusieurs niveaux de mémoires hiérarchisées et dont l’ensemble forme une structure relativement complexe faisant l’objet d’une duplication dans des coeurs distincts (de l’ordre de la dizaine, au plus, de nos jours). En revanche, l’unité de calcul de base d’un processeur graphique est plus simple. En effet, plusieurs dizaines de ces unités de calcul sont intégrées sur une seule puce graphique. Ce haut niveau de parallélisme, créé initialement pour traiter simultanément la projection de plusieurs textures (ou shaders), est devenu disponible pour tout autre usage avec l’apparition des kits de développement dédiés (NVIDIA CUDA, OpenCL du Khronos Group, ATI Stream d’AMD, DirectCompute de Microsoft, SDK d’Intel, SDK d’IBM…).

Néanmoins, le GPGPU seul ne peut pas être un modèle de remplacement du CPU. En effet, à en juger par les activités récentes des principaux constructeurs de circuits électroniques, on est amené à penser que les futurs microprocesseurs et les grands systèmes informatiques seront, par nature, hybrides voire hétérogènes. Ces systèmes reposeront sur l’intégration, dans des proportions variées, de deux types de composants principaux :

  • processeurs généraliste CPU multi-coeurs dont le nombre de coeurs ne cessera d’augmenter afin d’intégrer de plus en plus de composants sur le même circuit en évitant les obstacles d’alimentation, de parallélisme des instructions et de mémoire.
  • circuits spécialisés et accélérateurs massivement parallèles dont les performances en calcul virgule flottante dépassent, depuis plusieurs années déjà, celles des CPU classiques.

Les lecteurs peuvent approfondir ces aspects en consultant l’article (dont on s’est en partie inspiré) de Sébastien DEVAUX, intitulé « Le pixel, le polygone et la matrice », paru dans la revue mensuelle LINUX MAGAZINE, N°129, pages 60-69, en août 2010.

Lien Permanent pour cet article : http://calcul-scientifique.univ-tln.fr/2012/01/gpgpu/