São os Tflops da Nvidia mais poderosos que os da AMD?

Claro que não! Um flop é um flop sejam em que sistema for. O que depois varia é a forma como eles são aproveitados.

Definição

O que é um flop? Flop é uma unidade que é independente de arquitecturas ou sistemas., Significa floating point operation, ou operação de virgula flutuante. Basicamente o que isto quer dizer é que 1 flop é uma operação matemática, e ao ser de virgula flutuante, ela pode incluir qualquer tipo de número.

Antigamente os processadores distinguiam-se pela presença ou ausência de um seu co-processador matemático. E sem eles, os processadores eram basicamente rápidos a realizar operações com números inteiros, como por exemplo, 2+2. Mas quando eles envolviam números com virgula, como 2.1 + 2.1, eles tinham de dividir isto em duas operações de inteiros, e calcular 2+2 e 1+1, sendo que num caso como estes, se a segunda operação passasse 10 o 1 tinha ainda de ser somado na primeira conta.

Eis um exemplo:

2,6+2,6 teria de ser feito somando 2+2, e 6+6. Aqui teriamos 4 e 12, o que implicaria que 1 teria de ser somando ao 4, e então o valor seria 5.2.



Estas operações adicionais gastavam processamento. E eis que surgem os co-processadores matemáticos que aplicavam cálculo matemático de uma só vez qualquer número, melhorando assim e muito, a eficiência do sistema.

Rapidamente este tipo de operações tornou-se essencial, e o que antes eram meros co-processadores, rapidamente se tornou a base de tudo. As operações de virgula flutuante tornaram-se o standard e é por elas que se mede atualmente a capacidade de cálculo de um sistema. O flop é então uma operação matemática aplicada a um número não inteiro (com virgula ou ponto).

Por aqui se percebe que um flop é um flop. Não depende de sistemas, não depende de arquitecturas, é igual seja onde for!

Tflops é uma medida de capacidades das unidades de processamento matemático de um sistema, no caso dos GPUs, as ALUs, sendo que o T signidica Tera e o s significa por segundo. Assim 1 Tflops significa 1000000000000 operações matemáticas por segundo.

Mas se é assim, porque não devemos comparar Flops em arquitecturas diferentes?

Bem, a cada nova revisão de uma arquitectura, e isto é algo que ainda é mais notório em arquitecturas diferentes, criadas com conceitos e ideologias diferentes, são acrescentados novos tipos de suporte destinados a melhorar a eficiência do sistema. Basicamente o que acontece é que notando-se que há determinadas sequências de operações vulgarmente usadas em jogos ou programas, o hardware passa a possuir formas de optimizar essas sequências, se possível diminuindo ao máximo o número de operações matemáticas necessárias para o resultado final. Tal permite que a situação possa passar a ser feita de uma forma standarizada, optimizada e se possível até acelerada, dispensando o envio de comandos intermédios ao se definir pura e simplesmente o que se quer fazer, logo de início.

Nas arquitecturas diferentes isto é exponenciado ao máximo. Basicamente cada sistema é criado de forma diferente, e com optimizações internas, mesmo que semelhantes, implementadas de forma diferente. E nesse sentido o significado do Flop como unidade comparativa, perde-se.

Por exemplo, um teórico CPU com alguns Ghz e  com 500 Gflops pode ser mais lento do que um mero processador dedicado a uma função especifica que corre a apenas com alguns Mhz e com uma capacidade de apenas alguns Mflops. É fácil para alguns mais ligados à informática e com alguns anos de experiência em cima, perceber isso, basta relembrar quando um Pentium 4 a 3 Ghz era incapaz de reproduzir um video em Full HD, algo que pequenos processadores dedicados a 90 Mhz faziam na perfeição.

Basicamente, este é o caso mais flagrante. A optimização desses pequenos chips para essas funções especificas tornam a comparação dos flops irrelevantes. Basicamente o P4 seriam mais capaz, e mais potente, mas a optimização interna não lhe permite que o seja naquele tipo de operação específica.

Mas então os Tflops da Nvidia são ou não superiores aos da AMD

Num GPU os Tflops dizem respeito apenas a operações realizadas pelas ALU. São uma excelente medida para definir a capacidade de computação genérica de um GPU!

Por esse motivo, um GPU da AMD com 12 Tflops será mais capaz em computação genérica do que um Nvidia, com, por exemplo, 10 Tflops!



Mas então, porque não vemos isso em jogos? E os GPUs da Nvidia com menos Tflops batem os da AMD.

A resposta é mais básica do que pode parecer. Apesar da capacidade bruta da AMD, estamos a falar de processamento genérico das ALUs. Nesse campo, por serem as que mais Tflops apresentam, as ALUs da AMD, sejam elas mais ou menos eficientes do que as Nvidia, dominam o mercado.

Mas essa capacidade de processamento é excelente para uso do GPGPU, mas menos relevantes no uso do GPU. Ou seja, se o GPGPU pode fazer processamento paralelo, a parte gráfica é tratada pelo GPU, e para o GPU as ALUs são basicamente usadas em duas situações mestras, a saída de shaders, e a geometria do jogo.

