2016-06-28 154 views
0

我在Ubuntu 16.04上使用CUDA 7.5 SDK,通过nvidia-cuda-toolkit包安装。我正在尝试使用cuFFT的回调函数编译一个简单的测试程序;该示例的源代码是available at GitHub为什么我会在这个libcufft_static例子中得到“未定义引用__cudaRegisterLinkedBinary_60 _....`”错误?

Following the instructions for compiling with the callback feature,我编译源为可重定位的装置代码和链接对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和其他地方看到的类似问题的提及都没有做到上面显示的单独编译步骤;我不认为这是这种情况。

+1

我也没有与CUDA 8 RC和CentOS7的麻烦。 Ubuntu 16.04不是CUDA 7.5官方支持的发行版,所以我怀疑你的CUDA安装确实已经中断。它看起来像你的CUDA安装分布在不寻常的地方,如'/ usr/lib' –

+0

@RobertCrovella:感谢您的信息。我会尝试删除Ubuntu CUDA工具包包,并从NVidia的二进制安装程序安装,以查看是否有帮助。 –

+0

您最安全的选择是切换到受支持的配置。 Ubuntu 16.04上的CUDA 8.0RC是受支持的配置。 CUDA 7.5(不管你如何安装它)不是。 –

回答

1

我可以通过升级到CUDA 8.0 RC来解决此问题,正如@RobertCrovella在上面的注释中所建议的那样。 7.5 Ubuntu软件包必须存在问题。

+0

这不是Ubuntu软件包。 CUDA 7.5不支持gcc版本5. CUDA 8RC确实 – talonmies

+0

@talonmies:那么我会在Ubuntu包中调用这个问题;如果发行版的gcc打包版本无法使用,他们可能甚至不应该提供一个。或者,它应该要求安装一个旧的gcc软件包(例如'gcc-4.9'),然后'nvcc'将被配置为使用。 –

+1

我没有看到nvidia-cuda-toolkit被列为在[nvidia linux安装指南]中使用的推荐软件包之一(http://docs.nvidia.com/cuda/cuda-installation-guide-linux /index.html#ubuntu-installation)。我不知道是谁打包的。我认为,一般来说,如果您按照nvidia linux安装指南中的说明操作,您可能会有更好的体验。 –

相关问题