• Drano Rauteon

GPU: Arquiteturas - PARTE 6

Neste artigo serão detalhadas mais duas microarquiteturas nVidia: a Pascal e Volta.

Antes de toda esta dissertação, um print destacando a maior mudança das Pascal em relação as Maxwell, além de, claro, uma comparação de evolução de preços ao longo de 10 anos...

Complemento 1


Ambas as arquiteturas levam momes que remetem à dois grandes estudidoosos:

A arquitetura Pascal homenageia Blaise Pascal (19 de junho de 1623 ~ 19 de agosto de 1662), que foi um matemático, físico, inventor, filósofo e escritor eteólogo católico francês;

A arquitetura Volta homenageia Alessandro Giuseppe Antonio Anastasio Volta (18 de fevereiro de 1745 ~ 5 de março de 1827), que foi um químico, físico e pioneiro da eletricidade e da potência, creditado como o inventor da pilha voltaica e o descobridor do metano.


OBSERVAÇÃO: Para entender melhor os termos ditos aqui, recomendo ler os outros artigos da série sobre GPUs, inclusive o "Arquiteturas de GPUs - PARTE 2", que trata da arquitetura Tesla e Fermi, as duas primeiras arquiteturas da nVidia a portarem Shaders Unificados.

Arquitetura Pascal (2016 ~ 2021)


Imagem 1 - Die do nVidia GP106, utilizado em várias GTX 1050 e 1060


A arquitetura foi introduzida pela primeira vez em Abril de 2016 com o lançamento do Tesla P100 (GP100), e é conhecida principalmente na série GeForce 10, começando com as GeForce GTX 1080, que usam variantes do die GP104.


Para a introdução de sua nova arquitetura Pascal aos jogadores, a Nvidia adotou a mesma abordagem de quando lançou a geração Maxwell.

A primeira GPU a integrar a família GeForce é, portanto, um chip de tamanho médio: o GP104. Após o GP100 dedicado aos aceleradores Tesla, este é o segundo chip Nvidia produzido pela TSMC no processo de fabricação FinFET Plus de 16 nm. (FF+).


Após mais de 4 anos de GPUs fabricadas em 28 nm pela Taiwan Semiconductor, a mudança para 16 nm FF+ representa uma evolução significativa que permite novos e mais vantajosos compromissos em termos de consumo de energia, desempenho e funcionalidades. As escolhas da Nvidia para este GP104 podem ser resumidas em dois pontos: altas frequências e otimizações voltadas para a realidade virtual.


Antes de entrar nos detalhes de sua arquitetura, um pequeno lembrete para situar o GP104 entre os chips gráficos lançados em meados da metade da década de 2010:

-> nVidia GP100: 15,3 bilhões de transistores para 610 mm³;

-> AMD Fiji: 8,9 bilhões de transistores para 598 mm³;

-> nVidia GM200: 8,0 bilhões de transistores para 601 mm³;

-> nVidia GP104: 7,2 bilhões de transistores para 314 mm³;

-> nVidia GK110: 7,1 bilhões de transistores para 561 mm³;

-> AMD Havaí: 6,2 bilhões de transistores para 438 mm³;

-> nVidia GM204: 5,2 bilhões de transistores para 398 mm³;

-> AMD Tonga: 5,0 bilhões de transistores para 368 mm³;

-> nVidia GK104: 3,5 bilhões de transistores para 294 mm³.


O tamanho máximo que as ferramentas de produção atuais permitem é de cerca de 600 mm³, razão pela qual corresponde às maiores GPUs, como a GP100. Com 314 mm³, o GP104 é, portanto, um GPU de tamanho médio que está diretamente alinhado com a GTX 680 (Kepler GK104) e a GTX 980 (Maxwell GM204).


Como veremos, uma GPU desse calibre em 16 nm tem as mesmas tecnologias do GM204, porém, por ter litografia menor, deixa espaço para uma GPU maior.


A mudança para 16 nm obviamente torna possível expandir a densidade dos transistores em comparação com os chips de litografia em 28 nm. No entanto, esses números não devem ser considerados, pois são mais nomes comerciais para os processos de fabricação do que medições da geometria que definem sua densidade. Assim, ao contrário do que pode ter acontecido no passado, 16 nm não permite que o número de transistores por mm³ seja quase duplicado em relação a 28 nm. Essas tecnologias são muito complexas e a densidade real é determinada por muitos parâmetros que estão além do escopo deste artigo. Aqui estão as densidades observadas nas GPUs Nvidia mais recentes:


-> GP100: 25,1 milhões de transistores por mm³;

-> GM200: 13,3 milhões de transistores por mm³;

-> GP104: 22,9 milhões de transistores por mm³;

-> GM204: 13,1 milhões de transistores por mm³.


