Na revista linux magazine deste mês (exemplar número 61, dezembro/2009), publiquei um artigo sobre visão computacional. Onde menciono a sua aplicabilidade em projeto de realidade aumentada, robótica e biometria que utilizam reconhecimento de padrões e processamento de imagens em tempo real.
Aplicar processos de visão computacional em fluxos de vídeo ao vivo, é uma tarefa morosa devido ao grande consumo de processamento matemático. Este custo computacional é grande mesmo para os processadores atuais, pois analisar e processar imagens ao vivo, significa aplicar complexos algoritmos em 30 quadros com dimensões 640x480 por segundo. Neste cenário, os chips gráficos serão imprescindível para um ganho significativo na performance destes aplicativos.
Vale a pena mencionar, que na teoria quando mais núcleos tem uma CPU, maior o número de transístores e por conseqüência, melhor a performance. Mas na prática isto não acontece pelo principal motivo: o software está anos atrás do hardware. Uma CPU com 4 núcleos pode perder em termos de performance nos games pelo fato do software ser otimizados para 2 núcleos. A programação em paralela para 4 núcleos significa aumentar o problema, sem contar na otimização dos compiladores para fazer uso do paralelismo.
Assim entendemos a aquisição da Petrobras pelo Supercomputador baseado em GPU (chips gráficos encontrados nas placas de vídeo). O seu poder de processamento é de 250 Teraflops e caracterizado como 16º maior supercomputador do planeta. Este equipamento auxiliará simulações geofísicas cujo objetivo é “aprimorar a visualização das camadas geológicas do subsolo para suportar a exploração e produção de petróleo”, segundo o anúncio da Bull à imprensa. Baseada na maravilhosa tecnologia NVIDIA CUDA™, o seu uso será também para melhorar o desempenho das análises sísmicas. Para isto, a Petrobras investiu em um cluster baseado em GPUs composto de 190 processadores paralelos NVIDIA Tesla.
A expectativa da Petrobras é de que a performance das GPUs aumente, e pretende atingir uma potência superior a 400 Teraflops no seu data center. Para entender melhor, a diferença fundamental entre os processadores convencional (CPUs) e os chipsets de vídeo (GPUs), as CPUs são otimizadas para cálculos sequenciais já as GPUs são otimizadas para cálculos intensamente paralelos.
No passado ficava muito claro esta diferença entres os chips, pois as placas 3D processavam muitos triângulos por segundo (3df voodoo). Mas com o surgimento dos shaders, as GPUs passaram a ganhar capacidade de processamento sequencial como as CPUs. Shaders é um procedimento de sombreamento e/ou iluminação que permite a utilização com liberdade aos programadores artistas. O termo shader é originado programa RenderMan, criado pela Pixar no final da década de 80.
Sendo mais objetivo, um GeForce 9600 GT apresenta uma performance seis vezes superior comparado com um processador Core 2 Duo E6700 na tarefa de codificação de vídeos H.264. Um trailer na resolução 1920 x 1080 pixels, a codificação com uma GPUs levaram aproximadamente 3:36 minutos, já a codificação com processos convencionais levaram em torno de 17:17 minutos.
O processamento paralelo da GPU executar mais ações com menos tráfego de informações em barramentos, usando a área de cache comum e acesso direto a memória. Com a utilização da API (OpenMM), será possível desenvolver cálculos moleculares de maneira simples e integrada com as GPUs. Logo o trabalho que uma CPU processa em dias, serão processados em horas!
Os especialistas no segmento, dizem que para o futuro, os processadores terão unidade processamento paralelo integrado, assim executando múltiplas funções. Então acredito que a GPU será outro processador auxiliar, como aconteceu com o co-processador matemático integrado nos processadores 486. Bons tempos quando eu o meu sócio comprava co-processadores matemáticos para instalar em placas com processadores 386...
Para finalizar, provavelmente publicarei no portal Viva o Linux ou na revista Linux Magazine a evolução das minhas pesquisas e desenvolvimento envolvendo a tecnológica CUDA NVIDIA aplicada a visão computacional.
Referências:
http://www.nvidia.com/object/io_1243836589036.html
http://www.nvidia.com/object/preconfigured_clusters.html
http://www.tomshardware.com/reviews/nvidia-cuda-gpgpu,2299.html
Sobre o autor: http://www.netitec.com.br/alessandro
Alessandro Faria é sócio-proprietário da empresa NETi TECNOLOGIA fundada em Junho de 1996 (http://www.netitec.com.br), empresa especializada em desenvolvimento de software e soluções biométricas, Consultor Biométrico na tecnologia de reconhecimento facial, atuando na área de tecnologia desde 1986 assim propiciando ao mercado soluções em software. Leva o Linux a sério desde 1998 com desenvolvimento de soluções open-source, membro colaborador da comunidade Viva O Linux, mantenedor da biblioteca open-source de vídeo captura entre outros projetos.