Вы находитесь на странице: 1из 3

Manual de instalao e configurao CUDA

Sidney Blefari dos Santos1


102536@upf.br

A instalao foi realizada em hardware e software com as seguintes configuraes: Placa Nvidia GeForce GT 630 contendo GPU com 96 ncleos Cuda, Processador Intel I7 Gerao 3(3.4Ghz), 8 Gb memria e Ubuntu 12.10 previamente instalado e atualizado. Para a instalao do CUDA, extremamente necessria a atualizao do driver disponvel pela Nvidea em seu site. Os passos a seguir so compostos por etapas que devem ser seguidas rigorosamente para uma instalao limpa e sem bugs.

Passo 1 Logar na interface com privilgios de administrador, baixar o driver e software salvando em local preferido. Colocamos na pasta downloads.
Link Driver: http://www.nvidia.com/object/linux-display-amd64-310.32-driver Link Software: https://developer.nvidia.com/cuda-downloads

Passo 2 Reiniciar e entrar na interface de linha de comando (ctrl+alt+f1). Passo 3 Pare o servio x Server(Placa de vdeo) e prepare a instalao, utilizando os seguintes comandos: sudo service lightdm stop sudo apt-get install linux-source sudo apt-get install linux-headers-generic sudo apt-get install linux-headers-3.5.0 Passo 4 Instale o driver: chmod +x NVIDIA-Linux-x86_64-310.32.run sudo ./NVIDIA-Linux-x86_64-310.32.run sudo shutdown -r now (reiniciar)
Passo 5 Entre em linha de comando e pare o servio novamente. sudo service lightdm stop Passo 6 Instale o software: chmod +x cuda_5.0.35_linux_64_ubuntu11.10-1.run sudo ./cuda_5.0.35_linux_64_ubuntu11.10-1.run

Devera mostrar o aviso sobre o termo de licena:


a) CUDA Toolkit >>> Linux: /usr/local/cuda-#.# b) CUDA Samples >>> Linux: /usr/local/cuda-#.# e $HOME/NVIDIA_CUDA-#.#_Samples c) NVidia Display Driver Sero apresentadas informaes sobre as bibliotecas que sero instaladas: Componente: CUDA Runtime = libcudart.so Componente: CUDA FFT Library = libcufft.so Componente: CUDA BLAS Library = libcublas.so Componente: CUDA Sparse Matrix Library = libcusparse.so Componente: CUDA Random Number Generation Library = libcurand.so Componente: CUDA Performance Primitives Library = libnpp.so

A seguir o termo de licenciamento mostrado. Aceite e prossiga.


Do you accept the previously read EULA (accept/decline/quit): ACCEPT Install NVIDIA Accelerated Graphics Driver for Linux-x86 304.54? ((Y)es/(N)o/(Q)uit): y Install the CUDA 5.0 Toolkit? ((Y)es/(N)o/(Q)uit): y Enter Toolkit Location [ default is /usr/local/cuda-5.0 ]: <ENTER> Install the CUDA 5.0 Samples? ((y)es/(n)o/(q)uit): y Enter CUDA Samples Location [ default is /usr/local/cuda-5.0/samples ]: <ENTER>

Aguarde a instalao.
Installing the NVIDIA display driver Installing the CUDA Toolkit in /usr/local/cuda-5.0 Installing the CUDA Samples in /usr/local/cuda-5.0/samples =========== = Summary = =========== Driver: installed Toolkit: Installed in /usr/local/cuda-5.0 Samples: Installed in /usr/local/cuda-5.0/samples (pristine) and /home/user/NVIDIA_CUDA-5.0_Samples (writable) Agora necessrio ajustar parmetros e testar os exemplos. Edite o arquivo .bashrc $ gedit .bashrc Ao final do arquivo insira as linhas: ## Configuracao CUDA export PATH=$PATH:/usr/local/cuda/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib

Feito isso, reinicie e entre em modo grfico novamente. A instalao est concluda. A execuo do Cuda requer que a verso do compilador gcc e g++ estejam no mximo na verso 4.6 caso contrrio deve ser feito um link que o Cuda interprete a verso mais antiga. Analisando o cdigo abaixo possvel perceber o fluxo de execuo de um programa CUDA.
#include "../common/book.h" #define N 10

int main(void) { int a[N], b[N], c[N]; int *dev_a, *dev_b, *dev_c;

// alocando memria na GPU HANDLE_ERROR( cudaMalloc( (void**)&dev_a, N *sizeof(int) ) ); HANDLE_ERROR( cudaMalloc( (void**)&dev_b, N *sizeof(int) ) ); HANDLE_ERROR( cudaMalloc( (void**)&dev_c, N *sizeof(int) ) ); // coloca 'a' e 'b' na CPU for(inti=0; i<N; i++) { a[i] = -i; b[i] = i * i; } // copia de a e b para a GPU HANDLE_ERROR( cudaMemcpy( dev_a, a, N *sizeof(int),cudaMemcpyHostToDevice ) ); HANDLE_ERROR( cudaMemcpy( dev_b, b, N *sizeof(int),cudaMemcpyHostToDevice ) ); add<<<N,1>>>( dev_a, dev_b, dev_c ); // copia de volta de c da GPU para CPU HANDLE_ERROR( cudaMemcpy( c, dev_c, N *sizeof(int),cudaMemcpyDeviceToHost ) ); // Mostrando o resultado for(inti=0; i<N; i++) { printf("%d + %d = %d\n", a[i], b[i], c[i] ); } // Liberando memria alocada na GPU cudaFree( dev_a ); cudaFree( dev_b ); cudaFree( dev_c ); return 0; }

Вам также может понравиться