A densidade é um pouco maior em GPUs maiores, mas isso não significa que o GP104 tenha uma infinidade a mais de transistores. Provavelmente, para lidar em parte com os custos de produção por wafer e, portanto, por mm³, que estavam em alta em 16 nm, a Nvidia explora apenas cerca de metade desse ganho potencial de transistores e está satisfeita com os resultados.


Para entender a arquitetura do GP104, alguns lembretes são necessários sobre a forma como a Nvidia esquematiza a organização interna de suas GPUs.

Em um nível alto, eles consistem em:

-> Um ou mais GPCs (Clusters de Processamento Gráfico). Cada um contém um rasterizador responsável por projetar as primitivas e dividi-las em pixels.

-> Dentro desses GPCs, encontramos um ou mais TPCs (Cluster de Processamento de Texturas). Não se deixe enganar por este nome, um resquício de arquiteturas anteriores. O TPC é hoje descrito como a estrutura que representa o Polymorph Engine, nome dado a todas as pequenas unidades fixas dedicadas ao processamento de geometria (carregamento de vértices, tesselação etc).


-> Finalmente, no nível mais baixo, esses TPCs integram um ou mais SMs (Streaming Multiprocessors) que representam o coração da arquitetura. É ao nível deles que ocorrem as unidades de cálculo, as unidades de texturização, os registradores ou mesmo a memória compartilhada útil para computação GPGPU.


Observe que para as GPUs Kepler e Maxwell, a Nvidia reservou o TPC para simplificar sua representação esquemática. Um único SM está presente por TPC para todas essas GPUs, portanto, não havia motivo para fazer distinção entre essas duas estruturas.


Como o SM de Pascal se compara ao SM de Maxwell? Uma pergunta para a qual é simples e complexo de responder, pois na verdade estamos lidando com 2 arquiteturas Pascal diferentes que qualificaremos, na falta de melhor, "Pascal G" como GeForce no caso do GP104, e "Pascal T" como Tesla no caso do GP100.


Para Pascal G, é simples: o SM é funcionalmente idêntico ao das GPUs Maxwell 2.0 (GM20x).

Dentro de um Maxwell ou Pascal SM, encontramos uma memória compartilhada (controlada pelo desenvolvedor) e várias partições organizadas em pares. Cada partição contém, entre outras coisas, sua própria lógica de escalonamento, seus registradores, uma unidade vetorial de 32 bits de 32 vias para instruções simples (que representa 32 núcleos em termos de marketing) e uma unidade SFU vetorial de 8 vias para determinadas instruções complexas. Cada par de partições compartilha 4 unidades de texturização e um cache L1 de 24 kB.

Para representar os SMs, modificamos os diagramas da Nvidia para aproximar a realidade, ao melhor do nosso conhecimento atual das diferentes arquiteturas:

Diagrama 1 - Veja o Capítulo x desta série e compare o diagrama com o Maxwell GM204

Quando a Nvidia revelou a arquitetura Pascal e o GP100, por outro lado, pudemos descobrir uma grande reformulação do SM: ele vê seu tamanho reduzido pela metade, mas ganha muitas unidades de cálculo em precisão dupla (FP64) e se beneficia de dois arquivos de registro maiores (128 kB em vez de 64 kB por partição). A memória compartilhada dos SMs GP100 vai de 96 para 64 kB, mas só está associada à metade dos núcleos, o que na verdade indica um aumento relativo de 33%.

Diagrama 2 - Compare este SM do GP100 com o SM do GP104


Essas representações das arquiteturas são, acima de tudo, visões da mente projetadas pelo departamento de marketing técnico. Portanto, provavelmente é correto olhar as coisas de um ângulo mais simples e imaginar um SM com 4 partições para Pascal T, mas com memória compartilhada estendida para 128 kB e largura de banda dobrada.


De qualquer forma, Pascal T e Pascal G diferem em vários pontos. Primeiro, o poder de computação de precisão dupla é metade da precisão simples no primeiro, enquanto cai para uma taxa de transferência de 1/32 no segundo. Então a quantidade de memória disponível por partição é dobrada no Pascal T, o que permite manter uma boa ocupação das unidades de cálculo quando são executados programas complexos (e que, por exemplo, precisam de muitos registros). São dois pontos pouco importantes no contexto dos videogames e que justificam, portanto, esta diferença ao nível das arquitecturas do GP100 e do GP104.


Finalmente, há uma terceira diferenciação importante no nível SM que ainda não abordamos: cálculo de meia precisão, ou FP16. As unidades de cálculo FP32 e INT (os tais CUDA Cores) do Pascal T suportam um conjunto de instruções adicionais que, em vez de uma operação de 32 bits, agrupam 2 operações do tipo FP16. O que potencialmente dobra o poder computacional para algoritmos que podem ser satisfeitos com precisão limitada (este é o caso do deep learning) e quando o compilador consegue tirar o máximo proveito desse tipo de instrução.

