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 projetos 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íveis para um ganho significativo na performance destes aplicativos.
Vale a pena mencionar que, na teoria, quanto mais núcleos tem uma CPU, maior o número de transístores e, por consequência, melhor sua 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 performance nos games pelo fato do software ser otimizados para 2 núcleos. A programação em paralelo 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 pela
Petrobras do 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 ajudará também a 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.
NVIDIA CUDA é uma arquitetura de computação paralela de propósito geral que tira proveito do mecanismo de computação paralela das unidades de processamento gráfico (GPUs) NVIDIA para resolver muitos problemas computacionais complexos em uma fração do tempo necessário em uma CPU.
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 convencionais (CPUs) e os chipsets de vídeo (GPUs), digamos que as CPUs são otimizadas para cálculos sequenciais já as GPUs são otimizadas para cálculos intensamente paralelos.
No passado ficava muito clara esta diferença entres os chips, pois as placas 3D processavam muitos triângulos por segundo (3df Voodoo). Mas com o surgimento dos shaders (rotinas criadas para tarefas específicas na criação de cenas), as GPUs passaram a ganhar capacidade de processamento sequencial como as CPUs. Os shaders permite procedimentos de sombreamento e/ou iluminação, dando assim liberdade aos programadores artistas. O termo shader é originado do programa RenderMan, criado pela Pixar no final da década de 80.
Sendo mais objetivo, uma
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. Em um trailer na resolução 1920 x 1080 pixels, a codificação com uma GPUs levou aproximadamente 3:36 minutos, já a codificação com processos convencionais levaram em torno de 17:17 minutos. Logo, é possível utilizar a tecnologia NVIDIA CUDA em codificações e decodificações de vídeos, como também em aplicações científicas de alta performance.
O CUDA permite utilizar recursos das placas NVIDIA utilizando chamadas em C (C for CUDA, compilador nvcc), o que torna o processo como um todo relativamente fácil para os BONS PROGRAMADORES. Existem também abstração para a linguagem Java (jCUDA), C# (CUDA.NET) e também Python (PyCUDA).
O processamento paralelo da GPU permite executar-se 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, sera processado em horas!
Os especialistas no segmento, dizem que, para o futuro, os processadores terão unidade processamento paralelo integrado, executando assim múltiplas funções. Então acredito que a GPU será outro processador auxiliar, como aconteceu com o coprocessador matemático integrado nos processadores 486. Bons tempos quando eu e o meu sócio comprávamos coprocessadores matemáticos para instalar em placas com processadores 386...