Arquitetura de GPU
Uma unidade de processamento gráfico (GPU) é um processador massivamente paralelo e orientado para o rendimento, construído a partir de muitos núcleos simples que executam milhares de threads para ocultar a latência da memória, originalmente para gráficos e agora amplamente utilizado para computação de propósito geral e aprendizado de máquina.
Definition
Uma arquitetura de GPU é um design de processador altamente paralelo composto por muitos núcleos leves agrupados em multiprocessadores que executam um grande número de threads em grupos sincronizados, otimizados para alto rendimento aritmético e ocultação de latência, em vez de velocidade de thread único.
Scope
Este tópico abrange a organização do hardware da GPU: multiprocessadores de streaming, o modelo de execução de instrução única e múltiplos threads (SIMT), warps e blocos de threads, a hierarquia de memória de registradores, memória compartilhada e memória global, e como as GPUs ocultam a latência através de multithreading massivo. Ele trata as GPUs como arquitetura paralela. Exclui extensões SIMD da CPU (processadores SIMD e vetoriais) e os frameworks de software para programação de GPUs além das implicações arquitetônicas.
Core questions
- Como as GPUs alcançam alto rendimento com muitos núcleos simples em vez de poucos complexos?
- O que é o modelo de execução de instrução única e múltiplos threads e como os warps funcionam?
- Como o multithreading massivo oculta a latência da memória?
- Como a hierarquia de memória da GPU é organizada para cargas de trabalho paralelas?
Key concepts
- multiprocessador de streaming
- instrução única e múltiplos threads (SIMT)
- warps e blocos de threads
- multithreading massivo
- ocultação de latência
- memória compartilhada, global e de registradores
- coalescência de memória
- design orientado para o rendimento
Key theories
- Ocultação de latência através de multithreading massivo
- Em vez de minimizar a latência para um único thread, uma GPU mantém milhares de threads em execução e alterna entre grupos prontos sempre que alguns param na memória, de modo que o paralelismo abundante mantém as muitas unidades aritméticas ocupadas e oculta longos atrasos de memória.
Mechanisms
Uma GPU compreende muitos multiprocessadores de streaming, cada um executando grupos de threads (warps) em sincronia sob o modelo SIMT. Os threads são organizados em blocos que compartilham memória on-chip rápida e se sincronizam localmente. O hardware programa muitos warps e alterna entre eles com custo quase zero, de modo que, quando um warp espera pela memória, outro é executado, mantendo as unidades aritméticas ocupadas; padrões de acesso à memória coalescidos maximizam a utilização da largura de banda.
Clinical relevance
As GPUs tornaram-se centrais para a computação de alto desempenho e inteligência artificial: seu design orientado para o rendimento as torna a plataforma dominante para treinar e executar redes neurais profundas, bem como para simulação científica e análise de dados. Sua arquitetura recompensa algoritmos paralelos a dados e acesso à memória coalescido, moldando a forma como o software crítico para o desempenho é escrito.
History
As GPUs evoluíram de pipelines gráficos de função fixa na década de 1990 para shaders programáveis e, em seguida, para processadores multi-core totalmente programáveis. A introdução de frameworks de computação de GPU de propósito geral no final dos anos 2000 os abriu para cargas de trabalho científicas e de dados, e seu rendimento os tornou o motor da era do aprendizado profundo a partir da década de 2010.
Debates
- Generalidade da GPU versus aceleradores especializados
- As GPUs são motores de rendimento flexíveis, mas aceleradores cada vez mais especializados (como unidades de tensor e matriz) oferecem maior eficiência para cargas de trabalho específicas; os designers ponderam a programabilidade e a ampla aplicabilidade da GPU contra a eficiência do hardware dedicado.
Key figures
- David B. Kirk
- Wen-mei Hwu
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- kirk2016
Frequently asked questions
- Por que as GPUs são tão boas para o aprendizado profundo?
- O treinamento e a execução de redes neurais consistem em grande parte em operações densas de matriz e tensor com abundante paralelismo de dados. Os muitos núcleos e a alta largura de banda de memória de uma GPU executam essas operações com um rendimento muito alto, superando em muito as CPUs de propósito geral em cargas de trabalho tão regulares e paralelas.
- O que é um warp na execução da GPU?
- Um warp é um grupo de threads (comumente 32) que executam a mesma instrução em sincronia sob o modelo SIMT. Agrupar threads em warps permite que o hardware amortize o controle de instrução em muitos elementos de dados, embora ramificações divergentes dentro de um warp reduzam a eficiência.