Alguns podem ter pensado que isso implica suporte generalizado de meia precisão para GPUs Pascal, para aumentar o desempenho e/ou reduzir o consumo de energia. É um compromisso que algumas GPUs móveis fazem, incluindo o Tegra da Nvidia, mas não esta aqui. O suporte FP16 para Pascal T é estritamente específico para computação de propósito geral (GPGPU) e, portanto, não está presente na Pascal G.


Depois de revisar o coração da arquitetura Pascal G e T, é hora de olhar para o GP100 e para o GP104 como um todo. Aqui estão os diagramas tradicionais comunicados pela Nvidia:

Diagrama 3 - GP100 idealizado pela equipe de Marketing Técnico


Vamos focar mais na descrição do GP104:

Diagrama 4 - GP104 idealizado pela equipe de Marketing Técnico


Podemos observar 4 GPCs, cada um contendo 5 SMs. Uma organização interna semelhante à do GM204, também equipada com 4 GPCs, mas que contempla apenas 4 SMs.

Cada SM dessas GPUs integra 128 unidades de cálculo de 32 bits (os "núcleos CUDA"), o que nos dá um total de 2560 para o GP104 contra 2048 para o GM204, um aumento de 25%.

As unidades de texturização, 8 por SM, progridem na mesma proporção. Para o resto, encontramos o mesmo cache L2 de 2 MB, bem como o mesmo conjunto de 64 ROPs associados a um barramento de memória de 256 bits distribuído por 8 controladores de 32 bits.


Aqui estão as especificidades de algumas GPUs para comparação:

-> nVidia Kepler GK110: 5 GPCs, 15 SMs, 2880 FP32, 48 ROPs, barramento de 384 bits, 1536 kB de L2;


-> nVidia Kepler GK104: 4 GPCs, 8 SMs, 1536 FP32, 32 ROPs, barramento de 256 bits, 512 kB de L2;


-> nVidia Maxwell GM200: 6 GPCs, 24 SMs, 3072 FP32, 96 ROPs, barramento de 384 bits, 3072 kB de L2;


-> nVidia Maxwell GM204: 4 GPCs, 16 SMs, 2048 FP32, 64 ROPs, barramento de 256 bits, 2048 kB de L2;


-> nVidia Pascal GP100: 6 GPCs, 60 SMs, 3840 FP32, 128 ROPs, barramento de 4096 bits, 4096 kB de L2;


-> nVidia Pascal GP104: 4 GPCs, 40 SMs, 2560 FP32, 64 ROPs, barramento de 256 bits, 2048 kB de L2.


Em suma, 25% mais unidades de cálculo e texturização, sem aumento no número de ROPs ou na largura da interface de memória. Visto assim, o GP104 e este primeiro uso de 16 nm não são realmente impressionantes. Isso, porém, sem contar com um ponto crucial: as frequências!


A nVidia informou que não trabalhou particularmente nas frequências do GP100, que simplesmente se beneficia dos ganhos automáticos ligados a 16 nm, mas a situação é bem diferente para o GP104. A nVidia explica que revisou todos os circuitos da GPU para retrabalhar qualquer ponto fraco que estivesse impedindo o aumento do clock. O suficiente para poder oferecer uma frequência turbo de referência de 1733 MHz na GTX 1080, ou seja, um grande salto de 40% em relação aos 1216 MHz da GM204 que equipa a GTX 980.


Se combinarmos as unidades de cálculo (+25%) e a frequência (+40%), nos dá um aumento muito mais interessante na potência bruta em comparação com o GM204: +75%.

Resta um barramento de memória limitado a 256 bits, mas aqui também a marca do olho verde está aumentando a frequência e retrabalhando os circuitos de suas interfaces introduzindo um novo tipo de memória: a GDDR5X.


CURIOSIDADE: Enquanto o GDDR5 atinge o limite de 8 Gbps, o GDDR5X escalou ao longo do tempo, gradualmente, de 10 a 16 Gbps. Para atingir esse rendimento, o GDDR5X suporta um novo modo de transferência de dados do tipo QDR (Quad Data Rate), permitindo que o rendimento seja duplicado em igual frequência com, em troca, uma pré-busca e acessos que também são duplicados em 16n e 512 bits. Dois pontos que não são problemas reais para as GPUs, pois podem aproveitar um barramento mais rápido e com frequência reduzida para as células de memória, o que é benéfico em termos de consumo.


Na GTX 980, o GM204 está associado a 7 Gbps GDDR5, mas na GTX 1080, o GP104 se beneficia dos primeiros módulos GDDR5X de 10 Gbps, um ganho de 42%. E isso não é tudo, a mudança para 16 nm permite que a Nvidia torne seu sistema de compressão mais complexo sem perda do framebuffer. Mais especificamente, a codificação de cores diferencial, também conhecida como 'compressão delta', está em alta novamente.

Vale lembrar que seu princípio básico consiste em não registrar diretamente a cor, mas sua diferença em relação a outra que serve de referência. Obviamente, isso só é útil quando a diferença entre duas cores é pequena o suficiente, de modo que essa informação represente menos bits do que a própria cor.

