Présentation

Article

1 - DU CPU AU GPGPU

  • 1.1 - Évolution du CPU vers le parallélisme
  • 1.2 - Évolution des cartes graphiques

2 - ARCHITECTURE ACTUELLE NVIDIA ET ATI/AMD POUR LE CALCUL GÉNÉRALISTE

3 - LANGAGES DE PROGRAMMATION DE HAUT NIVEAU

4 - PROGRAMMATION AVEC CUDA

5 - ÉVOLUTIONS

  • 5.1 - Matériels
  • 5.2 - Abstractions logicielles

6 - CONCLUSION

7 - GLOSSAIRE

8 - SIGLES, NOTATIONS ET SYMBOLES

Article de référence | Réf : TE5990 v2

Évolutions
Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle

Auteur(s) : Dominique HOUZET

Relu et validé le 27 sept. 2023

Pour explorer cet article
Télécharger l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !

Sommaire

Présentation

Version en anglais En anglais

RÉSUMÉ

Cet article s'intéresse à l'architecture et à la programmation des cartes graphiques dans le but de réaliser des calculs. L'évolution des processeurs vers le parallélisme est décrite, puis celle des cartes graphiques vers la programmation généraliste et le calcul massivement parallèle. Les principales architectures des cartes graphiques et les outils logiciels disponibles pour les programmer sont exposées. Une description plus détaillée des cartes NVIDIA, du langage de programmation CUDA et des librairies associées est effectuée, suivie d'un exemple de programmation et d'optimisation. Pour finir, un aperçu des résultats obtenus et des évolutions techniques possibles est donné.

Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.

Lire l’article

ABSTRACT

General purpose computing on graphics processor. From rendering to massively parallel computing

This article focuses on the architecture and the programming of graphics cards in order to perform computing. First is described the development of processors to parallelism, and the graphics card to the general purpose programming and massively parallel computing.  The main architectures of graphics cards and software tools available for programming them are described. A more detailed description of NVIDIA CUDA programming language and associated libraries is performed, followed by an example of programming and optimization. Finally, an overview of the results and possible technical developments is given.

Auteur(s)

  • Dominique HOUZET : Professeur des Universités - Grenoble-INP, Grenoble, France

INTRODUCTION

L’évolution des cartes graphiques ces dernières années se caractérise par un parallélisme massif et par la généricité de programmation.

Augmenter le parallélisme a permis une augmentation du débit du rendu à la fois par la multiplication de la fréquence d’images générées et par l’accroissement en taille de ces dernières. La généricité a facilité l’émergence de nouveaux effets de rendu en temps réel grâce à l’apparition de composants programmables comme les unités de pixellisation et de géométrie programmables (programmable pixel shaders units).

Ces deux facteurs réunis ont rendu les cartes graphiques actuelles très attractives pour réaliser des calculs intensifs dépassant le cadre du rendu visuel. La puissance de crête d’une des nouvelles cartes dépasse celle de certains supercalculateurs pour un prix de quelques centaines d’euros ! C’est l’émergence d’une nouvelle technique appelée programmation généraliste de cartes graphiques (GPGPU, General-Purpose computation on Graphics Processing Units).

Le GPGPU est soutenu par les constructeurs des cartes graphiques comme NVIDIA et ATI/AMD qui y voient un nouveau marché pour leurs produits. Ils ont introduit des langages de haut niveau et des environnements de développement facilitant l’accès aux non-spécialistes. Aujourd’hui, le calcul massivement parallèle GPGPU se développe aussi bien dans les supercalculateurs, les ordinateurs de bureau que dans l’embarqué. L’évolution des processeurs des ordinateurs s’oriente aussi vers le parallélisme. Les techniques du GPGPU d’aujourd’hui deviennent progressivement les bases de la programmation des PC de demain. Cela est déjà possible avec le langage OpenCL (Open Computing Language) qui se veut portable entre CPU (Computer Processor Unit) et GPU (Graphic Processor Unit).

Cet article donne les clefs pour comprendre comment utiliser les processeurs graphiques pour augmenter la puissance utile de calcul des ordinateurs en abordant en particulier la problématique du parallélisme. Le parallélisme impose des contraintes fortes à la programmation et aux algorithmes pour pouvoir bénéficier pleinement des architectures matérielles des GPU. Une première partie est consacrée à l’évolution des processeurs graphiques qui permettent de faire du GPGPU. Dans une deuxième partie, une description des architectures actuelles permet au lecteur de saisir les qualités et limitations des processeurs graphiques pour le calcul parallèle. La troisième partie décrit les principaux langages de programmation orientés pour le calcul des processeurs graphiques. Un exemple concret dans la quatrième partie permettra au lecteur d’apercevoir les enjeux de ces techniques et va l’aider à comprendre quel type de calcul est possible d’y être porté avec un bon retour sur investissement. La dernière partie décrit les évolutions à venir qui permettront une convergence plus forte entre CPU et GPU, ainsi que les évolutions de la couche logicielle en vue d’une standardisation de la programmation pour assurer la portabilité des développements.

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

KEYWORDS

CPU   |   GPU   |   graphics rendering   |   parallel computing   |   HPC

VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-te5990


Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Présentation
Version en anglais En anglais

5. Évolutions

