Programadores começar a usar a caracteristica de “Rapid Math” ou 2xFP16 da AMD

A característica Rapid Packed Math ou 2xFP16 permite o cálculo de duas strings com 16 bits de precisão usando os mesmos recursos de uma única de 32 bits, e dobrando assim a capacidade de cálculo do GPU usando metade da precisão. Apesar de a característica não poder ser usada em todo o tipo de processamento os ganhos da mesma são inegáveis, e os programadores começam a explorar a mesma.

Apesar de não ter sido com o nome de “Rapid Packed Math”, mas sim de 2xFP16, certamente ouviram falar desta característica pela primeira vez quando se falou da PS4 Pro quando se referiu que com ela esta consola seria capaz de atingir uns teóricos 8,4 Tflops de performance gráfica.

Esta situação foi aliás abordada novamente mais recentemente quando soubemos que, por uma decisão pouco compreensível, a Microsoft optou por não colocar esta caracteristica na sua Xbox One X, levando a que se questionasse até que ponto a mesma, quando devidamente aplicada em todas as situações em que tal seja possível, não poderá cortar ou mesmo eliminar a vantagem de performance da Xbox One X sobre a PS4 Pro.

Esta característica não tem tido verdadeiro uso por ser completamente nova, e como tal os jogos não tiram partido dela, mas isso poderá vir a mudar no futuro com a necessidade de optimizações.

O primeiro exemplo do uso desta característica foi apresentada pela DICE que a usou no processamento do Checkerboard Rendering, tendo registado ganhos de 30% na performance. Eis o slide apresentado pela Dice que regista esse facto:



Antes de avançar, deixe-se claro que a Xbox One X tambem suporta precisão de 16 bits. O que não suporta é a “Rapid Math” ou 2xFP16, isto é, a capacidade de no mesmo ciclo onde se processaria uma instrução de 32 bits, se processar duas de 16 bits. Basicamente na Xbox One X processar um comando 32 bits ou 16 bits, usa o mesmo número de ciclos de relógio, ao passo que na PS4 Pro, as duas strings 16 bits são processadas no mesmo ciclo.

Ou seja, o que está na imagem de baixo:

Mas os FP 16 podem ser usados em mais do que no Checkerboard Rendering, havendo uma grande quantidade de situações em que as mesmas podem ser usadas. O 3D Mark Serra mostra alguns outros casos onde os ganhos são uma realidade.

Como se vê, há ali três exemplos com ganhos que variam entre os 20 e os 25%.

Torna-se dificil nesta fase prever até que ponto estes ganhos são significativos no global ou não, pois a realidade é que as percentagens dizem respeito não a ganhos globais, mas a ganhos em casos pontuais. Daí que o resultado final depende do número de casos abrangidos por este ganho, e do peso global que cada um desses processamento pontuais possuem no processamento global.

E isso quer dizer que não podemos comparar as percentagens directamente com a percentagem de diferença de performances entre a PS4 Pro e a Xbox One X.



Seja como for, esta metodologia está ainda a dar os seus primeiros passos, mas felizmente a um ritmo acelerado, pois jogos como Far Cry 5 e Wolfenstein II vão usar a caracteristica na PS4 Pro e no PC, apesar de que, nesta fase os ganhos ainda serão muito moderados (um dos jogos regista ganhos médios globais de 13%).

Mas a realidade é que há operações onde os ganhos do uso desta Rapid Packed Math chegam a atingir ou a passar os 100%. Eis dados reais:

Como vemos efeitos de Bloom, Ambient Oclusion como o o SSAO, ou Anti Aliasing como o FXAA chegam a ser 100% mais rápidos com o FP 16. Mas isto requer implementação específica que a maior parte dos jogos ainda não faz.

Os ganhos não se limitam apenas à performance, mas igualmente a ganhos na largura de banda. Eis um exemplo com shaders, onde o ganho foi de 15% na performance por cada CU, mas onde houve igualmente ganhos na largura de banda. Note-se que nesta caso o ganho não se deve ao uso do 2xFP16, mas sim apenas ao uso de FP 16 onde os FP 32 não se revelam necessários. Este ganho pode existir igualmente na Xbox One X, mas com o 2xFP16, este ganho deve duplicar.

Eis um dos exemplos onde o uso de 2xFP16 foi o maior mostrado até agora. Aqui não é um caso de se obter poupanças no processamento, mas de se conseguir muito melhores resultados com o mesmo processamento, apesar de que o mesmo pode ser conseguido com menos de metade do processamento.

Como se vê, o Rapid Math permite o cálculo de mais do dobro de fios de cabelo animados por segundo. Basicamente um melhor uso dos mesmos recursos, que com o mesmo nível de processamento permite calcular mais do dobro.

Falta agora é vermos um jogo devidamente optimizado para usar esta característica em todos os componentes onde a mesma pode ser usada, de forma a verificarmos os ganhos reais que a mesma pode vir a trazer. E só aí perceberemos até que ponto esta capacidade pode ou não trazer ganhos dignos de registo, sem perdas de qualidade. Mas uma coisa é certa, no global, esta característica, se usada, nunca permitirá que a diferença entre a Xbox One X e a PS4 Pro seja aquilo que a diferença de performances teóricas deixam antever. E ver os programadores a usarem a mesma no PC é um sinal que a sua adopção poderá ser mais rápida do que se pensava.



Posts Relacionados