cuda-logo

Agora o CUDA 5 é composto de um único instalador provendo o CUDA Toolkit, SDK código exemplos, e driver para os desenvolvedores. Ao instalar esta versão,  alguns contra-tempos eu me deparei em função do kernel 3.7 e/ou GCC 4.7, para facilitar o caminho de todos os desenvolvedores openSUSE, deixo esta dica de como obter sucesso na instalação. Primeiramente crie o link simbólico do aquivo version.h necessário para compilação do módulo.

$ cd /lib/modules/3.7.10-1.1-desktop/build/include/
$ ln -s generated/uapi/linux

Continuando, efetue o download do driver versão NVIDIA-Linux-x86_64-310.40.run no link http://www.nvidia.com.br/Download/index.aspx?lang=br ou instale a partir do repositório  com o comando a seguir:

# zypper ar -f ftp://download.nvidia.com/opensuse/12.3/ nvidia

Atenção: Os pacotes necessários ( requisitos obrigatórios ) para a instalação do driver são freeglut-devel, linux-glibc-devel e kernel-source.

Após a instalação do driver, efetue o download do pacote CUDA e execute a sua instalação com o parametro toolkit, sample e override:

# su
# ./cuda_5.0.35_linux_64_suse12.1-1.bin -toolkit -samples -override

Desabilitando a checagem co GCC

Altere a linha 80 do arquivo /usr/local/cuda-5.0/include/host_config.h conforme o exemplo abaixo:

#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 7)

Agora crie um arquivo com o nome  /usr/local/cuda-5.0/include/__cuda_gcc47_fix.h e insira o seguinte conteúdo:

#undef _GLIBCXX_ATOMIC_BUILTINS
#undef _GLIBCXX_USE_INT128

Agora faremos uma pequena adaptação no compilador da nvidia, adicionando um parâmetro.

cd /usr/local/cuda-5.0/bin
mv nvcc nvcc.bin
echo '#!/bin/sh
$0.bin --pre-include __cuda_gcc47_fix.h $@' > nvcc
chmod +x nvcc

Agora se tudo estiver devidamente configurado e funcionando, basta muda para a pasta /usr/local/cuda-5.0/samples, compilar os exemplos e executá-lo:

cd /usr/local/cuda-5.0/samples
make
cd bin/linux/release/
./smokeParticles

cuda

Importante: Este documento tornará desnecessário quando o CUDA tornar compatível com o gcc 4.7 e opensuse 12.3.

Para os Suseiros, este post na Wiki…