Porque motivo as placas da AMD batem as da Nvidia com o DirectX 12

Sem discutir a qualidade das placas da Nvidia é certo e sabido que a Nvidia não vale só pela sua performance pura. As suas drivers alteram shaders, precisão de cálculos e muito mais, sendo que essas situações associadas a placas optimizadas para processamento em série, lhe davam a vantagem clara no DirectX 11. Mas com o DirectX 12 o processamento é agora paralelo, um processamento em que as placas da Nvidia não são tão boas. E dado que o DirectX 12 fala directamente com o hardware, as “optimizações” nas drivers da Nvidia deixam agora de funcionar.

amdvsnvidia

Ashes of Singularity é o jogo de Brad Wardell que tanto apregoou o DirectX 12. Trata-se de um jogo muito especial uma vez que ele foi criado para explorar o ponto onde o DirectX 11 é mais fraco, e onde o DirectX 12 elimina os gargalos existentes. A colocação de vários milhares de objectos animados no ecrã. E os primeiros benchmarks usando o mesmo tem vindo a ser algo controversos no sentido que eles são espectaculares nas placas da AMD, e decepcionantes nas placas da Nvidia.

A situação já levou a Nvidia a pronunciar-se vindo alegar que o Benchmark interno do jogo não é uma boa representação do DirectX 12, algo que Wardell refuta referindo que o Benchmark se limita a apresentar situações que podem ser experimentadas no jogo, e como tal uma situação de mundo real.

A questão é que a Nvidia não tem razão, e dados os maus resultados das suas placas, a empresa tenta minimizar os danos que surgirão de passar de uma empresa líder de mercado com produtos com performances superiores, para uma empresa que vê agora placas da concorrência com 2 anos a igualar as suas actuais.

Vejamos um pequeno exemplo:

AshesDX11

Como vemos a Nvidia limpa o chão à R9 Fury X com a sua GTX 980 Ti. Os FPS obtidos com um numero os vários números de chamadas de desenho (normais, médias e intensas) são em tudo superiores aos da placa da AMD. Mais do que motivos para a Nvidia apregoar as suas placas como lideres de mercado.

No entanto, passando para o DirectX 12 vemos outra realidade. Uma realidade que aqui na PCManias temos vindo a alertar desde à muito. A de que as placas da AMD estão muito melhor apetrechadas para o DX 12 do que as da Nvidia.

AshesDX12

O que vemos aqui é que a placa da AMD bate agora a placa da Nvidia em todos os benchmarks. Mas essa não é a única curiosidade. A outra curiosidade é que os valores da placa da Nvidia desceram face aos obtidos com o DirectX 11.

Mas porque motivo há diferenças tão radicais nas performances? Há aqui algum problema com as drivers da Nvidia, ou algum tipo de batota da AMD?

Na realidade não, e tudo se explica muito facilmente, percebendo-se a realidade ao analisarmos a arquitectura interna das placas.

A tecnologia Maxwell usada pela Nvidia na 980 Ti permite computação assincrona naquilo que a empresa chama de Asychronous Thread Warp, podendo aceitar por ciclo de relógio e em simultâneo um total de 31 comandos de computação genérica (GPGPU), e 1 comando de computação gráfica (GPU). A AMD por sua vez usa na sua R) os nossos já conhecidos ACE ou Asynchronous Compute Engines em número de 8 capazes de receberem por ciclo de relógio e em simultâno até 64 comando de computação genérica (GPGPU) e um comando de computação gráfica.

ACE1

Basicamente o que vemos aqui é que em termos de paralelismo as placas GCN da AMD são bem mais capazes do que as Maxwell da Nvidia. E isso porque foram pensadas para ele.

Ora a questão é que no DirectX 11 o processamento paralelo era muito mal implementado e raramente usado. No geral o processamento do DirectX 11 era serializado e a Nvidia optimizou as suas placas para tal.

De forma genérica a Nvidia consegue criar uma melhor e mais optimizada lista de trabalhos para processamentos em série no DirectX 11, e esse é um dos motivos pelos quais as suas placas são normalmente superiores neste API.


A questão é que parte do motivo porque isso acontece é obtido com optimização das Drivers para jogos específicos. Ashes of Singularity não foi excepção e a empresa optimizou as suas drivers para ele. Mas infelizmente, para o DirectX 12 a Nvidia não pode fazer o mesmo, e isso porque o jogo fala directamente com o hardware, motivo pelo qual as optimizações das drivers da Nvidia não podem ser implementadas. Isso quer dizer que a Nvidia fica à mercê da qualidade do código dos programadores, o que com uma geração de consolas com GPUs AMD a gerar lucros enormes, e havendo uma necessidade de optimização comum, coloca a Nvidia em uma posição bem pior que a da AMD.

