Architecture des GPU
Une unité de traitement graphique (GPU) est un processeur massivement parallèle, axé sur le débit, construit à partir de nombreux cœurs simples qui exécutent des milliers de threads pour masquer la latence de la mémoire, initialement destiné aux graphiques et désormais largement utilisé pour le calcul généraliste et l'apprentissage automatique.
Definition
Une architecture de GPU est une conception de processeur hautement parallèle, composée de nombreux cœurs légers regroupés en multiprocesseurs qui exécutent un grand nombre de threads en groupes synchronisés (lockstep), optimisée pour un débit arithmétique élevé et le masquage de la latence plutôt que pour la vitesse d'un seul thread.
Scope
Ce sujet couvre l'organisation matérielle des GPU : les multiprocesseurs de flux, le modèle d'exécution à instruction unique et threads multiples (SIMT), les warps et les blocs de threads, la hiérarchie de la mémoire (registres, mémoire partagée et mémoire globale), et la manière dont les GPU masquent la latence grâce au multithreading massif. Il considère les GPU comme une architecture parallèle. Il exclut les extensions SIMD des CPU (processeurs SIMD et vectoriels) et les frameworks logiciels de programmation des GPU au-delà de leurs implications architecturales.
Core questions
- Comment les GPU atteignent-ils un débit élevé avec de nombreux cœurs simples plutôt que quelques cœurs complexes ?
- Qu'est-ce que le modèle d'exécution à instruction unique et threads multiples, et comment fonctionnent les warps ?
- Comment le multithreading massif masque-t-il la latence de la mémoire ?
- Comment la hiérarchie de la mémoire GPU est-elle organisée pour les charges de travail parallèles ?
Key concepts
- multiprocesseur de flux
- instruction unique, threads multiples (SIMT)
- warps et blocs de threads
- multithreading massif
- masquage de la latence
- mémoire partagée, globale et registres
- coalescence de la mémoire
- conception axée sur le débit
Key theories
- Masquage de la latence par multithreading massif
- Plutôt que de minimiser la latence pour un seul thread, un GPU maintient des milliers de threads en cours d'exécution et bascule entre les groupes prêts chaque fois que certains sont bloqués par la mémoire, de sorte qu'un parallélisme abondant maintient les nombreuses unités arithmétiques occupées et masque les longs délais de mémoire.
Mechanisms
Un GPU comprend de nombreux multiprocesseurs de flux, chacun exécutant des groupes de threads (warps) de manière synchronisée (lockstep) selon le modèle SIMT. Les threads sont organisés en blocs qui partagent une mémoire rapide sur puce et se synchronisent localement. Le matériel planifie de nombreux warps et bascule entre eux avec un surcoût quasi nul, de sorte que lorsqu'un warp attend la mémoire, un autre s'exécute, maintenant les unités arithmétiques occupées ; les modèles d'accès mémoire coalescés maximisent l'utilisation de la bande passante.
Clinical relevance
Les GPU sont devenus essentiels au calcul haute performance et à l'intelligence artificielle : leur conception axée sur le débit en fait la plateforme dominante pour l'entraînement et l'exécution de réseaux neuronaux profonds, ainsi que pour la simulation scientifique et l'analyse de données. Leur architecture favorise les algorithmes de parallélisme de données et les accès mémoire coalescés, façonnant la manière dont les logiciels critiques en termes de performance sont écrits.
History
Les GPU ont évolué des pipelines graphiques à fonction fixe dans les années 1990 vers des shaders programmables, puis des processeurs multicœurs entièrement programmables. L'introduction de frameworks de calcul GPU généraliste à la fin des années 2000 les a ouverts aux charges de travail scientifiques et de données, et leur débit en a fait le moteur de l'ère de l'apprentissage profond à partir des années 2010.
Debates
- Généralité des GPU versus accélérateurs spécialisés
- Les GPU sont des moteurs de débit flexibles, mais des accélérateurs de plus en plus spécialisés (tels que les unités tensorielles et matricielles) offrent une efficacité supérieure pour des charges de travail spécifiques ; les concepteurs évaluent la programmabilité et la large applicabilité des GPU par rapport à l'efficacité du matériel dédié.
Key figures
- David B. Kirk
- Wen-mei Hwu
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- kirk2016
Frequently asked questions
- Pourquoi les GPU sont-ils si efficaces pour l'apprentissage profond ?
- L'entraînement et l'exécution de réseaux neuronaux consistent en grande partie en des opérations matricielles et tensorielles denses avec un parallélisme de données abondant. Les nombreux cœurs et la bande passante mémoire élevée d'un GPU exécutent ces opérations avec un débit très élevé, dépassant de loin les CPU généralistes sur de telles charges de travail régulières et parallèles.
- Qu'est-ce qu'un warp dans l'exécution GPU ?
- Un warp est un groupe de threads (généralement 32) qui exécutent la même instruction de manière synchronisée (lockstep) selon le modèle SIMT. Le regroupement des threads en warps permet au matériel d'amortir le contrôle des instructions sur de nombreux éléments de données, bien que les branches divergentes au sein d'un warp réduisent l'efficacité.