微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在“ / tmp / tmpxft_0000120b_0000000-10_my_program”中对“ cublasCreate_v2”的未定义引用

如何解决在“ / tmp / tmpxft_0000120b_0000000-10_my_program”中对“ cublasCreate_v2”的未定义引用

我尝试使用NVIDIA Tesla P100图形卡(Ubuntu版本16.04)上的CUDA 9.0工具包编译代码,并且代码中使用了CUBLAS库。为了进行编译,我使用以下命令来编译“ my_program.cu”

nvcc -std=c++11 -L/usr/local/cuda-9.0/lib64 my_program.cu -o mu_program.o -lcublas

但是,我遇到了以下错误

nvlink error: Undefined reference to 'cublasCreate_v2’in '/tmp/tmpxft_0000120b_0000000-10_my_program’

由于我已经在编译命令中链接了库路径,为什么仍然出现错误。请帮助我解决错误

解决方法

似乎很明显,您正在尝试使用设备代码中的CUBLAS库。这与普通主机用法不同,并且需要特殊的编译/链接步骤。您需要:

  1. 针对正确的设备架构进行编译(必须为cc3.5或更高版本)
  2. 使用可重定位设备代码链接
  3. cublas 设备库中的
  4. 链接(除了cublas主机库之外)
  5. CUDA设备运行时库中的链接
  6. 在CUDA 10.0之前使用CUDA工具包

编译命令行中的以下新增内容应该可以帮助您:

nvcc -std=c++11 my_program.cu -o my_program.o -lcublas -arch=sm_60 -rdc=true -lcublas_device -lcudadevrt

以上内容假设您实际上使用的是CUDA 9.0的正确安装。不建议使用CUBLAS设备库,现在已从较新的CUDA工具包中将其删除(请参见here)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。