Imagem 2 - Sistema de compressão de dados da nVidia


A arquitetura Pascal melhora a compactação 2:1 primeiro, no sentido de que ela se encaixa em mais casos. Em seguida, um novo modo de compactação 4:1 aparece e é usado quando a diferença de cor é muito baixa. Finalmente, um modo 8:1 permite combinar a compressão clássica de blocos de 2x2 pixels de cor idêntica com a compressão delta 2:1.

Gráfico 1


Uma redução significativa é notada na largura de banda de memória necessária por quadro em comparação com as GPUs Maxwell, o que transforma essas otimizações em um aumento de 20% na largura de banda efetiva. Acoplado ao GDDR5X 10 Gbps, o GP104 da GTX 1080 beneficiaria assim de um aumento total da sua largura de banda efetiva de 70%, o que permite manter o equilíbrio em relação ao seu poder computacional.

Para demonstrar que sua tecnologia realmente tem um impacto no jogo, na época, a Nvidia fornece screenshots de Project Cars em que as áreas comprimidas são representadas em fúcsia:

Imagem 3 - O Marketing da nVidia para anunciar seu sistema de compressão


Deve-se notar que essa melhoria na compactação sem perdas também permite reter mais dados no cache L2 e reduzir o tamanho de certas transferências entre este e os SMs, o que pode beneficiar o desempenho.


Ao longo de sua vida, a arquitetura Pascal teve vários dies diferentes produzidos além dos dois mais parrudos detalhados aqui. São eles:

→ GP102;

→ GP104; → GP104B; → GP106; → GP106B; → GP107;

→ GP107B;

→ GP108;

→ GP108B;

→ e GP10B.


Foram muito mais versões do que as duas gerações da arquitetura Maxwell juntas.


CODIFICAÇÃO e DECODIFICAÇÃO de VÍDEO


A arquitetura Pascal implementa a quarta geração do NVENC, que incorpora a codificação de hardware HEVC Main10 de 10 bits. Também duplica o desempenho de codificação de 4K H.264 e HEVC quando comparado com a geração anterior do NVENC. Suporta também HEVC 8K, subamostragem de croma 4:4:4, codificação sem perdas e deslocamento adaptativo de amostra (SAO).

O Nvidia Video Codec SDK 8 adicionou o recurso de previsão ponderada exclusiva para Pascal (baseado em CUDA). A previsão ponderada não é suportada se a sessão de codificação estiver configurada com quadros B (H.264).

Não há suporte para B-Frame para codificação HEVC e o tamanho máximo de CU é 32×32.


CURIOSIDADE: A NVIDIA GT 1030 e a Mobile Quadro P500 são chips GP108 que não implementam o codificador NVENC.

Em gráficos de laptop, os gráficos NVIDIA MX não incluem NVENC, pois são baseados em um chip GM108 da geração Maxwell ou GP108 da geração Pascal. O GeForce MX350 é um chip GP107 cujo codificador NVENC é desabilitado durante a fabricação.


Quanto ao decodificador de vídeo, a nVidia utiliza o PureVideo HD, um bloco de hardware dedicado ao processamento multimídia. O PureVideo possui várias gerações, e a Pascal utiliza a PV de oitava geração.

A oitava geração do PureVideo HD adiciona decodificação de hardware completa do HEVC Versão 2 Main 12 e aumenta a resolução para decodificação VP9 e HEVC para 8K, incluindo 8K UHDTV e até 8K fulldome 8192x8192.

As GPUs Maxwell de primeira geração implementaram a reprodução HEVC usando uma solução de decodificação híbrida, que envolvia tanto a CPU quanto os shaders unificados da GPU. A implementação híbrida é significativamente mais lenta que o hardware dedicado no mecanismo de vídeo do VP8.


CURIOSIDADE: A oitava geração PureVideo HD às vezes é chamada de "PureVideo HD 8" ou "VP8", embora esta não seja uma designação oficial da Nvidia. Esta geração de PureVideo HD corresponde ao Nvidia Feature Set H (ou "VDPAU Feature Set H").

 

Arquitetura Volta (2017 ~ 2020)


Complemento 2


Nesta arquitetura, veremos uma nova denominação dos blocos de hardware que compõem o 'miolo' dos SMs. Isto pois, se antes um CUDA Core era a representação da combinação de uma unidade operadora de ponto flutuante de 32 bits (FP32) e uma de inteiros (INT), tal qual mostra este diagrama da arquitetura Fermi...

Diagrama 5 - O que há dentro do famigerado CUDA Core


...agora a equipe de Marketing Técnico começou a adotar a exibição separada de ambos, talvez numa tentativa que de se renovar e aumentar a robustez do produto na propaganda, já que "CUDA Core" não era mais tanta novidade assim em meados de 2017. Observe o diagrama do SM da arquitetura Volta:

Diagrama 6 - O novo design feito pelo Marketing Técnico abandona o bloco "CUDA Core" em prol da exibição separada de seus componentes


