0

我在 Ubuntu 16.04 上使用 CUDA 7.5 SDK,通过nvidia-cuda-toolkit包安装。我正在尝试使用 cuFFT 的回调功能编译一个简单的测试程序;该示例的源代码可在 GitHub 上获得

按照使用回调功能进行编译的说明,我将源代码编译为可重定位设备代码并链接到libcufft_static.a

nvcc -ccbin g++ -dc -m64 -o cufft_callbacks.o -c cufft_callbacks.cu
nvcc -ccbin g++ -m64 -o cufft_callbacks cufft_callbacks.o  -lcufft_static -lculibos

在上述序列中,最终命令失败并出现一系列错误,都与此类似:

/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libcufft_static.a(set_callback.o): In function `__sti____cudaRegisterAll_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d()':
tmpxft_00003a6a_00000000-4_set_callback.cudafe1.cpp:(.text+0x6fd): undefined reference to `__cudaRegisterLinkedBinary_47_tmpxft_00003a6a_00000000_7_set_callback_cpp1_ii_b7e0d86d'

它抱怨许多丢失的符号,都以__cudaRegisterLinkedBinary_. 我不认为我做错了什么,因为相同的命令序列在我手头的 CentOS 7 机器上正常工作。

我的 SDK 是否可能以某种方式配置错误?我在 SO 和其他地方看到的所有类似问题的提及都是未能执行上面显示的单独编译步骤;我认为情况并非如此。

4

1 回答 1

1

正如@RobertCrovella 在上面的评论中建议的那样,我可以通过升级到 CUDA 8.0 RC 来解决这个问题。7.5 Ubuntu 软件包一定有问题。

于 2016-06-30T14:41:15.540 回答