5.1 Matériels

  • NVIDIA Pascal et Volta

    Les nouvelles générations de GPU voient la généralisation de la mémoire HBM (High Bandwidth Memory) empilée sur un même substrat, pour atteindre les 32 Go et 1 To/s de débit. C’est également le cas des opérateurs sur des nombres flottants en précision mixte FP16 et FP32. Pouvoir doubler les performances en faible précision 16 bits est particulièrement intéressant pour de nombreuses applications en traitement d’image et en apprentissage profond par réseaux de neurones par exemple. Cette voie est également suivie par AMD.

  • AMD Radeon 400 GPU et APU

    Une évolution majeure concerne l’intégration sur une même puce des CPU et GPU. Après la gamme Fusion, AMD développe maintenant son offre d’APU (Accelerated Processing Unit) avec une évolution vers 32 cœurs CPU et plus de 3000 cœurs GPU avec 32 Go de mémoire empilée dans le même boîtier. Les gammes APU et GPU sont ainsi appelées à se rejoindre vers 2017 pour en particulier adresser le calcul haute performance. La gamme APU actuelle équipe les consoles de jeux comme la Playstation et la Xbox.

HAUT DE PAGE

5.2 Abstractions logicielles

  • DirectX 12

    Microsoft propose son système d’exploitation Windows 10 avec la version 12 de DirectX. Cette version permet un accès direct aux ressources matérielles des GPU en mode calcul, comme par exemple l’étage de « rasterization » qui est câblé matériellement. OpenGL NextGen est un concurrent direct qui permet les mêmes accès.

  • OpenMP 4.5, OpenACC 2.5

    Après OpenACC, OpenMP introduit maintenant la prise en compte des accélérateurs comme les GPU. Un même code exprimé sous forme de boucles avec itérations indépendantes peut ainsi être déporté sur GPU avec un simple #pragma. OpenMP se charge alors de l’allocation des données sur GPU, des transferts, et de la création et lancement des noyaux exécutant le code GPU. Pour être générique sur tout type de GPU, OpenMP 4.0 repose sur le compilateur Clang/LLVM qui assure l’adaptation à la cible matérielle.

...

Cet article est réservé aux abonnés.
Il vous reste 94% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS

Lecture en cours
Évolutions
Sommaire
Sommaire

BIBLIOGRAPHIE

  • (1) - TUCKER (L.W.), ROBERTSON (G.G.) -   Architecture and applications of the connection machine.  -  IEEE Comput., vol. 21, p. 26-38 (1988).

  • (2) - TREW (A.), WILSON (G.) (eds.) (1991) -   Past, Present, Parallel : A Survey of Available Parallel Computing Systems.  -  New York : Springer-Verlag (ISBN 0-387-19664-1)

  • (3) - GUIDON (Y.) -   Soufflerie numérique. Simulation de l’écoulement de gaz dans une soufflerie.  -  Pascalissime, no 64, p. 16-42 (1996).

  • (4) - ALEXANDRESCU (A.) -   Modern C++ design : generic programming and design patterns applied.  -  Addison-Wesley, (2001).

  • (5) - NYLAND (L.), HARRIS (M.), PRINS (J.) -   Fast N-body simulation with CUDA.  -  Addison-Wesley Educational Pub.,ISBN 978-0321515261, Chapitre 31, GPU Gems 3 (2007).

DANS NOS BASES DOCUMENTAIRES

1 Sites Internet

(portails, pages personnelles, forums, listes de discussion)

HARRIS Mark General-Purpose Computation on Graphics Hardware http://gpgpu.org/ (page consultée le 20 septembre 2015). Le plus important site sur le sujet avec des actualités, forums et tutoriels.

NVIDIA Corporation CUDA Zone – The resource for CUDA developers http://www.nvidia.com/object/cuda_home_new.html (page consultée le 20 septembre 2015). Le site met à disposition une excellente documentation et des outils logiciels pour le développement d’applications utilisant CUDA et les cartes graphiques NVIDIA, ce site maintient une importante liste de références de résultats d’utilisation de cartes graphiques pour le calcul.

Advanced Micro Devices, Inc. AMD Developer Central – ATI Stream Software Development Kit (SDK) https://developer.amd.com/ (page consultée le 20 septembre 2015). Le site contient les informations et les outils nécessaires pour le développement d’applications utilisant Brook+ et les cartes graphiques ATI/AMD.

Khronos Group https://www.khronos.org/opencl/ (page consultée le 20 septembre 2015). Site web de la spécification d’OpenCL.

ArrayFire http://arrayfire.com/ (page consultée le 20 septembre 2015). Site web de la librairie ArrayFire

https://openparallel.com/multicore-world-2020/multicore-world-2019/multicore-world-2018/multicore-world-2017/multicore-world-2016/multicore-world-2015/multicore-world-...

Cet article est réservé aux abonnés.
Il vous reste 95% à découvrir.

Pour explorer cet article
Téléchargez l'extrait gratuit

Vous êtes déjà abonné ?Connectez-vous !


L'expertise technique et scientifique de référence

La plus importante ressource documentaire technique et scientifique en langue française, avec + de 1 200 auteurs et 100 conseillers scientifiques.
+ de 10 000 articles et 1 000 fiches pratiques opérationnelles, + de 800 articles nouveaux ou mis à jours chaque année.
De la conception au prototypage, jusqu'à l'industrialisation, la référence pour sécuriser le développement de vos projets industriels.

Cet article fait partie de l’offre

Technologies logicielles Architectures des systèmes

(239 articles en ce moment)

Cette offre vous donne accès à :

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques

Des services

Un ensemble d'outils exclusifs en complément des ressources

Un Parcours Pratique

Opérationnel et didactique, pour garantir l'acquisition des compétences transverses

Doc & Quiz

Des articles interactifs avec des quiz, pour une lecture constructive

ABONNEZ-VOUS