Cuda-C - Linker-Fehlermeldung - undefined reference

Ich habe eine harte Zeit, die das kompilieren eines einfachen cuda-Programm ist zusammengesetzt aus nur zwei Dateien.

Den main.c sieht wie folgt aus:

#include "my_cuda.h"

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

Den cuda.h sieht wie folgt aus:

#ifndef MY_DUMMY
#define MY_DUMMY

void dummy_gpu();

#endif

Und die my_cuda.cu-Datei loos wie dieser:

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

__global__ void dummy_gpu_kernel(){
   //do something
}

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

Aber wenn ich compile ich immer die folgende Fehlermeldung:

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

Danke für Eure Hilfe.

  • Mein CUDA ist rostig, aber Sie sollten nicht in der Lage, um Symbole zusammengestellt, die mit dem nvcc-compiler. Müssen Sie setup ein kernel, und nennen Sie die notwendigen Funktionen starten, wenn ich mich nicht Irre.
  • Die eigentliche Frage ist: warum nicht nvcc für die Verknüpfung und lassen Sie es die Arbeit machen? Oder so etwas wie CMake?
  • CMake würde scheitern.
InformationsquelleAutor user1829358 | 2012-11-25
Schreibe einen Kommentar