CUDA – A revolução esperada

O que é o CUDA

A tecnologia NVIDIA CUDA™ é o único ambiente de linguagem C que permite que os programadores e escrevam software para resolver problemas computacionais complexos em uma fração do tempo requerida pelo uso de um CPU tradicional, recorrendo ao poder de processamento paralelo multi-núcleo dos GPUs. Com milhões de GPUs preparados para CUDA já no mercado, milhares de programadores de software já estão a usar as ferramentas de software CUDA, fornecidas gratuitamente para acelerar aplicativos, incluindo a codificação de vídeo e áudio, até a exploração de gás e petróleo, processamento de imagens médicas e pesquisa científica.

Onde os utilizadores já experimentaram com toda a certeza o CUDA foi na implementação da gestão da física (Physx) pelas placas gráficas Nvidia 8800 ou posteriores. A utilização dos pipelines de processamento destas placas para a gestão da física eleva as performances dos jogos em muitos casos até os 50%. AO contrário das restantes aplicações CUDA, o Physx encontra-se já implementado pela própria Nvidia nas drivers gráficas da placa, não sendo assim necessário software adicional, mas apenas a utilização de produtos que utilizem as placas de aceleração de física.



Aplicações Reais

Para alem da já referida implementação pela própria Nvidia para o calculo da física, o CUDA está a ser implementado por diverso software para acelerações das mais diversas.

A título de exemplo refiro dois casos em que o uso do CUDA me desceu tremendamente a utilização do sistema.

Desde há alguns anos que a alta definição se tornou uma realidade em minha casa. Não só pela visualização de filmes em HD, mas também pelo uso de uma câmara de filmar Full HD que filma em AVCHD, com bitrates até aos 24 Mbits.

A realidade é que a reprodução destes filmes e de outro conteúdo Full HD criava um uso de CPU no meu media center equipado com um AMD ATHLON X2 5000+ e uma Geforce 7050, que atingia picos de 97%. Descontente com este facto, e sabendo do suporte CUDA pelos CODECS mais eficazes na descodificação HD, como é o caso do COREAVC, troquei a placa por uma Nvidia Geforce 9500. Com o uso do CUDA, a utilização do CPU desceu para os 15%.

Este tipo de aceleração era já uma realidade com o uso do DXVA, a tecnologia aceleradora do DirectX, que desde que suportada pelas gráficas permitem a descida do uso do CPU com a descodificação pela gráfica. Esse tipo de aceleração presente nas placas ATI e NVIDIA e implementadas de forma superior pela primeira, não possui as vantagens do CUDA. Efectivamente o DXVA trata o vídeo como um layer, desabilitado desta forma o uso de outros layers, o que impede a aplicação de legendas sobrepostas como acontece normalmente com o uso do VOBSUB e de outros programas que usam legendas em ficheiros de texto paralelos ao ficheiro de vídeo. O CUDA não sofre desses problemas.

Já no meu computador principal, a edição de vídeo full hd (1920*1080 em modo progressivo a 24 Mbits/s, 25 imagens/segundo) era um processo moroso de bastante intensivo no uso do CPU. O meu Core2Duo ficava-me a 60% no uso do CPU só para reproduzir o vídeo. Escusado será dizer que aplicando-lhe efeitos de distorção, cores, layers ou outro, o CPU saltava para os 100% só para fazer a pré-visualização, reproduzindo a cena a não mais de 3 ou 4 imagens por segundo.

Com o CUDA metido ao barulho, o uso do CPU desceu para 20%, a a pré-visualização dos efeitos pode ser feita com a qualidade final a ser obtida, e em tempo real, sem qualquer problema.



Placas compatíveis
Como já supracitado, as placas GeForce realmente tem suporte a tecnologia CUDA. Evidentemente, não são todas as GeForce que oferecem esta vantagem, veja os modelos compatíveis:

Série GeForce 8:

GeForce 8100 mGPU, GeForce 8200 mGPU, GeForce 8300 mGPU,    GeForce 8400 GS, GeForce 8500 GT, GeForce 8600 GT, GeForce 8600 GTS, GeForce 8800 GS, GeForce 8800 GT, GeForce 8800 GTS, GeForce 8800 GTX, GeForce 8800 Ultra.

Placas da série GeForce 8 Mobile:

GeForce 8200M G, GeForce 8400M G, GeForce 8400M GS, GeForce 8400M GT, GeForce 8600M GS, GeForce 8600M GT, GeForce 8700M GT, GeForce 8800M GTS.

Placas da série GeForce 9:

GeForce 9500 GT, GeForce 9600 GT, GeForce 9600 GSO, GeForce 9800 GT, GeForce 9800 GTX, GeForce 9800 GTX+,  GeForce 9800 GX2.


Placas da série GeForce 9 Mobile:

GeForce 9100M G, GeForce 9200M GS, GeForce 9300M G, GeForce 9300M GS, GeForce 9500M G, GeForce 9500M GS, GeForce 9600M GS, GeForce 9600M GT, GeForce 9650M GS, GeForce 9700M GT.

Placas da série GeForce 10:

Todas as placas desta série são suportadas desde a GTS 250 à GTX 295.

Referente às placas nVidia Quadro, os modelos com suporte à CUDA são:

  • Placas da série Quadro Plex: Quadro Plex 1000 Model S4, Quadro Plex 1000 Model IV.
  • Placas da série Quadro FX: Quadro FX 360M, Quadro FX 570M, Quadro FX 1600M, Quadro FX 3600M, Quadro FX 370, Quadro FX 570, Quadro FX 1700, Quadro FX 3700, Quadro FX 4600, Quadro FX 4700 X2, Quadro FX 5600.
  • Placas da série Quadro NVS: Quadro NVS 290.
  • Placas da série Quadro NVS Mobile: Quadro NVS 130M, Quadro NVS 130M, Quadro NVS 130M, Quadro NVS 130M.

Já quanto às placas Tesla, os modelos suportados pelo driver são:



  • Placas da série Tesla S: Tesla S870, Tesla S1070.
  • Placas da série Tesla D: Tesla D870.
  • Placas da série Tesla C: Tesla C870, Tesla C1060.

COMPUTE CAPABILITY

Relativamente ao suporte CUDA, a nvidia dividiu as suas placas de acordo com as suas capacidades de cálculo pelo uso desta tecnologia.

Assim, o chipset G80, que equipa as Geforces série 8800 (excepção feita à 8800 GT e 8800 GTS 512 MB que usam o G92), possuem Compute Capability 1.0.

As placas equipadas com os G84, G86 e G92 (8600, 8400 e todaa série 9), possuem Compute Capability 1.1.

As placas da equipadas com o GT200 possuem Compute Capability 1.3.

A Nvidia não usou a designação 1.2, o que se prevê ser usado para placas com futuras variações do GT200 debaixo custo.

Para todos os efeitos, todas as versões possuem diferenças na capacidade de cálculo, sendo que determinado tipo de operações estão restritos às versões mais baixas. Na prática, pelo software existente, as actuais restrições são apenas verificadas no chipset G80, que não é suportado em todo o tipo de processamento. Se o será futuramente, apesar de performances inferiores às restantes versões, é ainda uma incógnita.

Em que se traduz esta limitação? As placas baseadas no G80 são de momento incapazes de suportar aceleração CUDA em descodificação/codificação vídeo HD. De resto todo o software CUDA parece estar habilitado às mesmas.



Posts Relacionados