sexta-feira, 9 de outubro de 2009

Nvidia CUDA vs ATI Stream

Artigo escrito por Mário Ferreira



Muito se tem vindo a falar sobre a utilização dos GPU’s (processadores gráficos) para processamento que não o tradicional cálculo de polígonos e pixels em jogos 3D.

Efectivamente, dada a potência disponibilizada pelas placas gráficas e desaproveitada na utilização mais tradicional da máquina, parece quase crime ter um hardware tão poderoso parado, esforçando o CPU em cálculos que se revelam intensos e morosos.

Podemos falar, por exemplo, da descodificação H.264, mais concretamente quando aplicada a filmes em formato Blu-Ray 1080p. Este é o tipo de cálculo intenso que esforça CPU’s para a simples reprodução. Parece incrivel, mas não é qualquer CPU, mesmo dual core, que é capaz de reproduzir filmes H.264 a 24 Mbits/s e a 1080p, e quando o é, muitos deles possuem uma taxa de ocupação extremamente alta, o que se traduz em aquecimento e eventual aumento do ruído envolvente, com o acréscimo de rotação das ventoinhas de refrigeração.

E se a reprodução já é problemática, então a edição video com a sobreposição de pistas e aplicação de efeitos, com consequente cálculo do produto final tornam-se muito complicadas. Aliás a previsão dos efeitos torna-se quase impossivel, e o processamento muito moroso.

Eis que entra em jogo a utilização dos GPU’s.

A primeira empresa a anunciar a utilização dos seus GPU’s para “processamento genérico” foi a Nvidia, com a apresentação da tecnologia CUDA.
O CUDA oferece a possibilidade de os processadores gráficos serem programados para outros tipos de processamento sendo que as aplicações mais evidentes e implementadas nas drivers gráficas pela Nvidia são exactamente as acelerações vídeo com a capacidade de descodificação e codificação de sequências H.264, bem como a sua aplicação para cálculos de fisica de objectos e particulas usando o conhecido motor Physx.

A ATI demorou muito tempo a dar resposta a esta capacidade das placas NVIDIA, mas finalmente o ATI STREAM viu a luz do dia.
Apesar de uma fraca implementação inicial, actualmente o STREAM revela-se um concorrente à altura do CUDA, e em alguns casos chega mesmo a ser mais vantajoso. No entanto, ao contrário do CUDA, o ATI STREAM não oferece a capacidade de “processamento genérico”, mas sim apenas acelerações gráficas usando os pipelines existentes no processamento vídeo (codificação/descodificação). Quer isto dizer que, apesar de ser concorrente no campo das acelerações vídeo, a sua aplicabilidade para o cálculo de física é nula, continuando a Nvidia sem oposição nessa vertente.

Com isto dito, e apesar da vantagem que o CUDA oferece pela sua maior versatilidade, vamos fazer um comparativo às duas tecnologias no campo onde estas são igualmente aplicáveis.

A comparação será feita baseada nos valores obtidos pelo site PC PERSPECTIVE para as duas tecnologias em diversos programas.


TRANSCODING PARA STREAMING

O “transcoding” para “streaming” aparecem normalmente associado a media extenders. Exemplos são uma PS3, uma XBOX 360, um iPhone, iPod, um PDA ou um telefone móvel, ou outro qualquer sistema que por si não suporte ou não seja capaz de descodificar o formato original.

Desta forma, um computador remoto irá descodificar e recodificar em tempo real, ou mais rápido, o vídeo e áudio existente para um outro formato e resolução que o media extender suporte, enviando essa informação via cabo de rede ou wi-fi. Desta forma o media extender poderá apresentar a informação recebida numa TV ou monitor.

Esta operação, como a descrição permite antever, é extremamente exigente a nível de processamento. Se um processador já se revela insuficiente para a simples leitura de um filme H.264 1080p 24 Mbits/s, dificilmente conseguirá ainda re-codificar em tempo real de modo a enviar para o media extender.

A solução para este problema apresenta-se na forma de softwares de “Transcoding”, com suportes ATI STREAM e CUDA.