Isto significa que cada bloco "INT" e cada bloco "FP32" forma 1 CUDA Core, ou seja, cada SM Volta possui 64 CUDA Cores.

Lembre-se que o SM continua com quatro partições agrupadas duas-a-duas pelos Operand Collectors, que foram eliminados deste diagrama pelo Marketing Técnico da nVidia, muito provavelmente pelo protagonismo dos Tensor Cores... :v


O principal chip desta arquitetura é o Volta GV100. Veja seu diagrama abaixo:

Diagrama 7 - Die Volta GV100, incluindo os quatro chips HBM2 do interposer


O interposer é o que, neste caso, reúne o die e os chips de RAM, que então é colocado sob um substrato, quer posteriormente é soldado na PCB:


Imagem 4 - O interposer é todo o quadro preto sob o substrato que reúne o die da GPU e os chips HBM2


Note que são 84 SMs distrubuídos em 6 GPCs, totalizando 5.376 CUDA Cores. No entanto, apenas 5.120 deles são utilizáveis. Ou seja, 256 núcleos não utilizados, o que dá 4 SMs / 2 TPCs.


Primeiro, temos o NVIDIA Tesla V100 que é construído usando a GPU Volta GV100, que suporta DirectX 12 (Nível de Recurso 12_1). Para aplicativos de computação GPU, OpenCL versão 3.0 e CUDA 7.0 podem ser usados. Possui também 320 unidades de mapeamento de textura e 128 ROPs.

A GV100 consiste em 21,1 bilhões de transistores que são empacotados em uma matriz de 815 mm³. A placa Tesla V100 usa especificamente 80 dos 84 SMs disponíveis na GPU GV100. Isso é para permitir rendimentos mais altos sem a necessidade de sacrificar muito dos recursos de computação. Com os 80 SMs a bordo da GPU, obtemos 5120 núcleos CUDA, 2560 núcleos de precisão dupla e 640 núcleos tensores. Há também 16 GB de HBM2 a bordo do chip, e por chip, estamos nos referindo ao interposer que abriga a GPU e a VRAM.


O segundo e último chip desta arquitetura, o GV10B é feito usando um processo de produção de 12 nm na TSMC. Com um tamanho de matriz de 350 mm³ e uma contagem de transistores de 9 bilhões, não deixa de ser parrudo. O GV10B suporta DirectX 12 (Nível de Recurso 12_1). Para aplicativos de computação GPU, OpenCL versão 1.2 e CUDA 7.2 podem ser usados. Possui 512 unidades de sombreamento, 32 unidades de mapeamento de textura e 16 ROPs. Também estão incluídos 64 núcleos tensores que ajudam a melhorar a velocidade dos aplicativos de aprendizado de máquina.


Os Tensor Cores


Aqui explicamos de forma resumida a primeira geração dos núcleos Tensores, capazes de operar com mais eficiência quando se trata de Aprendizagem Profunda.


Em primeiro lugar, precisamos conceituar Inteligência Artificial. Este é um termo mais amplo, um ramo da ciência da computação, no qual se desenvolvem pesquisas para encontrar soluções que simulem a capacidade Humana de raciocínio.

Machine Learning (ou também, “Aprendizado de Máquina”), é o uso de conceitos da IA, por meio de algoritmos, para fazer com que as máquinas consigam organizar dados, identificar padrões e, por meio das variações de inputs, aprender com esses modelos, sem necessariamente haver uma pré-programação. Basicamente é ela que torna a Inteligência Artificial real, isto pois a possibilidade de aprendizado com os inputs oferecidos é bem semelhante ao processo de raciocínio Humano.

Pense no método científico, no qual observamos padrões para criarmos modelos que expliquem a realidade. A partir do momento que há um desvio, retomam-se pesquisas para encontrar os padrões novos estabelecidos e assim sucessivamente. É exatamente isso que o Machine Learning, por meio de seus algoritmos, propicia para as máquinas. Dentro deste conceito, temos o Deep Learning (ou “Aprendizagem Profunda”). Em um nível mais profundo, com algoritmos de alto nível, as máquinas passam a agir de forma similar a rede neural do cérebro Humano. Isso é possível por meio da criação do princípio de redes neurais artificiais, que já são estudadas desde a década de 1950.

A ideia é que os dados sejam submetidos a diversas camadas de processamento não lineares, tal como ocorre na rede de neurônios. Eles são capazes de reconhecer imagens e falas, conseguem processar a linguagem Humana e realizam tarefas extremamente complexas sem a intervenção de pessoas no processo.


Em resumo, a Aprendizado de Máquina é um subcampo da Engenharia e da Ciência da Computação que evoluiu do estudo de reconhecimento de padrões e da teoria do aprendizado computacional em Inteligência Artificial. Isto significa que o Aprendizado de Máquina é um dos 'pilares' da IA. Jà a Aprendizagem Profunda é um ramo de Machine Learning baseado em um conjunto de algoritmos que tentam modelar abstrações de alto nível de dados, que diz respeito a aprendizagem profundas com o uso de redes neurais para melhorar as coisas, tais como reconhecimento de fala, visão computacional e processamento de linguagem natural.


