Ich schrieb ein einfaches CUDA-C++ - Programm, das die Diffusion auf einer 2D-Matrix simuliert. Ich habe Probleme bekommen, als ich versucht habe, einige der in Toolkit bereitgestellten Bibliotheken zu verwenden. Ich möchte meinen extrem ineffizienten Matrix-Transpose-Kernel durch etwas von cuBlas und implCU durch cuSolvers-Implementierung von linearen Systemen ersetzen. Das Problem ist, dass ich nicht weiß, wie man die Funktionen benutzt oder kompiliert. Es arbeitet mit Makefiles zu Beispielcodes von Nvidia. Wenn mir jemand helfen würde, der mir im Idealfall zeigt, wie diese Funktionen beim Schreiben von .cu-Dateien verwendet werden sollen, wäre ich dankbar. HierKompilieren meines CUDA-Programms mit Bibliotheken im Toolkit
ist der Code: http://pastebin.com/UKhJZQBz
Ich bin auf Ubuntu 16.04 und ich habe die PATH-Variablen exportiert werden (so sie gehören /usr/local/cuda-8.0/bin) wie im Verzeichnis geschrieben. Hier
ist die Ausgabe von nvcc -I /usr/local/cuda-8.0/samples/common/inc/ difusion2d.cu
/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `csr_mat_norminf(int, int, int, cusparseMatDescr*, double const*, int const*, int const*)':
undefined reference to `cusparseGetMatIndexBase'
/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `display_matrix(int, int, int, cusparseMatDescr*, double const*, int const*, int const*)':
undefined reference to `cusparseGetMatIndexBase'
/tmp/tmpxft_00001c09_00000000-16_difusion2d.o: In function `main':
undefined reference to `cusolverDnCreate'
undefined reference to `cublasCreate_v2'
undefined reference to `cusolverDnSetStream'
undefined reference to `cublasSetStream_v2'
collect2: error: ld returned 1 exit status
So wie es für mich gearbeitet ist nvcc -I /usr/local/cuda-8.0/samples/common/inc/ -lcusolver -lcublas -lcusparse difusion2d.cu –