Desta forma analisemos as performances obtidas usando os softwares de transcoding ATI VIVO CONVERTER (ATI STREAM) e BADABOOM (CUDA). Vamos contudo limitar-nos às conversões que envolvem vídeo HD, pois se um processador genérico se pode revelar insuficiente para esta operação tendo como única possibilidade de a efectuar a ajuda de uma destas duas tecnologias, o mesmo já não se passa com as resoluções SD onde desde à muitos anos os tradicionais processadores se revelam mais do que suficientes.




O caso de cima mostra uma conversão de um video em formato Blu-Ray (1080p H.264 24 Mbits/s) para um receptor iPod, convertendo o vídeo original para MPEG4, com um bitrate de 780 kbps/s e uma resolução de 480*320.

O que o gráfico de cima permite ver é que a conversão total do clip demoraria 72 segundos a ser calculado caso o Core2 Quad QX9650 existente fosse o processador usado (Note-se que isto nada indica sobre a capacidade do CPU de realizar o transcoding por si só).
A placa da Nvidia (CUDA) consegue o mesmo resultado em 23 segundos e a ATI (STREAM) em 12s.

Por aqui vemos um ganho de 3.1x da placa da Nvidia face ao uso do CPU, e de quase 6x da placa da ATI face ao mesmo. Esta diferença de performance é, muitas vezes, dependendo do CPU usado, a diferença entre se conseguir ou não fazer o “transcoding”.

O gráfico de cima permite igualmente ver que a tecnologia da ATI é mais rápida. E se a ideia fosse uma simples conversão de formatos, teria efectivamente vantagens.
Mas no entanto o pretendido não é isso. Se o CPU é suficiente para efectuar o transcoding por si com baixa percentagem de ocupação, então estas tecnologias revelam-se redundantes (note-se que para o tipo de transcoding referido aqui apenas precisamos de calculo em tempo real). No caso de não o ser ou de o ser mas com taxas de ocupação elevadas, então o que interessa é a libertação do CPU desse trabalho. E é ai que a porca torçe o rabo.

Analisemos o uso dos CPU’s, começando pela ATI:




E agora vejamos a mesma coisa para a Nvidia:




O que aqui vemos permite concluir muita coisa:

A tecnologia da ATI revela-se mais rápida mas muito mais exigente a nível de processador. Quer isso dizer que caso o processador em causa não fosse um Quad Core QX9650, mas um dual core E6600, os tempos da ATI iam aumentar tremendamente pois a ocupação do CPU ia atingir os 100% com facilidade. Já a placa da Nvidia, mesmo com metade da potência do CPU disponível iria apenas atingir os 76%, mantendo o seu tempo de cálculo.

Apesar de já referirmos que a velocidade de cálculo para “transcoding” é irrelevante desde que permita o mesmo em tempo real, a realidade é que vemos aqui que como meio de auxílio ao CPU as placas da NVIDIA são muito melhor ferramenta do que as da ATI. Dada a sua menor dependência do processador (neste caso menos 46%), é possivel com maior facilidade obter um “transcoding” eficaz em sistemas menos potentes usando uma placa Nvidia do que uma placa ATI.
E esse é o objectivo desta tecnologia!

Para piorar mais as coisas para o lado da ATI o site PC Perspective revela ainda que o STREAM tem ainda muitas arestas por limar, mostrando pequenos problemas na imagem após o “transcoding” como se pode ver no imagem abaixo, no braço do homem da esquerda.




O site referido não conclui qual das tecnologias prefere, mas apenas qual dos dois softwares apresentados acha mais vantajoso (AVIVO VIDEO CONVERTER e BADABOOM), limitando-se a concluir que ambas são impressionantes.

E essa é igualmente a nossa opinião, sendo que no entanto, pela maior independência dos CPU’s a tecnologia CUDA apresenta maiores vantagens para quem tem processadores mais fracos e efectivamente necessita deste suporte. Isso, associado à maior qualidade de imagem, só pode mostrar a nossa preferência pelo CUDA.


