No dia 8 de Maio a NVIDIA lançou a versão 2.2 do Toolkit CUDA e SDK. Esta nova versão inclui uma lista enorme de novas funcionalidades. Com esta versão o CUDA também passou a suportar Windows 7.
Veja a lista dos novos recursos: Visual Profiler para a GPU, a interoperabilidade com OpenGL foi melhorada, Texture from Pitch Linear Memory, Zero-copy, Pinned Shared Sysmem, Asynchronous memcopy on Vista, Hardware Debugger for the GPU, Exclusive Device Mode.
Não cheguei a analisar todas as novas funcionalidades, mas de cara já dá para perceber que deve estar bem mais fácil desenvolver para CUDA com esta versão devido aos novos recursos de profiling e debugging.
Para mais informações, acesse o site da NVIDIA no link abaixo (em inglês):
CUDA é uma arquitetura para computação paralela em GPUs da NVIDIA. Basicamente é um conjunto de ferramentas e uma linguagem C para programar as GPUs da NVIDIA.
Há suporte para Linux, Windows e Mac OS X, tanto em 32 bits como em 64 bits.
Para instalar no Mac OS X, segui os seguintes passos.
Primeiro instale o Toolkit. Clique na opção Customized e certifique-se de que todas as opcões estão habilitadas:
Reinicie seu computador, conforme a instalação do Toolkit solicitou;
Instale o SDK
Para compilar os exemplos que acompanham o SDK, é necessário adicionar as seguintes linhas no seu arquivo ~/.bash_profile. Normalmente este arquivo não existe, então é necessário criá-lo. Para isto utilize seu editor de texto puro preferido, coloque as linhas abaixo e salve no seu diretório home com o nome .bash_profile:
Para compilar os exemplos do SDK, abra um Terminal e:
$ cd /Developer/CUDA
$ make
$ make dbg=1
$ make emu=1
$ make emu=1 dbg=1
As opções acima irão criar diretórios variados em /Developer/CUDA/bin/darwin/ com diversas versões dos binários de exemplo. Para deixar mais claro, dbg compila versões para debug e emu compila versões que rodam sob emulação na própria CPU. Embora nos leve a crer que seja possível executar estes exemplos sem uma GPU da NVIDIA, é um mero engano. Num teste realizado com um MacBook sem GPU NVIDIA, nem em modo emulado executou.
Benchmark
A seguir um pequeno benchmark comparando a uma simulação n-body com GPU e sem GPU (modo emulado):
$ cd /Developer/CUDA
$ bin/darwin/release/nbody -benchmark -n=1000
Run "nbody -benchmark -n=<numBodies>" to measure perfomance.
1000 bodies, total time for 100 iterations: 47.264 ms
= 2.116 billion interactions per second
= 42.316 GFLOP/s at 20 flops per interaction
$ bin/darwin/emurelease/nbody -benchmark -n=1000
Run "nbody -benchmark -n=<numBodies>" to measure perfomance.
1000 bodies, total time for 100 iterations: 5305.616 ms
= 0.019 billion interactions per second
= 0.377 GFLOP/s at 20 flops per interaction
Apesar do modo emulado provavelmente ser mais lento do que um código desenvolvido especialmente para CPUs, dá para se ter uma boa noção do poder de processamento das GPUs. Os resultados mostraram que a GPU foi cerca de 112x mais rápida do que a CPU!
Eye Candy
Um pouco de “doce para os olhos”. Aqui rodei o exemplo nbody e capturei sua tela: