Erstellen einer statischen CUDA-Bibliothek in verknüpft werden mit einem C++ - Programm

Ich bin versucht, link ein CUDA-kernel mit C++ autotools-Projekt jedoch nicht scheinen, um passieren die Verknüpfung Bühne.

Ich habe eine Datei GPUFloydWarshall.cu enthält den kernel und eine wrapper-C-Funktion möchte ich in einer Bibliothek libgpu.ein. Dies wird konsistent mit dem Rest des Projekts. Ist das überhaupt möglich?

Zweitens, die Bibliothek müssten dann mit etwa zehn anderen Bibliotheken für die wichtigsten ausführbare Datei, die im moment mit mpicxx.

Momentan benutze ich/generiert die unten Befehle zum kompilieren und erstellen der libgpu.eine Bibliothek

nvcc   -rdc=true -c -o temp.o GPUFloydWarshall.cu
nvcc -dlink -o GPUFloydWarshall.o temp.o -L/usr/local/cuda/lib64 -lcuda -lcudart
rm -f libgpu.a
ar cru libgpu.a GPUFloydWarshall.o
ranlib libgpu.a

Wenn das alles verbunden, die in das Hauptprogramm bekomme ich die folgende Fehlermeldung

problem/libproblem.a(libproblem_a-UTRP.o): In function `UTRP::evaluate(Solution&)':
UTRP.cpp:(.text+0x1220): undefined reference to `gpu_fw(double*, int)'

Th gpu_fw Funktion ist meiner wrapper-Funktion.

InformationsquelleAutor Matt John | 2014-11-12
Schreibe einen Kommentar