CODIFICAÇÃO E DESCODIFICAÇÃO

Aqui vamos falar de um outro tipo de “transcoding”, que não designamos assim para evitar confusões. No primeiro caso, dado “streaming” en tempo real apenas interessa que o processamento fosse feito igualmente em tempo real, mas neste agora em análise vamos falar da conversão e codificação vídeo normal, onde o que interessa é que isso seja feito com rapidez e com a maior qualidade de imagem possível.

E existe a necessidade de separar os dois tipos de “transcoding”! Não só porque, como já vimos antes, em matéria de tempo de execução a tecnologia da ATI parece levar vantagem, como tambem pelo facto que a codificação/descodificação que abordaremos pode ser mais complexa do que a simples conversão de video de um formato para outro. É o caso da edição video onde várias pistas são sobrepostas, há aplicação de efeitos visuais e outros, que tem de ser calculados para o video final.

Analisemos antão o software POWER DIRECTOR 7, um software de edição video que suporta as duas tecnologias:





Antes das conclusões analisemos um outro software que usa igualmente ambas as tecnologias, o MEDIA SHOW EXPRESSO:






O site analisa ainda um terceiro software, mas por suportar apenas a tecnologia ATI STREAM, o mesmo parece despropositado para uma comparação, dai que não o referiremos.

Ora as conclusões a tirar aqui são opostas às anteriores, o que mostra bem a necessidade desta análise.

Com este tipo de processamento as placas da Nvidia continuam a mostrar-se mais lentas, mas revelam-se mais sedentas do que as da ATI no uso do processador central, atingindo em alguns casos uma diferênça de 37%.

Aqui a aparente incongrência instala-se. Se no caso anterior as Nvidia eram mais lentas mas tambem usavam menos processador, aqui elas continuam mais lentas mas usam mais processador.

A explicação é contudo perceptivel no resultado final. É que a qualidade do produto obtido não é exactamente a mesma:
Vejamos dois exemplos do obtido pela Nvidia:


E agora os mesmos resultados para o mesmo filme com os mesmos parâmetros para as placas ATI:


Para quem o evidente não saltou imediatamente à vista, e dúvida dissipa-se ao aumentarmos um pedaço da imagem em 200%.

NVIDIA:





ATI:



Como é agora visível a qualidade de imagem não é comparável. O cabelo da jovem não possui o detalhe do obtido com a NVIDIA, onde todos os fios são visíveis. O mesmo se passa com o roubo do pouco detalhe do cenário de fundo que existe.

Já no caso do boneco a nitidez do pelo é perdida, sendo isso mais notório na barba e cabelo. Pior ainda é o assento do carro onde todo o detalhe da textura se tornou num borrão.

Aparentemente, numa ânsia pela performance a ATI tem vindo a negligenciar a qualidade. E para o pretendido, edição e codificação de vídeo HD, a qualidade de imagem é claramente o factor mais importante de todos. Muito mais importante que o ganho de 1 ou 2 segundos para se ficar bem nos testes, ou do que o uso do CPU.
No entanto, dado que ao contrário do CUDA onde o software pode ter controlo sobre a placa e a forma como esta trabalha, o STREAM não é uma componente programável das placas da ATI, mas sim uma rotina pré programada que usa as pipelines internas para esse cálculo, o que significa que corrigir esta situação passa apenas pela ATI, existindo inclusivé a dúvida sobre se tal é possível dado que se trata de sequências de cálculo pré-programadas no hardware. Esse é o motivo porque o mesmo programa dá resultados diferentes nas duas placas, o que não aconteceria se a ATI fosse igualmente programável como a NVIDIA, à semelhança dos processadores Intel e AMD, que performances à parte, obtem sempre resultados iguais.

Desta forma, neste segundo teste temos igualmente de dar a vantagem à Nvidia e ao seu CUDA, o que faz dela a clara vencedora desta comparação. Ah sim, e ainda oferece o Physx.

[Fontes]
pcper #1

pcper #2

Sem comentários:

Enviar um comentário

Related Posts with Thumbnails