Cuda C - Linker erreur undefined reference

Je vais avoir du mal à compiler un simple cuda programme consiting de seulement deux fichiers.

Le principal.c ressemble à ceci:

#include "my_cuda.h"

int main(int argc, char** argv){
   dummy_gpu();
}

Le cuda.h ressemble à ceci:

#ifndef MY_DUMMY
#define MY_DUMMY

void dummy_gpu();

#endif

Et la my_cuda.cu fichier loos comme ceci:

#include <cuda_runtime.h>
#include "my_cuda.h"

__global__ void dummy_gpu_kernel(){
   //do something
}

void dummy_gpu(){
   dummy_gpu_kernel<<<128,128>>>();
}

Cependant, si je compile j'ai toujours l'erreur suivante:

gcc  -I/usr/local/cuda/5.0.35/include/ -c main.c
nvcc  -c my_cuda.cu
gcc  -L/usr/local_rwth/sw/cuda/5.0.35/lib64 -lcuda -lcudart -o md.exe main.o my_cuda.o 
main.o: In function `main':
main.c:(.text+0x15): undefined reference to `dummy_gpu'
collect2: ld returned 1 exit status

Merci pour votre aide.

Mon CUDA est rouillé, mais vous ne devriez pas être en mesure d'appeler les symboles compilé avec le compilateur nvcc. Vous avez besoin de l'installation d'un noyau et d'appeler la nécessaire fonctions de lancement, si je ne me trompe pas.
La vraie question est: pourquoi ne pas utiliser nvcc pour les liens et les laisser faire le travail? Ou utiliser quelque chose comme CMake?
CMake serait un échec.

OriginalL'auteur user1829358 | 2012-11-25