CURIOSIDADE: O Deep Learning é a tecnologia base para ferramentas como o Google Translate (Google Tradutor) e a Cortana (assistente personalizado da Microsoft), por exemplo. Em suma, com enorme quantidade de poder computacional, as máquinas podem agora reconhecer objetos e traduzir voz em tempo real. O Deep Learning, portanto, torna finalmente a Inteligência Artificial de fato inteligente e aplicável.


Tecnicamente falando, o Deep Learning faz o “treinamento” de um modelo computacional para que ele possa decifrar a linguagem natural. O modelo relaciona termos e palavras para inferir significado, uma vez que é alimentado com grandes quantidades de dados.

Em geral, as máquinas já são previamente “ensinadas” a ler os documentos e podem responder a questões colocadas sobre o seu conteúdo, no entanto, suas bases de conhecimento normalmente estão limitadas pelo tamanho dos arquivos. Como a quantidade de algorítimos online não para de crescer, a abordagem Deep Learning vem para fazer com que os sistemas possam fazer uso de um maior número de linguagem natural, concedendo-lhe uma compreensão mais profunda de temas universais.

Tradicionalmente, a qualidade dos algoritmos depende muito da representação dos dados em certas características (as chamadas features). Assim, Feature Engineering e pré-processamento consomem grande parte dos esforços dos especialistas e são específicos para cada domínio — na análise de imagens, por exemplo, é comum fazer o pré-processamento com algoritmos de detecção de fronteiras (os chamados edges) para facilitar a identificação de objetos.

Já os algoritmos do tipo Deep Learning têm uma abordagem inovadora, pois dispensam grande parte desse pré-processamento e geram automaticamente propriedades invariantes em suas camadas hierárquicas de representação.

Ao usar métodos baseados em Deep Learning, cientistas de dados, engenheiros e desenvolvedores de softwares têm conseguido ótimos resultados em diferentes aplicações (visão computacional, reconhecimento de voz e processamento de linguagem, especialmente). Usando várias camadas de processamento de dados não lineares, eles conseguem obter uma representação complexa e abstrata dos dados de forma hierárquica.

Dados sensoriais (pixels de imagens, por exemplo) são alimentados a uma primeira camada, sendo que a saída de cada uma delas torna-se a entrada da camada seguinte. Logo, o empilhamento de várias faixas desses “neurônios” é a ideia básica dos algoritmos do tipo Deep Learning.


Vendo este futuro eminente, a nVidia viu a necessidade de aprimeorar o hardware de suas GPUs, que já trabalhavam muito bem como Computação de Propósito Geral. Ao invés de ampliar de forma exponencial a quantidade de núcleos CUDA, que operam tanto com Inteiros e Pontos Flutuantes de 32 bits, ela criou os Tensor Cores, sem o hardware para valores INT (que aqui não são muito atilizados) e capazes de trabalharem de forma 'natural' com FP16 e FP32, diferente dos CUDA Cores da Pascal P100, que como dito anteriormente neste texto, operavam com FP16 apenas por terem um conjunto de instruções dedicado, permitindo seu uso também para aplicações de IA.

A criação de tais núcleos dedicados à precisão mista (FP16 e FP32) permitiu um aumento exponencial do desempenho em Deep Learning.

Vídeo 1 - GIF de comparação entre Pascal T e Volta, retirado do site da nVidia


No Volta GV100, cada Tensor Core executa 64 operações FMA de ponto flutuante por clock, e oito Tensor Cores em um SM executam um total de 512 operações FMA (ou 1024 operações individuais de ponto flutuante) por clock.

Os Tensor Cores da Tesla V100 oferecem até 125 TFLOPS para aplicações de treinamento e inferência.

Os Tensor Cores fornecem TFLOPS de pico até 12x mais altos no Tesla V100 que podem ser aplicados ao treinamento Deep Learning em comparação com o uso de operações FP32 na Pascal GP100. Para inferência de aprendizado profundo, os Tensor Cores fornecem TFLOPS de pico até 6x mais altos em comparação com as operações FP16 padrão no GP100.

As operações de multiplicação de matriz-matriz (GEMM) estão no centro do treinamento e inferência da rede neural e são usadas para multiplicar grandes matrizes de dados de entrada e pesos nas camadas conectadas da rede.


Para aplicativos que usam multiplicação de matriz de precisão única (FP32), o Tesla V100 com CUDA 9.0 oferece desempenho até 1,8x maior do que o Tesla P100 com CUDA 8.0.

Para multiplicação de matriz com entradas de meia precisão (FP16) em operações de treinamento e inferência, os Tensor Cores de precisão mista da Volta aumentam o desempenho em mais de 9x em comparação com os singelos CUDA Cores da P100.


