【发布时间】:2015-03-12 23:49:29
【问题描述】:
我正在尝试如下链接我的 CUDA Kepler 的动态并行 程序:
nvcc -m32 -arch=sm_35 -dc -Xcompiler '-fPIC' DFS_Solving.cu
nvcc -m32 -arch=sm_35 -Xcompiler '-fPIC' -dlink DFS_Solving.o -o link.o
gcc -shared -Wl,-soname,libdfs.so -o libdfs.so DFS_Solving.o link.o -L/usr/local/cuda/lib -lcudart
gcc -c proxy.c
gcc -o proxy proxy.o -L. -ldfs
然后我得到以下错误:
./libdfs.so: undefined reference to `__fatbinwrap_66_tmpxft_000015c6_00000000_12_cuda_device_runtime_compute_50_cpp1_ii_5f6993ef'
collect2: error: ld returned 1 exit status
但是:当我执行相同的过程来编译没有动态并行的 CUDA 代码时,程序可以工作。
有人知道我可以做些什么来使这个编译工作吗?
【问题讨论】:
-
你没有在我能看到的任何地方链接到
-lcudadevrt。动态并行具有特殊的编译要求。您可能想查看 cuda 动态并行 sample code 中的 makefile。所以expects,你提供了一个完整的MCVE,而不仅仅是你的编译步骤。
标签: gcc cuda nvcc linkage dynamic-parallelism