Mas como é que o mesmo hardware da Nvidia pode ter piores resultados com o DirectX 12 que acede directamente ao hardware do que com o DirectX 11 que necessita de acessos pela driver?

A questão é que a Nvidia, desde à muitos anos, que se dá ao trabalho e ao luxo de criar rotinas proprietárias optimizadas para o seu hardware que substituem as do jogo, Elas criam prioridades diferentes nas tarefas de cálculo mais adaptadas à realidade das placas, e chegam mesmo a substituir shaders do jogo por outros da Nvidia com iguais resultados, mas igualmente optimizados. Resumidamente as drivers da Nvidia possemi um compiladores que recompila e substitui shaders e outro código em cada jogo que corre, de acordo com as optimizações colocadas na mesma. E dado que a driver acede aos diversos núcleos do CPU, ela aproveita-se do mau aproveitamento dos mesmos pelo DirectX 11 para usar as suas partes inactivas nesta recompilação em tempo real.

Estas práticas da Nvidia tornaram-se conhecidas nos tempos da sua gama FX 5xxx em 2003, onde estas placas, pela sua fraca capacidade de cálculo cortavam a precisão de cálculo para 16 bits e substituam os shaders complexos por outros simplificados e criados pela Nvidia, algo que se tornou particularmente conhecido por ser usado em programa de benchmarking para que as placas da Nvidia não ficassem muito mal face à competição da gama Radeon 9xxx.

Ora curiosamente esta recompilação com fins de optimização de performance que a Nvidia faz no DirectX 11 por software usando o CPU do sistema é o que a AMD faz agora no DirectX 12, mas por hardware nas suas unidades ACE.

Dado que as placas da AMD estão optimizadas para paralelismo, e com o DirectX 11 cada pipeline gráfico só podia ser acedido por 1 ou 2 núcleos, essa situação limita as placas da AMD. A forma como estas foram concebidas, com as unidades ACE a substituirem os trabalhos complexos por vários outros mais simples e fáceis de processar, inviabiliza desde logo a possibilidade de optimizações adicionais de trocas ou recompilações de shaders. Resumidamente, as placas da AMD não fazem a coisa da mesma forma pois a sua estrutura não foi pensada para a serialização onde essas optimizações funcionam muito bem.

Seja como for, as performances AMD em DirectX 11 neste jogo estão abaixo do normal uma vez que a AMD não fez qualquer tipo de optimização para ele, uma vez que as performances em DiretcX 12 são tão boas devido a este a permitir que todos os núcleos do sistema comuniquem com a placa sem restrições. Nesse sentido as performances da AMD disparam brutalmente tornando as performances no DirectX 11 pouco relevantes.

Que se note porém que estas quebras da Nvidia não serão tão acentuadas em todos os casos. Eles acontecem apenas nestas situações onde o DirectX 12 é suposto libertar o sistema de restrições. Mas no entanto o DirectX 12 não é o Santo Graal. Ele continua a apresentar restrições idênticas ao DirectX 11 em milhares de outras situações, nomeadamente no que toca à capacidade de processamento do hardware. Assim problemas de limites de processamento como por exemplo geometria e rasterização, tão comuns nos jogos actuais, continuam a existir.

Quer isso dizer que não se julgue que vamos ver as recuperações milagrosas da AMD que vemos aqui em todos os jogos. Ashes of Singularity é como já referido um jogo singular nesse sentido pois apoia-se exactamente na fraqueza do DirectX 11. Mas um jogo normal não o faz, e explorar muitas outras situações, motivos pelos quais os ganhos são pequenos.

A questão é que a existirem ganhos, eles serão maiores nas placas da AMD que deverá voltar a tornar-se extremamente competitiva a nível de performances e acima de tudo… em preço. A realidade é que o futuro é DX 12 e com a Nvidia a perder performances e as placas AMD a ganharem, isto num mercado onde graças consolas os programadores irão olhar para o hardware AMD como prioritário a nível de optimização, o futuro da Nvidia deixou subitamente de ser tão brilhante.


Daí que ou a Nvidia reformula o hardware da sua próxima geração de placas acrescentando algo como os ACE da AMD, ou terá de, aparentemente mais difícil, conseguir encontrar uma solução software como a que usava, para o DX 12.

Fiquem com um gráfico do 3D Mark que mostra os ganhos a nível do aumento das chamadas de desenho de uma R9 Fury X comparada a uma Titan X, 300 euros mais cara, e percebam as potencialidades reais do hardware AMD com o DirectX 12.

3DMarkdrawcalls

Publicidade

Posts Relacionados