Os Tensor Cores e seus caminhos de dados associados são projetados sob medida para aumentar drasticamente a taxa de transferência de computação de ponto flutuante com alta eficiência energética.

Cada Tensor Core opera em uma matriz 4x4 e realiza a seguinte operação:


Onde:

-> A, B, C e D são matrizes 4x4.


As entradas A e B são matrizes FP16, enquanto as matrizes de acumulação C e D podem ser matrizes FP16 ou FP32. Observe a próxima figura:


Os Tensor Cores operam em dados de entrada FP16 com acumulação de FP32. A multiplicação de FP16 resulta em um produto de precisão total que é então acumulado usando a adição de FP32 com os outros produtos intermediários para uma multiplicação de matriz 4x4x4. Observe a figura seguinte:

Diagrama 8 - Funcionamento dos Tensor Cores


Na prática, os Tensor Cores são usados ​​para realizar operações de matriz 2D ou dimensional muito maiores, construídas a partir desses elementos menores.


Os núcleos Tensores Volta são acessíveis e expostos como Warp-Level Matrix Operations na API CUDA 9 C++. A API expõe cargas de matrizes especializadas, multiplicação e acumulação de matrizes e operações de armazenamento de matrizes para usar com eficiência os Tensor Cores de um programa CUDA-C++.

No nível CUDA, a interface de nível warp assume matrizes de tamanho 16x16 abrangendo todos os 32 threads do warp. Além das interfaces CUDA-C++ para programar Tensor Cores diretamente, as bibliotecas cuBLAS e cuDNN foram atualizadas para fornecer novas interfaces de biblioteca para fazer uso de Tensor Cores para aplicativos e estruturas de aprendizado profundo.

A NVIDIA trabalhou com muitas estruturas populares de aprendizado profundo, como Caffe2 e MXNet, para permitir o uso de Tensor Cores para pesquisa de aprendizado profundo em sistemas baseados em GPU Volta. A NVIDIA esteve trabalhando para adicionar suporte para Tensor Cores em outras estruturas também, afinal a Ada Lovelace está chegando e os Tensor Cores indo para a quarta geração.


CODIFICAÇÃO e DECODIFICAÇÃO de VÍDEO


A arquitetura Volta implementa a quinta geração do NVENC, que possui estrutura e desempenho muito semelhante ao NVENC da Pascal. Ele não oferece suporte para B-Frames HEVC.


CURIOSIDADE: Além da Volta, o NVENC "5.0" foi implementado em algumas GPUs da arquitetura Turing. Neste caso, em GPUs móveis, como ocorre com os outros gráficos da série GeForce MX, o GeForce MX450 não suporta NVENC, pois é um chip TU117 cujo codificador de hardware é permanentemente desativado em sua fabricação.


Quanto ao decodificador de vídeo, a nVidia utiliza o PureVideo HD, um bloco de hardware dedicado ao processamento multimídia. O PureVideo possui várias gerações, e a Volta utiliza a PV de nona geração.

Assim como no NVENC, não há diferenças notáveis neste quesito entre produtos Pascal e Volta.


CURIOSIDADE: A nona geração PureVideo HD às vezes é chamada de "PureVideo HD 9" ou "VP9", embora esta não seja uma designação oficial da Nvidia. Esta geração de PureVideo HD corresponde ao Nvidia Feature Set I (ou "VDPAU Feature Set I").

Aqui vão alguns detalhes extras sobre as arquiteturas estudadas neste capítulo...


Comparação da linha Tesla

Vamos comprar várias arquiteturas implementadas em placas Tesla no decorrer dos anos:

Tabela 1 - Comparação entre a linha de placas gráficas Tesla, que utilizam os chips mais poderosos de cada geração


Quanto às capacidades computacionais:

Tabela 2 - Comparação de capacidades computacionais entre chips aplicados em placas Tesla


O tal do NVLink


À medida que a computação acelerada por GPU aumentou em popularidade, mais sistemas multi-GPU estão sendo implantados em todos os níveis, de estações de trabalho a servidores e supercomputadores. Muitas configurações de sistema de 4 e 8 GPUs agora são usadas para resolver problemas maiores e mais complexos.

Vários grupos de sistemas multi-GPU estão sendo interconectados usando InfiniBand® e Ethernet de 100 Gbps para formar sistemas muito maiores e mais poderosos.

A proporção de GPUs para CPUs também aumentou. O supercomputador mais rápido de 2012, o Titan, localizado no Oak Ridge National Labs, implantou uma GPU GK110 por CPU. Hoje, duas ou mais GPUs são comumente emparelhadas por CPU à medida que os desenvolvedores expõem e aproveitam cada vez mais o paralelismo disponível fornecido pelas placas gráficas em seus aplicativos. À medida que essa tendência continua, a largura de banda PCIe no nível do sistema multi-GPU se torna um gargalo maior.

