mai
26
2009

Rapidinha: Compilando um programa C++ com CUDA

No Gravatar

Em meus primeiros passos no aprendizado de programação em CUDA, tive um problema muito básico, mas que foi difícil encontrar a solução do mesmo: como compilar um programa escrito em C++ for CUDA ???

Vejamos um exemplo de código, o arquivo teste.cu

//**********************************************************************************************

cudaArray* cu_array;
texture<float, 2> tex;

// Allocate array
cudaMallocArray(&cu_array, cudaCreateChannelDesc<float>(), width, height);

// Copy image data to array
cudaMemcpy(cu_array, image, width*height, cudaMemcpyHostToDevice);

// Bind the array to the texture
cudaBindTexture(tex, cu_array);

// Run kernel
dim3 blockDim(16, 16, 1);
dim3 gridDim(width / blockDim.x, height / blockDim.y, 1);
kernel<<< gridDim, blockDim, 0 >>>(d_odata, width, height);
cudaUnbindTexture(tex);

__global__ void kernel(float* odata, int height, int width)
{
unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;
unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;
float c = texfetch(tex, x, y);
odata[y*width+x] = c;
}
//**********************************************************************************************

Para compilar este programa, primeiramente é necessário ter o compilador nvcc instalado, por meio das bibliotecas fornecidas pela NVidia.

Temos então a seguinte sequência de comandos:

nvcc -cuda teste.cu

Este comando irá gerar um código C++ a partir do arquivo teste.cu, guardando-o no arquivo teste.cu.cpp. Após isso, faz-se:

nvcc teste.cu.cpp -o teste.exe

E assim, teremos o executável tão desejado!

Espero que ajude!

See ya!

  • Share/Bookmark

1 Comentário »

  • Wagner disse:

    Gostaria de saber em qual aplicativo ou diretório o arquivo teste.cu deve ser compilado. E se esta verificação é feita na plataforma windows ou linux.

    Att,
    Wagner

RSS feed for comments on this post. TrackBack URL


Leave a Reply

Template: TheBuckmaker.com Website Templates | Kostenloses Konto, PHP Scriptarchive

No TecnoSapiens você encontra artigos sobre:

adeona apple Backup bloomberg brasileiro broffice cabos submarinos calendário computador CUDA eficiência expandir gmail google google chrome guerra dos browsers hacker História home-office instalar laptop Latex Linux localização mecanismos de busca microsoft mpi navegadores obituario openmpi openoffice orkut pdf produtividade programação paralela rastrear redes sociais Semicondutores simulação computacional Software livre steve jobs tecnologia transistor Ubuntu windows