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
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…