Para resolver esse problema, o Tesla P100 apresenta a nova interface de alta velocidade da nVidia, a NVLink, que fornece transferências de dados GPU para GPU em até 160 GB/s de largura de banda bidirecional — 5x a largura de banda do PCIe 3.0 x16. O próximo diagrama mostra o NVLink conectando oito aceleradores Tesla P100 em uma topologia de malha cúbica híbrida:

Diagrama 9 - Exemplo de aplicação do NVLink


O NVLink oferece desempenho significativamente maior para configurações de sistema GPU-para-GPU e GPU-para-CPU em comparação com o uso de apenas interconexões PCIe. O Tesla V100 apresenta a segunda geração do NVLink, que oferece velocidades de link mais altas, mais links por GPU, masterização de CPU, coerência de cache e melhorias de escalabilidade.


CURIOSIDADE: O NVLink é uma espécie de rede Mesh. Uma rede Mesh (ou simplesmente Meshnet) é uma topologia de rede local na qual os nós de infraestrutura (ou seja, pontes, switches e outros dispositivos de infraestrutura) se conectam diretamente, dinamicamente e não hierarquicamente a tantos outros nós quanto possível e cooperam entre si para rotear com eficiência os dados de e para os clientes.


O gráfico abaixo mostra o desempenho de várias cargas de trabalho, demonstrando a escalabilidade de desempenho que um servidor pode alcançar com até oito GPUs GP100 conectadas via NVLink:

Gráfico 2


OBSERVAÇÃO: Esses números são medidos em GPUs P100 de pré-produção.


CURIOSIDADE: A geração Pascal, de 2016, foi a primeira a implementar o NVLink com as Pascal T, porém, uma das últimas a implementar o SLI (Scalable Link Interface), isso com as Pascal G. O SLI era um meio super comum de interconectar duas ou mais GPUs para ampliar o desempenho de microcomputadores domésticos, mas que passou a ficar de lado com a escalada de GPUs cada vez mais parrudas.


O NVLink é um protocolo de comunicação baseado em fio para intercomunicação de chips em curto alcance que pode ser usado para transferências de dados e códigos de controle entre CPUs e GPUs e ou somente entre GPUs. O NVLink especifica uma conexão ponto a ponto com taxas de dados de 20, 25 e 50 Gbit/s (v1.0, v2.0 e v3.0, respectivamente) por par diferencial. Oito pares diferenciais formam um "sub-link" e dois "sub-links", um para cada direção, formam um "link".

A taxa de dados total de um sublink é de 25 GB/s e a taxa de dados total de um link é de 50 GB/s. Cada GPU V100 suporta até seis links. Assim, cada GPU é capaz de suportar até 300 GB/s em largura de banda bidirecional total. Os produtos NVLink lançados até o momento se concentram no espaço de aplicativos de alto desempenho.

Anunciado em 14 de Maio de 2020, o NVLink 3.0 aumenta a taxa de dados por par diferencial de 25 Gbit/s para 50 Gbit/s enquanto reduz pela metade o número de pares por NVLink de 8 para 4. Com 12 links para uma GPU A100 (arquitetura Ampere), isso traz a largura de banda total para 600 GB/s. O nVidia Hopper (arquitetura Tremonha) possui 18 links NVLink 4.0, permitindo um total de 900 GB/s de largura de banda.


Em resumo, tal interface proprietária é como uma intercomunicação PCI Express, que usa pares diferenciais de dados, par diferencial para Clock de referência, permite comunicação bidirecional (Full Dullex), porém, traz um sistema de sinalização NVHS (nVidia High Speed), com especificações diferentes do LVDS e demais sistemas comuns.


Para saber mais sobre pares diferenciais e sistemas de sinalização, CLIQUE AQUI!

Para saber mais sobre o PCI Express, comece CLICANDO AQUI!


Conteúdo extra


Aqui vão PDFs da nVidia com detalhes sobre as Tesla V100 e P100, que também serviram de fontes para este artigo:

nVidia Tesla P100
.pdf
Download PDF • 3.23MB

nVidia Tesla V100
.pdf
Download PDF • 3.85MB

Propaganda - Arquitetura Volta
.pdf
Download PDF • 522KB

E este artigo desvendou mais duas arquiteturas da nVidia. No próximo Capítulo vamos continuar a estudar a arquitetura GCN (Graphics Core Next), da AMD.

Se encontrou alguma inconsistência, quer mandar alguma sugestão, elgio ou algum complemento a este texto, não deixe de entrar em contato conosco pelo e-mail hardwarecentrallr@gmail.com.

 

FONTES e CRÉDITOS


Texto: Leonardo Ritter.


Diagramas e imagens: GPU-Z; nVidia; Leonardo Ritter.


Fontes: GPU-Z, hardware.fr; nVidia; Gaea; Adrenaline; Meio-Bit; Wikipedia (Somente artigos com fontes verificadas!).

42 visualizações