Todos os restantes componentes dos GPUs são independentes da capacidade de computação do mesmo, e a Nvidia domina na performance desses restantes componentes. O Fillrate, ou capacidade de débito de pixels e polígonos dos GPUs Nvidia supera a dos AMD, o tratamento da geometria, mesmo com menos flops, é igualmente superior nos GPUs Nvidia, o processamento de texels, as metodologias de Anti Aliasing sem uso de shaders, etc, são superiores nos GPUs Nvidia.

Ainda por cima, a Nvidia usa componentes pré criadas e optimizadas para o seu hardware, que paga para serem usadas pelos programadores, criando assim software optimizado para o seu hardware, e debitando mais.

Este foi o motivo pelo qual os GPUS da AMD necessitaram do DirectX 12 para libertarem a sua potência. O DX 11 não permitia o uso adequado da componente de computação assincrona, e com as optimizações pagas da Nvidia, e dominio nos componentes do procesessamento gráfico, a AMD estava a ficar para trás.

Basicamente, num GPU, os Flops não são tudo. Eles são uma boa medida de performance de computação, mas só por si não definem performance gráfica, que neste caso só lhe permite melhores shaders e computação asincrona. E se a AMD bate tudo nesse campo, na geometria, processamento de texturas, fill rate, etc, a Nvidia está à frente.



Um outro campo onde a Nvidia domina é na organização dos comandos a enviar para o GPU. Se esta organização for perfeita o GPU está sempre bem ocupado, mas falhando, o GPU tem ineficiência de processamento devido a pausas. A AMD requer código paralelo bem mais perfeito que a Nvidia, algo que foi resolvido com as unidades ACE, e mais recentemente as HWS, mas mesmo assim a AMD requer menor latência de RAM e maior eficiência e capacidade de transferência desta, o que tem tornado a AMD em uma das empresas que mais tem apostado nas memórias HBM.

Numa comparação num estilo que gostamos de dar, com carros, os TFlops poderiam ser comparados ao binário do motor, ou seja a capacidade do mesmo para exercer força.

Ou seja, as AMD podem exercer força bruta e ter muito mais a ser processado no ecrã, mas a velocidade depende dos MHZ e dos restantes componentes do GPU.

Criar um jogo a usar o torque da AMD poderia levar a que as Nvidia não os conseguissem correr. Mas criar um jogo a utilizar as potencialidades de velocidade da Nvidia apenas cria perdas de performance na AMD. E esta é por norma, e muito lógicamente, a opção escolhida.

Mas olhando para os jogos First Party e exclusivos das consolas, onde podemos ver o GPU optimizado para o que tem, percebemos que a capacidade dos GPUs AMD está lá! E que os seus Tflops não são apenas valores para encher chouriços. São algo real e palpável!

Resumidamente, é errado falar-se que os Tflops da Nvidia são melhores que os da AMD. Não são! A nível de capacidade de processamento genérico a AMD leva a vantagem! O que há depois são outras diferenças nos restantes componentes que dão vantagem às Nvidia, mas isso nada tem a ver com os Tflops.

Criem jogos altamente dependentes de shaders ou de computação assincrona e perceberíamos que a AMD tem vantagens nesses campos.

Eis exemplos da computação assíncrona da AMD em pleno uso num GPU de apenas 1.84 Tflops:

 



Posts Relacionados

2
Deixe um comentário

avatar
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Brunoabbruno Recent comment authors
  Subscribe  
newest oldest
Notify of
bruno
Visitante
bruno

Muitos parabens pelo artigo.

Este e um topico que tenho visto muito por esses foruns fora, e e bom finalmente ver uma resposta bem formulada a esta questao.

Eu acho inacreditavel, depois de termos visto tantos titulos como H ZD, God of War, Days Gone ou Spider-Man a quebrarem barreiras num GPU de 1,84 Tflops , virem com a crenca que GPUs AMD nao sao capazes, ou que valem menos, porque os Tflops nao sao iguais (tudo relacionado com menor eficiencia).

Esta geracao tem quebrado barreiras ao mesmo tempo que continua nos 1080p e 30 fps (algo que muita gente duvidava no inicio, dado que apontavam uma descida na resolucao para que as consolas se aguentassem).

So por curiosidade: sabemos que desde a Polaris a AMD introduziu o Rapid Packed Math nos seus GPUs. isto foi gracas a alteracoes na ALU, um reaproveitar da ALu ja existente ou introducao de novo hardware?

Mais ainda, ao estudar o diagrama da Turing que postaste aqui ha tempos, reparei que a nVIdia, em cada SM possui as unidades dedicadas a processamento especifico (RT cores e Tensor cores) e os seus cuda cores parecem estar divididos em dois grupos, int 32 e fp 32 – isto ocorre nas AMD? Alias, e curioso verificar tambem, que na Volta a NVidia tinha cuda cores especificos para FP64, FP32, e operacoes com inteiros. O FP64 foi eliminado na sucessora.

Eu sinceramente acho que o motivo porque ha tento consumo energetico da AMD e precisamente devido a versatilidade – as suas ALUs sao todas FP64 – estando aptas para todo o tipo de calculo ate FP64 (int e FP).

Brunoab
Visitante
Brunoab

otimo artigo.

No fim, a GPU AMD foi uma otima escolha para essa geração, com CGPU boa para compensar a CPU de tablet.

Espero que a Navi tenha melhorias todas focadas em jogos, sem comprometer o CGPU atual… Vai ser interessante ver como vão usar CGPU com CPU Rysen nos novos consoles.