Perante os Benchmarks apresentados pela Oxide Games e relativos ao benchmark de Ashes of the Singularity, a Nvidia veio referir que os valores não eram representativos de uma situação de mundo real, não representando assim os valores reais das placas Nvidia. Agora a Oxide responde… e deixa a Nvidia e as suas placas pelas ruas da amargura.
Se bem se recordam, recentemente colocamos online um artigo que explica os motivos pelos quais as placas da Nvidia se revelam inferiores às da AMD no DirectX 12.
Os benchamarks de Ashes of Singularity revelam não só ganhos gigantes das placas da AMD com a passagem para o DirectX 12 mas, mais curioso ainda, revelam que as placas da Nvidia perdem com essa situação, obtendo resultados piores do que em DirectX 11.
Naturalmente a Nvidia não ficou agradada com a situação, e veio a público tentar deitar poeira para o ar, fazendo crer que o benchmark em causa não era uma boa representação do DirectX 12 e das situações de mundo real.
Ora infelizmente, só não sabe a realidade quem não acompanha as notícias, ou então aqueles que as acompanhando ignora a realidade das coisas. A Nvidia desde à algum tempo que usa metodologias paralelas à capacidade de processamento pura e dura para melhorar as suas performances. Não que haja algum mal nisso, mas o certo é que patrocínios para uso de código proprietário nos jogos e alterações aos shaders e processamento originais implementados em optimizações das drivers são situações que com o DirectX 12 morrerão. Aqui o acesso é directo ao metal e pouca hipotese há de se recorrer a alternativas que não passem pela capacidade de processamento puro e duro do hardware.
Ora a Oxide não gostou das palavras da Nvidia e acabou por revelar algumas situações que a Nvidia certamente preferia que não viessem a ser conhecidas.
Não há qualquer guerra de palavras entre nós e a Nvidia. A Nvidia fez algumas afirmações incorrectas, e nesta altura, se questionarem os seus relações públicas, eles não disputam a nossa posição. Penso que a confusão inicial foi porque as relações públicas da Nvidia fizeram-nos alguma pressão para desactivar certas coisas no benchmark, e quando recusamos, penso que eles levam a coisa como algo pessoal.
Ora dado que com o DirectX 12 a Nvidia não pode optimizar o código como fazia antigamente, apercebendo-se que os Benchmarks iriam deixar mal as suas placas face às da AMD, tentou outras tácticas. Neste caso a desactivação de algumas partes do código que beneficiavam a concorrência. Um tipo de táctica com uma das muitas manobras, das quais a AMD se queixa à muito tempo.
Mas a Oxide vai mais longe… e o que refere posteriormente revela-se extremamente preocupante para os possuidores de placas Nvidia numa altura em que a computação assíncrona no GPGPU se prepara para entrar em força.
Pessoalmente, acho que poderiam acusar-nos de ter algo com a Nvidia, dado que o único código específico de “vendedor” que possuimo é para a Nvidia onde tivemos de desactivar a computação assincrona. Por específico de vendedor falo de um caso onde na identificação de um ID do vendedor fizemos alterações na forma de rendering. Curiosamente a sua driver reportava a característica (computação assincrona) como funcional mas tantar usa-la era um desastre não mitigado em termos de performance e conformidade pelo que tivemos de a desligar no seu hardware. Pelo que sei o Maxwell não tem verdadeiramente computação assincrona pelo que não sei porque motivo a driver estava a tentar expor a característica. A única outra coisa que é diferente entre fabricantes é que as placas Nvidia caem na classe Tier 2 em vez das Tier 3 da AMD, pelo que requerem um pouco mais de uso do CPU no D3D12, mas não penso que isso acabe por ser muito significativo. Isto não é um caminho específico do vendedor pois está apenas a responder a capacidades que a driver afirma existirem.
Resumidamente, e apesar de Ashes of Singularity apenas usar um bocadinho de nada de computação assincrona, a Oxide está a dar a conhecer que as placas Nvidia, pelo menos no estado actual das suas drivers, não possuem uma computação assíncrona capaz, o que as torna basicamente inúteis para o que o DirectX 12 nos traz de futuro. E aqui, especialmente depois de vermos os Benchmarks, fica a dúvida sobre mesmo sobre as reais capacidades do Maxwell 2 que essas placas usam pois afinal a tecnologia, apesar de melhorada acaba por ser a mesma.


