Introdução
A plataforma CUDA (Compute Unified Device Architecture), da NVIDIA, é uma plataforma integrada software-hardware para desenvolvimento de aplicações de computação de uso geral utilizando os processadores gráficos (GPUs) da NVIDIA como co-processadores para processamento paralelo de longas cadeias de dados de elevada intensidade aritmética, casos em que há significativo ganho de desempenho com relação às CPUs. Essa plataforma funciona com todas as GPUs a partir da série G80 (Por exemplo: GeForce 8300, GeForce 8600GT, GeForce 8800GTX, GT260, GT280, GT295, etc. Ver lista completa no site da NVIDIA).
O software CUDA pode ser livremente baixado do site da NVIDIA, disponível para as plataformas Windows, OSX e Linux.
Na plataforma Windows, o software deve ser usado integrado ao MS Visual Studio 2005 (Obs: o MS Visual Studio 2008 não funciona bem com a CUDA). Infelizmente o software não funciona com a versão grátis do MSVS, o Visual Studio Express.
Nos sistemas Linux o software CUDA funciona bem se utilizado com terminais de texto, na linha-de-comando, mas alguns usuários ressentem-se da ausência de um ambiente gráfico de desenvolvimento. Os dois principais ambientes gráficos disponíveis são o ECLIPSE e o NetBeans. Apresentarei a seguir um guia passo-a-passo para a configuração do Netbeans 6.5.1 para o desenvolvimento de aplicações para a plataforma CUDA.
Supondo que o interessado já tem o software CUDA instalado na sua máquina, na distribuição Linux Ubuntu 8.10 (senão, veja como).
Instalação do Netbeans 6.5.1
1. Instalar o JDK (Java Development Kit) versão 6 ou superior (site da Sun Microsystems). No ubuntu basta usar o instalador Synaptic.
2. Instalar o Netbeans 6.5.1.
3. Rodar o Netbeans e configurá-lo como descrito a seguir (texto original).
Fazendo o editor reconhecer a extensão .cu
1. Navegue até
Menu->Ferramentas->Opções
2. Clique no botão “Miscelânea”;
3. Selecione a aba “Arquivos”;
4. Clique no botão “Novo…”;
5. Abrir-se-á uma janela com um campo intitulado “Extensão de arquivo:”;
6. Digite “cu” (sem as aspas) no espaço em branco e clique no botão “OK”;
7. Em seguida escolha a opção “Arquivos C (text/x-c)” (sem as aspas) na lista intitulada “Tipo de arquivo associado (MIME)”;
8. Clique no botão “OK”.
Fazendo o editor utilizar o compilador nvcc
1. Navegue até
Menu->Ferramentas->Opções
2. Clique no botão “C/C++”;
3. Seleciona a aba “Outro”;
4. Clique o botão “Editar” ao lado da lista “Extensões arquivo C:”;
5. Abrir-se-á uma janela intitulada “Lista de extensões”;
6. Digite “cu” (sem as aspas) no campo intitulado “Extensão” e clique no botão “Adicionar”;
7. Em seguida clique no botão “OK”.
8. Navegue até
Menu->Ferramentas->Opções
9. Clique no botão “C/C++”;
10. Selecione a aba “Ferramentas de construção”;
11. Clique no botão “Adicionar” da lista “Grupo de ferramentas”
Abrir-se-á uma janela intitulada “Adicionar nova coleção de ferramentas”
12. Clique no botão “Procurar” e navegue até a pasta onde o nvcc está instalado:
/usr/local/cuda/Bin
13. Selecione “GNU” na lista intitulada “Família do grupo de ferramentas”
14. Digite “nvcc” (sem as aspas) no campo intitulado “Nome do grupo de ferramentas”.
15. Clique no botão “OK”, fechando a janela “Adicionar nova coleção de ferramentas”.
16. Clique no botão “OK”, fechando a janela “Opções”.
Abrindo e configurando um projeto CUDA
1. Navegue até
Menu->Arquivo->Novo projeto
Abrir-se-á a janela intitulada “Novo Projeto”;
2. Selecione a opção “C/C++” da lista “Categorias:” e a opção “Projeto C/C++ a partir de código existente” na lista “Projetos”;
3. Clique o botão “Próximo>”;
4. A janela se alterará, aparecendo o campo intitulado “Ferramenta de construção” com a pergunta “Como você constrói o código?”;
5. Selecione a opção “Usando um makefile existente”;
6. Em seguida dê um clique no botão “Procurar…”;
7. Navegue até a pasta de um projeto do NVIDIA_CUDA_SDK. Por exemplo,
/home/seu-nome/NVIDIA_CUDA_SDK/projects/clock,
selecione o arquivo “Makefile” e clique no botão “Selecionar”, voltando à janela anterior;
8. Clique no botão “Próximo>”;
9. A janela se alterará, aparecendo o campo intitulado “Ações de construção”.
10. No campo “Diretório de trabalho:” deve estar o caminho para o diretório onde está o arquivo “Makefile” do projeto. Pode-se tanto digitar o caminho diretamente no campo apropriado quanto navegar até o diretório dando-se um clique no botão “Procurar…”.
11. No campo “Comando Construir:” deve estar o comando que invoca o compilador. O sistema inclui automaticamente a linha de comando “make -f Makefile“, que compila o programa no modo “release” usando o Makefile do projeto. Caso se deseje utilizar o emulador de GPU deve-se substituir a linha de comando por “make emu=1 -f Makefile“.
12. No campo “Comando Limpar:” deve estar o comando “make -f Makefile clean“.
13. No campo “Resultado da construção:” deve estar o caminho do arquivo executável a ser gerado pelo compilador. Pode-se digitar o caminho ou utilizar o botão “Procurar” para navegar até a pasta do programa-objeto, e então digitar o nome do arquivo executável no campo “File name:”, clicando no botão “Selecionar” em seguida;
14. Clique então no botão “Proximo >”;
15. A janela se alterará, aparecendo o campo intitulado “Arquivos de código-fonte”;
16. Abra a lista intitulada “Tipos de arquivo a ser adicionado ao projeto:” e selecione o penúltimo item, que deve conter uma lista semelhante a:
.cpp .cc .c++ .cxx .C .mm .c .i .m .cu .h .H .hpp .hxx .SUNWCCh .tcc .f .F .f90 .F90 .f95 .F95 .f03 .F03 .for .il .mod
Nota: observe que a extensão “.cu” faz parte da lista;
17. Clique então no botão “Proximo >”;
18. A janela se alterará, aparecendo o campo intitulado “Configuração da assistência a código”;
19. Selecione a opção “Configuração automática”;
20. Clique então no botão “Proximo >”;
21. A janela se alterará, aparecendo o campo intitulado “Nome e local do projeto”.
22. Deixe como estão os campos “Nome do projeto:”, “Localização do projeto:” e “Pasta do projeto:”;
23. Ative a seleção “Definir como projeto principal.”.
24. Clique então no botão “Finalizar”.
Seu projeto aparecerá então como uma árvore de diretórios na janela à esquerda do Netbeans;
25. Clique com o botão direito do mouse no nome do projeto (clock_1) e selecione a opção “Propriedades”, que é a mais de baixo.
26. Abrir-se-á a janela intitulada “Propriedades do projeto -clock_1″;
27. Clique a opção “Construir” da janela “Categorias”, à esquerda;
28. Agora selecione “nvcc” na lista intitulada “Coleção de ferramentas”, do lado direito;
29. Abra a opção “Construir” da árvore de Categorias, clicando na seta à esquerda da palavra “Construir”;
30. Agora clique na palavra “Make” abaixo da palavra “Construir”, e ao lado direito aparecerão as opções de Diretório de trabalho, Comando construir, Comando limpar, e Resultado da construção, já vistos na configuração inicial do projeto. Você poderá, por exemplo, alterar a linha de comando de Construir para que possa ou gerar o código final, ou usar o emulador, ou usar o debug, etc., como convenha;
31. Clique agora a palavra “Executar” na lista de “Categorias”;
32. No campo “Executar diretório” deverá haver o caminho completo para o arquivo executável a ser gerado pelo Make.
33. No campo “Ambiente” deverão ser incluidas as variáveis PATH e LD_LIBRARY_PATH da seguinte forma:
a. Clique no botão “…” à direita da opção “Ambiente”. Abrir-se-á uma janela intitulada “Default – Ambiente”;
b. Clique uma vez no botão “Adicionar”. Aparecerá uma linha vazia na tabela com as colunas “Nome” e “Valor”;
c. Digite “PATH” (sem aspas) no campo “Nome” e “$PATH:/usr/local/cuda/lib” no campo “Valor”;
d. Clique novamente no botão “Adicionar” para acrescentar nova linha à tabela e preencha-a da seguinte forma:
e. Digite “LD_LIBRARY_PATH” (sem aspas) no campo “Nome” e “$LD_LIBRARY_PATH:/usr/local/cuda/lib” no campo “Valor” e clique no botão “OK”;
34. A opção “Construir primeiro” deve estar selecionada;
35. No campo “Tipo de console”, selecione a opção “Terminal externo”;
36. No campo “Tipo de terminal”, selecione a opção “Gnome Terminal”.
37. Clique no botão “OK”.
38. Pressione a tecla F6 para construir e executar o projeto “clock”;
39. Deve abrir-se uma janela de texto e aparecer as seguintes mensagens:
==============================================
Test PASSED
time = 810000
Press ENTER to exit…
==============================================
40. Ao se pressionar a tecla ENTER deve aparecer a seguinte mensagem:
[Pressione Enter para fechar a janela]
41. Pressione a tecla ENTER novamente e a janela se fechará.
Parabéns!!! Você acaba de configurar seu IDE Netbeans para compilar e executar programas CUDA.
Nota
Ao criar um novo projeto, siga a recomendação da NVIDIA: Copie o conteúdo do diretório “template” que está no diretório “projects” do NVIDIA_CUDA_SDK num novo diretório criado para o novo projeto. Em seguida troque os nomes dos arquivos e edite o conteúdo do “Makefile” para adequá-los ao novo projeto.
O que ainda pode ser feito
Configurar o sistema para gerar automaticamente o Makefile dos novos projetos
Parte ou todo esse roteiro não funcionou pra você? Deixe comentário!
Gostar disso:
Seja o primeiro a gostar disso post.