Calcul sur GPU et accélérateurs
Le calcul sur GPU et accélérateurs exploite des processeurs multicœurs massivement parallèles pour accélérer les charges de travail à parallélisme de données bien au-delà des capacités des CPU à usage général.
Definition
Le calcul sur GPU et accélérateurs désigne l'utilisation de processeurs multicœurs spécialisés, optimisés pour une exécution à parallélisme de données à haut débit, afin de décharger et d'accélérer les portions parallélisables d'un calcul dans le cadre d'un modèle de programmation hôte-dispositif.
Scope
Ce sujet aborde l'architecture des unités de traitement graphique (GPU) et d'autres accélérateurs en tant que machines multicœurs SIMD/SIMT orientées vers le débit ; les modèles de programmation qui les ciblent (CUDA, OpenCL et le déchargement basé sur des directives) ; les abstractions de hiérarchie de threads et de hiérarchie de mémoire (threads, warps, blocks, grids ; mémoire globale, partagée et registres) ; ainsi que les considérations de performance — occupation, coalescence mémoire et divergence — qui régissent le débit réalisable.
Core questions
- Comment le modèle d'accélérateur multicœur orienté vers le débit diffère-t-il d'un CPU à usage général ?
- Comment les calculs sont-ils exprimés sous forme de noyaux massivement parallèles sur une hiérarchie de threads ?
- Quels comportements de mémoire et d'exécution — coalescence, divergence, occupation — limitent les performances réalisables ?
Key theories
- Modèle d'exécution SIMT
- Les GPU exécutent des milliers de threads légers regroupés en warps qui s'exécutent de manière synchronisée (instruction unique, threads multiples) ; la performance dépend du maintien des warps occupés et de l'évitement de la divergence du flux de contrôle au sein d'un warp.
- Modèle hiérarchique de threads et de mémoire
- CUDA organise les threads en blocs et en grilles et expose une hiérarchie de mémoire composée de registres, de mémoire partagée rapide et de grande mémoire globale ; le mappage des données et des calculs sur cette hiérarchie est la tâche centrale pour la performance.
- Calcul sur GPU à usage général
- L'évolution des pipelines graphiques à fonction fixe vers des accélérateurs programmables à usage général a transformé les GPU en une plateforme courante pour le calcul scientifique et intensif en données.
Clinical relevance
Les accélérateurs sont les piliers des applications modernes gourmandes en calcul : l'entraînement et l'inférence en apprentissage profond, la simulation scientifique, le traitement d'images et de signaux, ainsi que la cryptographie s'appuient tous sur les GPU pour des accélérations d'un ordre de grandeur par rapport aux CPU.
History
Les GPU ont évolué du matériel graphique à fonction fixe vers des processeurs parallèles programmables ; la sortie de CUDA en 2007, décrite par Nickolls et ses collègues en 2008, a rendu le calcul sur GPU à usage général accessible, et les accélérateurs sont ensuite devenus essentiels au calcul haute performance et à l'apprentissage automatique.
Key figures
- John Nickolls
- Wen-mei Hwu
- David Kirk
- John Owens
Related topics
Seminal works
- nickolls2008
- kirk2016
- owens2008
Frequently asked questions
- Pourquoi les GPU sont-ils tellement plus rapides que les CPU pour certaines charges de travail ?
- Les GPU consacrent beaucoup plus de leurs transistors aux unités arithmétiques et exécutent des milliers de threads pour masquer la latence mémoire, échangeant la vitesse d'un seul thread contre un débit agrégé. Cela les rend excellents pour les tâches régulières et hautement parallèles en données, bien qu'ils soient mal adaptés au code avec de nombreuses branches et sensible à la latence.