Nota: Entretanto nos fóruns do Beyond 3D um programador criou um pequeno programa de testes para tentar confirmar algumas situações e que parecem ser claras quanto às capacidades das Nvidia (Maxwell 2 incluido). Eis os resultados partilhados que comprovam que nas placas Nvidia não há computação em paralelo (assíncrona).
O programa em causa coloca uma lista de 128 comandos que manda para processamento de forma cumulativa num total de 128 vezes. Por uma questão visual apenas vamos indicar os 9 primeiros ciclos.
Geforce 680Ti driver 355.60
Só computação
1. 17.91ms
2. 18.03ms
3. 17.90ms
4. 17.98ms
5. 18.05ms
6. 18.09ms
7. 18.02ms
8. 18.03ms
9. 35.49ms
…
Só gráficos: 50.75ms (33.06G pixels/s)
Graphicos + computação:
1. 68.12ms (24.63G pixels/s)
2. 68.20ms (24.60G pixels/s)
3. 68.23ms (24.59G pixels/s)
4. 68.15ms (24.62G pixels/s)
5. 68.26ms (24.58G pixels/s)
6. 68.14ms (24.62G pixels/s)
7. 68.48ms (24.50G pixels/s)
8. 68.09ms (24.64G pixels/s)
9. 85.80ms (19.55G pixels/s)
…
Como vemos, não há computação assincrona (em paralelo). O tempo usado pelos gráficos + computação é basicamente o tempo do grafismo somado ao da computação demonstrando uma computação em série.
Geforce 750 Ti driver 355.60
Só Computação
1. 11.92ms
2. 11.90ms
3. 11.18ms
4. 10.75ms
5. 10.74ms
6. 10.75ms
7. 10.59ms
8. 10.54ms
9. 10.55ms
…
Só graficos: 106.67ms (15.73G pixels/s)
Graficos + computação:
1. 117.15ms (14.32G pixels/s)
2. 117.19ms (14.32G pixels/s)
3. 117.12ms (14.32G pixels/s)
4. 117.15ms (14.32G pixels/s)
5. 117.15ms (14.32G pixels/s)
6. 117.14ms (14.32G pixels/s)
7. 117.15ms (14.32G pixels/s)
8. 117.18ms (14.32G pixels/s)
9. 117.14ms (14.32G pixels/s)
…
Os resultados são em tudo similares aos anteriores.
Geforce 980Ti driver 355.60
Só computação:
1. 11.63ms
2. 11.62ms
3. 11.82ms
4. 10.68ms
5. 10.66ms
6. 10.65ms
7. 10.68ms
8. 9.97ms
9. 9.99ms
…
Só gráficos: 17.88ms (93.82G pixels/s)
Graphicos + computação:
1. 27.69ms (60.59G pixels/s)
2. 27.62ms (60.74G pixels/s)
3. 27.76ms (60.45G pixels/s)
4. 27.68ms (60.61G pixels/s)
5. 27.67ms (60.64G pixels/s)
6. 27.76ms (60.44G pixels/s)
7. 27.79ms (60.37G pixels/s)
8. 27.82ms (60.31G pixels/s)
9. 27.75ms (60.46G pixels/s)
…
Mais uma vez a situação repete-se. Há um acumulação dos tempos de processamento.
Vejamos agora um exemplo de uma placa AMD.
R9 290X driver 15.20.1062.1004
Só Computação:
1. 55.17ms
2. 55.14ms
3. 55.13ms
4. 55.13ms
5. 55.15ms
6. 55.14ms
7. 55.14ms
8. 55.14ms
9. 55.14ms
…
Só graficos: 26.98ms (62.18G pixels/s)
Graphicos + computação:
1. 55.62ms (30.16G pixels/s)
2. 55.44ms (30.26G pixels/s)
3. 55.52ms (30.22G pixels/s)
4. 55.44ms (30.26G pixels/s)
5. 55.49ms (30.24G pixels/s)
6. 55.50ms (30.23G pixels/s)
7. 55.23ms (30.37G pixels/s)
8. 55.49ms (30.24G pixels/s)
9. 55.97ms (29.98G pixels/s)
…
Como vemos o uso de gráficos mais computação não altera os valores do processamento individual com maior peso (neste caso a computação genérica) mostrando a existência de uma assincronia no encaixe em paralelo do processamento gráfico no da computação genérica.
Fonte: Dsogaming e Foruns Beyond3D
É… A Nvidia continua agindo mal nos bastidores… Hoje, saiu mais detalhes…Interessante a parte que é citado o processador do Ps3…
“1) It allows jobs to be cycled into the GPU during dormant phases. In can vaguely be thought of as the GPU equivalent of hyper threading. Like hyper threading, it really depends on the workload and GPU architecture for as to how important this is. In this case, it is used for performance. I can’t divulge too many details, but GCN can cycle in work from an ACE incredibly efficiently. Maxwell’s schedular has no analog just as a non hyper-threaded CPU has no analog feature to a hyper threaded one.
2) It allows jobs to be cycled in completely out of band with the rendering loop. This is potentially the more interesting case since it can allow gameplay to offload work onto the GPU as the latency of work is greatly reduced. I’m not sure of the background of Async Compute, but it’s quite possible that it is intended for use on a console as sort of a replacement for the Cell Processors on a ps3. On a console environment, you really can use them in a very similar way. This could mean that jobs could even span frames, which is useful for longer, optional computational tasks.
It didn’t look like there was a hardware defect to me on Maxwell just some unfortunate complex interaction between software scheduling trying to emmulate it which appeared to incure some heavy CPU costs. Since we were tying to use it for #1, not #2, it made little sense to bother. I don’t believe there is any specific requirement that Async Compute be required for D3D12, but perhaps I misread the spec.”
http://wccftech.com/async-shaders-give-amd-big-advantage-dx12-performance-oxide-games/
O que vale é que para teres ganhos no CPU a computação assincrona não é um requisito do DirectX 12. No entanto é um tipo de processamento que vai entrar em força graças ao enorme poder de processamento que tem estado dormente nos GPUs e que as consolas vieram despertar.
Salvo um caso de bug ou funcionamento diferente, até a Nvidia ter algo funcional e comparável à AMD vai demorar um bocado!
isso quer dizer, que é melhor eu trocar minha nvidia 980 por uma equivalente da AMD?
Nesta fase é prematuro dizer que isso seja uma necessidade. A computação assíncrona permite libertar todo o poder dos GPUs acrescentando capacidade de processamento. Pode ser usada em física, em efeitos gráficos, em animações, etc. É um auxiliar precioso.
No entanto até hoje não é algo que os PCs tenham usado. Dado que estes são poderosos o suficente basta ter um CPU e um GPU potente em ele torna-se capaz. Onde o GPGPU se torna indispensável é para permitir que placas menos potentes possam libertar a sua capacidade.
Por isso depende do nível de implementação do GPGPU. Mas uma coisa é certa, com a XBox One a usa-lo e a necessitar dele para libertar o seu poder, e partilhando o API com o PC, a computação assíncrona vai chegar ao PC e as placas AMD vão tirar partido dele.
Eis dois exemplos:
http://www.pcmanias.com/rise-of-the-tomb-raider-usa-computacao-assincrona-na-xbox-one/
http://www.pcmanias.com/mirrors-edge-catalyst-chegara-a-novos-patamares-gracas-a-computacao-assincrona/
É prematuro dizer que uma 980 será lenta ou incapaz de lidar com um jogo que use grandes quantidades de computação assíncrona, mas nesses casos certamente deixarás de ver a placa no topo dos benchmarks, sendo que poderás até ver placas AMD baratas com melhores performances.
Mas para já há que se aguardar. A NVIDIA expõem a capacidade como existente, apesar de resultados terríveis e de já ter tido tempo para fazer algo. Vamos aguardar.
Ashes of singularity mostra os ganhos da AMD com o DX12 e mostra que a NVIDIA perde face ao DX11. A nível de computação assíncrona a equipa refere que só usa um bocadinho de nada. A questão é que se nada for feito o que eu vejo em jogos que a venham a usar convenientemente é a NVIDIA a ficar claramente para trás.
Agora não foi é por falta de aviso aqui na PCManias onde há muito que eu tenho alertado que a AMD era superior em DX12. Eu nunca tive uma gráfica que não fosse NVIDIA mas no ano passado troquei a minha máquina e fui para AMD. O motivo era o DX12 e o facto de eu já saber e alertar que com esse API as placas da AMD iam disparar especialmente pelo GPGPU. O que eu não sabia era que as da NVIDIA iam retroceder e que neste campo nem sequer iam conseguir acompanhar, especialmente as da série 9xx. Tenho aliás de acertar o meu artigo sobre o DX 12 e as placas que o suportam para referir isto.