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:

Publicidade

Retomando o nosso artigo

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.

Publicidade

Retomando o nosso artigo

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.

Publicidade

Posts Relacionados

Readers Comments (11)

  1. Sendo exclusivo a PS4 PRO e meio difícil se ver algo otimizado para ela… Com exceção da Dice e dos exclusivos da PS4 a poucos jogos otimizados para a Pro, Gta 5 até hoje continua com bloqueio a 30 fps é nenhum mísero polígono a mais que a versão PS4 AMATEUR.. Vão me dizer que isto é perfumaria.. Bom o jogo é um remaster da versão PS3 e 360 e oferece exatamente as mesma experiência.. Então custava um upgrade a versão Pro.

    • Fps não é fácil de veres mais pois requer não só o dobro do Fill rate, como o dobro do tempo dedicado de CPU ao controlo do mundo.
      E normalmente, pelo segundo fator, não verás facilmente duplicação de fps, a não ser que o jogo na base já andasse pelos 50 e estivesse capado aos 30 por não atingir os 60.

      • Sim mas o mesmo deve estar entre 40 e 50 fps sendo a CPU o gargalo dos 60fps.. Mas o que eu disse é que quem joga na PS4PRO tem exatamente a mesma versão da PS4 normal, nem um AA melhor ou algum outro cosmético.. Nada

  2. Cheirinho de SRAM do Xbox One no ar !

    Era incrivel uma promessa uma memória mega rapida que programador nenhum soube usar e não passou de um grande erro !

    Mesma com o 2XFP16 vai ser sempre teórico ninguem vai se interessar por por em pratica.

    • Acredito que o problema da Sram sempre foi a quantidade dela, só 32mb por mais rápida que seja é muito pouco, o qu acabou se tornando em um gargalo, mesmo assim a Turn10 e Playground usaram uma técnica que visa driblar esse problema.
      Quanto a técnica do artigo está bem fundamentada com jogos já usando, porém acredito que poucos estúdios usarão.

    • O 2xFP16 não terá nada a ver com a SRAM uma vez que é uma caracteristica de todas as novas placas AMD. E que pode ser usada sem esforço uma vez que nem requer programação especial, mas apenas indicação do uso.
      A caracteristica dá ganhos na Pro e em todas as placas Polaris e Vega que a suportem no PC, daí o interesse no uso da mesma.
      A Xbox One X, por motivos que se desconhecem, optou por não usar a caracteristica, apesar de suportar FP 16 não suporta esta rapid packed math.
      O único inconveniente deste situação é que para uma optimização total terias de ter código para a PS4 e código para a Pro, activando a caracteristica na PRO. Na PS4 normal não há ganhos!
      Como tudo, isto vai demorar a ter aplicação a 100%, mas ver que dois futuros jogos já tiram partido de alguma coisa na capacidade mostra que os programadores reconhecem as capacidades da caracteristica e que no futuro ela deverá ser bastante usada sempre que puder ser aplicada.
      Quanto tempo é que demora até esse futuro chegar… é que não é possível dizer-se!

      Mas quanto à eSRAM, o problema nunca foi a sua existência, foi a sua quantidade… 32 MB não permite meter um frame buffer completo a 1080p.
      Há e sempre houve muitas formas de se contornar isso, mas como era algo que só a Xbox tinha, o interesse em se contornar a situação não era o maior. Cortava-se a resolução e pronto!

    • Diferente, esram é só uma memória que precisa de uma utilização ou técnica específica para que não tenha impacto na resolução quando a capacidade de calculo ainda está sobrando, mas nada sobre aumentar capacidade de calculo de uma GPU. A diferença de resolução entre PS4 e Xone na maioria dos jogos se deve ao foto de um ter potência maior que o outro. Se ESRAM fosse um problema ou algo incontornável, jogos como Forza Horizon 3 a 1080p e 4x MSAA ou Gears of War 4 a 1080p, ambos com frame rate travado e configurações com quase todos os recursos iguais ao High do PC seriam impossíveis de existir.
      2xfp16 é um verdadeiro aumento de capacidade de calculo mesmo, mas não vai igualar os jogos do PS4 Pro a versões do Xbox One X. O Xbox tem outras vantagens além de flops e não pode simplesmente dobrar ALU sem um aumento geral da GPU.
      Mesmo que o PS4 conseguisse igualar o Xbox One X em resolução e frame rate, ainda haveria coisas melhores no X como texturas, alguns efeitos, anti-aliasing e outras coisas mais ligadas a quantidade de memória e largura de banda.
      Takvez não seja evidente nos primeiros jogos, mas a tendência é que as diferenças visuais entre o Xbox One X e o PS4 sejam mais evidentes, sem precisar da digital foundry, do que a diferença entre Xbox One e PS4 originais.

      • Fernando, convem não iludir as pessoas. E aqui tens muita imprecisão!
        Forza horizon – pessimo exemplo. Usa um forward rendering plus que não requer a criação do frame buffer, escrevendo direto para o ecrã graças ao uso de uma CU. Logo passa por cima do limite da esram!
        Gears of war 4, esse sim, usa bem a esram. Em contrapartida usa bastante as rops, e daí não passar para 4K 60 fps na X uma vez que ela só tem 2,7x mais rops, mas a resolução é 4x superior.
        A eSRAM tem todo o impacto do mundo na performance do GPU. O GPU para funcionar precisa de largura de banda para mover os seus cálculos, texturas e outros. E essa largura de banda é dada pela eSRAM. Mas como a eSRAM é pouca há necessidade de se mover os dados para a RAM, entrando os move engines ao barulho.
        A questão é que os Move engines gastam quase zero recursos do sistema, há um que é inevitavel… a largura de banda disponível cai sempre com estas movimentações e isso penaliza as performances.
        Daí que não é sempre líquido que os limites da One sejam pura e simplesmente pelo GPU ser mais fraco. Nem todos os jogos usam forçosamente o GPU ao limite na sua capacidade de cálculo, sendo que os limites são por vezes outros fatores, e a largura de banda é um dos principais.
        Atualmente os motores já tomam em conta a eSRAM e contornam bem o problema, mas é inegável que isso é algo mais recente e que no início da geração a eSRAM foi um bicho de 7 cabeças.
        De resto, a PS4 pro não dobra a ALU com o 2xFP16. A ALU é a mesma. A diferença é que ela, continuando a processar 32 bits torna-se capaz de usar esses 32 bits com duas strings 16bits (16+16=32). Isso quer dizer que com a mesma ALU a capacidade de débito duplica. E isto é, na prática, equivalente a duplicar as ALU.
        Naturalmente isto tem limitações sem cortes de qualidade, e daí que não se sabe que ganhos efectivos isto, bem utilizado, pode trazer. Mas que eles existirão, isso é inegável, e em alguns casos os ganhos podem ser gigantes.
        Agora pensa. A memória é constituida por bits. 32 bits ocupam… surpresa… 32 bits.
        16 bits ocupam… surpresa… 16 bits. Ou seja metade. Com cálculo 16 bits usas metade da RAM e metade da largura de banda. Ou seja tambem há ganhos aqui. Isto, pelos mesmos motivos de antes, não te vai duplicar a RAM e a largura de banda. Para isso terias de cortar qualidade nas texturas para lhes reduzir o tamanho. Mas que reduz os consumos, reduz… falta saber quanto.
        De resto, as diferenças visuais entre a Pro e a X serão, à partida, menores que as da PS4 e a One. A explicação é simples e basicamente foi dada pela Apple quando definiu o que seria um ecrã retina: A densidade de pixels à distância normal de visualização.
        Acima de uma determinada densidade de pixels por cm quadrado o olho humano precisa de muita atenção para perceber diferenças. Mas quando vai abaixo disso… elas percebem-se rapidamente.
        A Xbox One falha muitas vezes essa densidade necessária para a relação dimensão de ecrã/distância de visualização. Já a Pro e a X ambas irão passar isso e daí que a diferença será, à partida, bem menor.
        O que poderá fazer a maior diferença na X é a maior memória e o uso de texturas melhoradas. Mas isso já passa a questão da resolução.
        Agora nesse tipo de coisas eu não me preocuparia muito com as diferenças com a Pro. Preocupar-me-ia isso sim com as diferenças com a consola base e com a forma como as diferenças entre elas podem vir a criar uma grande insatisfação nos utilizadores.
        Tu que tanto criticaste a Pro quando ela foi anunciada deves perceber isto melhor que ninguem, mas a realidade é que nesse campo a Pro gere melhor a relação com a base do que a X.

  3. Assim como a propaganda da AMD falava de ganhos de 200% ou mais com Aync Compute e os resultados do mundo real são ganhos geralmente menores que 10% com excessão de tech demos, eu acho que os 30% que a DICE menciona seria no melhor dos mundos, igual o 50% do DX12 no Xbox que a Microsoft falou nas entrevistas e só aconteceu na Engine Forzatech.

    Toda a apresentação da DICE foi para dizer que eles precisaram desse recurso e mais o checkerboarding rendering para alcançar 1800p na versão PS4 Pro de Battlefield 1, o que pra mim não é nem um pouco surpreendente uma vez que eles deveriam ter sido pelo menos capazes de alcançar 1800p nativos no PS4 Pro ja que o jogo roda em boa parte na casa dos 900p até no Xbox One.

    • Mesmo nos benchmark as CPU AMD sempre sofrem com taxas altas de fps… Qualquer coisa acima dos 80fps dos já se torna sofrível (face aos Intel), mesmo que qualquer carga extra de CPU possa ser mínima o Jaguar tem uma performance muito escassa… Então qualquer aumento de resolução tem impacto também na CPU… Não digo que será um botleneck na Xbox One X, mas de fato o é na PS4PRO por isso os 1800p ser um alvo tão difícil e nem com os mesmos features da PS4 normal (medio e low).

    • Vamos lá a ver. Aqui tu parece que colocas em causa a veracidade do que é dito, quando na realidade tudo é verdade.
      A questão passa no entanto pelo facto que esses ganhos não correspondem à totalidade do que é calculado.
      Comecemos pelos DX 12 e a realidade do mesmo. Efectivamente um API de baixo nível traz ganhos de 50%, mas a questão é que isso acontece no CPU e não no GPU. Mais ainda a Microsoft no seu palavriado que teria de englobal consola e PC meteu tudo no mesmo saco, esquecendo que a Xbox, mesmo não sendo o Dx12 já tinha um API de baixo nível, e como tal os ganhos seriam bem menores.
      O Async esse dá e sempre deu ganhos de 200%. Entre fazeres o que fazes no assync e no CPU o assync chega a ser 2x mais rápido. A questão é que não podes usar o assync para substituir tudo que o CPU faz. Mas que os ganhos estão lá e que situações como animações de agua, de tecidos, de animais e muito mais que tornam os mundos bonitos e aos quais a mair parte das pessoas, apesar de eles estarem lá, já os tomarem como garantidos, não seriam possíveis nas consolas sem o assync. Quando contabilizas os 10% falas em que? Fps?
      A Rapid packed Math ou 2xFP16, efectivamente duplica a performance de cálculo. Mas não pode ser usada em tudo sem cortes de qualidade. Basicamente aqui o único problema é esse, e fica dependente das implementações do jogo. Mas se em certas situações, como shaders, pode ser um problema descer para precisão 16 bits sem perdas de qualidade, outros tipos de cálculo não precisam dos 32 bits para nada e são calculados em excesso por eles, apenas porque não há alternativa.
      As novas placas AMD permitem calcular a 16 bits, mas sem esta caracteristica 16 ou 32 gastam o mesmo número de ciclos. Com ela processas duas strings 16 bits de cada vez com o mesmo número de recursos que usas para uma de 32.
      Isto não só duplica a capacidade de cálculo, como requer menor uso de largura de banda e mesmo de memória pois os registos possuem metade do tamanho.
      Infelizmente, não pode ser usada em tudo, mas pode ser usado em muita coisa. E com o tempo, caso haja optimização que permita usar em tudo o que é possível usar-se, os ganhos podem ser signficativos.
      De resto o teu último paragrafo parece esquecer que a resolução não depende só do GPU, mas, apesar de que tal é em muito menor escala, tambem do CPU.

Deixe um comentario

O seu e-mail nao sera publicado.


*