Olá, pessoal. Neste artigo, veremos a primeira parte da série de artigos que vai explorar a programação em CUDA, a extensão para a linguagem C que permite o processamento paralelo de alto desempenho nas mais novas placas de vídeo da NVIDIA.
Antes de começar a instalação, é preciso primeiro deixar algumas coisas claras. Em primeiro lugar, esta série de artigos abordará tanto a instalação e a execução de alguns exemplos com o objetivo de incentivar novos programadores a conhecer essa plataforma. Apenas para lembrar, novamente o iMasters é pioneiro na publicação de conteúdo técnico de alta qualidade que explora novas tecnologias de desenvolvimento como, por exemplo, CUDA.
A maioria das pessoas que adquire um placa de vídeo da NVIDIA a utiliza para games. Enquanto é inegável que esse hardware apresenta resultados fantásticos para o mercado do entretenimento, vale a pena destacar que as mais recentes placas da NVIDIA possuem uma maneira de se programar e extrair excelentes resultados. Um aviso: o foco da programação em CUDA, pelo menos o que for explorado nesta série de artigos, será na programação paralela de alto desempenho, e não focará em jogos.
Dentre as principais aplicações científicas pode-se citar o processamento de alto desempenho para cálculos utilizados em diversos tipos de simuladores, gerações de combinações para testes de força bruta para quebra de senhas, obtenção de números primos de Mersene e geração de trilhões de casas decimais de precisão da constante PI, dentre outros. Destaco que a área de computação de alto desempenho atualmente apresenta diversos desafios e problemas em aberto, ou seja, é uma área que precisa de muita pesquisa e de gente interessada. Os desafios são grandes, principalmente se levarmos em consideração que praticamente todos os softwares existentes não conseguem alcançar nem 5% do poder de processamento indicado pelo fabricante, porém as recompensas são igualmente satisfatórias.
Recomendo ao leitor que se interessar pela programação de jogos foque nas rotinas específicas (implementadas em hardware) descritas na documentação oficial da CUDA, que pode ser encontrada neste link, que aponta para o site oficial do fabricante.
Destaco também que a NVIDIA está apostando muito no mercado de high performance computing (HPC) através da implementação de instruções específicas no chip acessadas pelo compilador e pela tecnologia CUDA como um todo, mesmo sem ter oficialmente a patente ligada com conjunto de instruções do x86. Nem todos os fabricantes de placas gráficas são tão audaciosos, e particularmente acredito que a NVIDIA deve ser reconhecida por esse esforço.
Antes de começar a falar sobre os passos da instalação do ambiente, vou comentar um pouco sobre o hardware que tive a oportunidade de trabalhar: um computador desktop com processador Pentium i7 950 que contém 4 núcleos (8 núcleos vistos pelo sistema operacional devido à tecnologia Hyper Threading da Intel) com clock de 3.06 GHZ, 12 GM de memória RAM DDR3, 64 KB de cache L1, 256KB de cache L2 e 8MB de cache L3. Esse computador contou ainda com 1 TB de hd SATA 2 e Windows 7 Ultimate 64 bits. Essa máquina foi considerada razoável para junho de 2011 e de acordo com o fabricante o pico máximo de processamento é aproximadamente 50 GFlops.
A placa de vídeo testada é uma NVIDIA Geoforce GTX 480 que em testes apresentou pico de processamento de 1.35 Teraflops. Essa placa requer um slot PCI Express, possui duas saídas DVI, uma saída mini HDMI e o seu chip já foi criado de acordo com a arquitetura Fermi. A Figura 1 abaixo mostra duas placas Geoforce colocadas lado a lado:
Figura 1. Duas placas NVIDIA Geoforce 480 GTX lado a lado.
Já a Figura 2 mostra uma visão horizontal da mesma placa.
Figura 2. Visão horizontal da NVIDIA GTX 480.
Sem entrar nos detalhes da arquitetura ainda, é preciso instalar alguns softwares para começar a programação em CUDA que, a propósito, significa Compute Unified Device Architecture. Os seguintes downloads são necessários para se começar a programar nessa arquitetura paralela:
1) Driver atualizado da placa de vídeo;
2) O CUDA Toolkit 4.0;
3) O GPU computing SDK;
4) Um ambiente de programação para a compilação de programas C/C++. Nos exemplos desta série de artigos, utilizarei o Visual Studio 2008 Professional, porém também há suporte para a programação em Linux e Mac.
Para se obter os download citados, basta ir até o site da NVIDIA e fazer o download dos arquivos. Também recomendo fortemente o download de toda a documentação oficial fornecida. Para informações sobre o que é CUDA, recomendo este link. Destaco também este link com informações sobre material de estudo sobre CUDA e este link com informações sobre a configuração do ambiente na plataforma Linux. Este link reúne interessados na programação de GPU no Brasil e neste link é possível obter a apresentação “Primeiros Passos em CUDA”, produzido por Divino César S. Lucas. O vídeo abaixo comenta um pouco sobre o curso de programação em CUDA fornecido pela universidade americana de Illinois:
Neste artigo, apresentarei os passos necessários para a instalação do driver da placa de vídeo. O arquivo que utilizei foi o devdriver_4.0_winvista-win7_64_270.81_general, porém é sempre bom ficar atendo a atualizações do driver. Nota: é preciso estar com um driver atualizado para poder configurar o ambiente, pois caso contrário não será possível utilizar os recursos da placa. A primeira janela do instalador é apresentada na Figura 3.
Figura 3. Início da instalação do driver da NVIDIA.
A Figura 4 abaixo mostra a janela com o EUAL (End User License Agreement). Destaque para o fato de os drivers de desenvolvimento ainda serem considerados Beta.
Figura 4. EULA dos drivers da placa da NVIDIA.
A Figura 5 mostra a janela que permite escolher o modo de instalação. Por precaução, escolhi a instalação expressa, porém a instalação Personalizada não contém nada de excepcional, além da possibilidade de escolha do diretório da instalação.
Figura 5. Tela de opções de instalação do driver.
A Figura 6 apresenta a tela do instalador que permite marcar a opção de atualizações fornecidas pela NVIDIA de forma automática, caso a opção de instalações automáticas do Windows esteja ativada.
Figura 6. Opção de instalação de atualizações automáticas da NVIDIA.
A próxima tela do instalador já mostra a cópia de arquivos. Esta é a parte que pode demorar mais, pois é neste momento que os arquivos são copiados e as configurações são realizadas.
Figura 7. Tela de cópia de arquivos e configurações do instalador.
Por fim, temos a tela final do instalador na Figura 8, que mostra quais versões dos drivers de cada componente foram instaladas.
Figura 8. Tela final do instalador de drivers da NVIDIA.
Com o término da instalação do driver da NVIDIA, terminamos esta primeira parte da série de artigos que explora como programa em CUDA.
Na próxima parte, veremos como instalar o Toolkit necessário para a criação de programas em CUDA.
Um grande abraço e até a próxima.