Ubuntu 14.04上的CUDA 7.0测试失败

我按照nvidia官方指南安装了cuda-7.0,但是我遇到了一些问题他们没有提供完整的解释。 而我的测试样本不能由make构建。 我将解释我在安装过程中发现的几个错误。

环境

我正在开发64位Ubuntu 14.04,由lspci | grep -i nvidia返回NVIDIA Corporation GK107 [GeForce GT 640 OEM] lspci | grep -i nvidia 。 我的gcc版本是4.4.7。

我从https://developer.nvidia.com/cuda-downloads下载了“Linux x86 – > Ubuntu 14.04 – >本地软件包安装程序”,它没有提供要检查的md5值。 但后来安装很好看似乎。

安装

我做了:

 sudo dpkg -i cuda*.deb # returned: OK sudo apt-get update sudo apt-get install cuda 

测试

正如官方指南所说,我必须首先设置环境路径。 我改为:

 cd /usr/local/cuda-7.0 

我可以添加路径:

 export PATH=/usr/local/cuda-7.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH 

这是第一个问题:每当我关闭终端时路径都会丢失。 因为我可以用nvcc -V检查它,我们在第一个目录下有nvcc。

当我尝试编译样本时:

 cd /usr/local/cuda-7.0/samples sudo make 

最后它返回错误:

 make[1]: entering directory `/usr/local/cuda-7.0/samples/2_Graphics/Mandelbrot' /usr/local/cuda-7.0/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_20,code=sm_20 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_52,code=compute_52 -o Mandelbrot Mandelbrot.o Mandelbrot_cuda.o Mandelbrot_gold.o -L../../common/lib/linux/x86_64 -L/usr/lib/"nvidia-346" -lGL -lGLU -lX11 -lXi -lXmu -lglut -lGLEW /usr/bin/ld: warning: libnvidia-tls.so.346.46, needed by /usr/lib/nvidia-346/libGL.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libnvidia-glcore.so.346.46, needed by /usr/lib/nvidia-346/libGL.so, not found (try using -rpath or -rpath-link) /usr/lib/nvidia-346/libGL.so:'_nv018tls' undefined reference ... # list of undefined reference 

我无法走得更远。

其他检查

  • cat /proc/driver/nvidia/version不起作用,因为/proc/driver没有目录nvidia/

  • /dev/nvidia*不退出。

  • 找不到nvidia-smi命令。

重启后存在这些问题。


一些修复

通过在~/.profile为当前用户添加这两行来修复路径和lib设置:

 export PATH=/usr/local/cuda-7.0/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:$LD_LIBRARY_PATH 

并找到了一个有用的链接: 在Ubuntu 14.04中安装和测试CUDA似乎我需要通过运行文件来安装。

经过几次试验,我终于找到了解决方案。 安装CUDA是一件痛苦的事情,因此我的系统配置无法破坏,我无法恢复。

安装解决方案必须在tty1 (命令行)模式下完成,因为它需要在安装NVIDIA驱动程序之前终止GUI服务,否则它将拒绝工作。 我们需要.run文件。 由于原因,我无法知道.deb文件从未正确配置自己,我从来没有让它们工作。 在Ubuntu 14.04中安装和测试CUDA以获得类似的解决方案。

需要提一下,根据我的踪迹:

  • 通过apt安装无法成功。
  • 通过deb文件安装无法成功。

我有同样的问题。 运行以下命令帮助我测试并了解问题:

ldd /usr/lib/nvidia-346/libGL.so.346.46

最后,在我的~/.profile添加以下内容解决了问题:

 export LD_LIBRARY_PATH=/usr/lib/nvidia-346:$LD_LIBRARY_PATH 

实际上/usr/lib/nvidia-346路径没有给链接器。

我在Ubuntu 14.04,x86_64和cuda 7.5上也遇到了同样的问题。 警告是:

 /usr/bin/ld: warning: libnvidia-tls.so.352.63, needed by /usr/lib/nvidia-352/libGL.so, not found (try using -rpath or -rpath-link) /usr/bin/ld: warning: libnvidia-glcore.so.352.63, needed by /usr/lib/nvidia-352/libGL.so, not found (try using -rpath or -rpath-link) 

这是ldd /usr/lib/nvidia-352/libGL.so的输出:

 $ ldd /usr/lib/nvidia-352/libGL.so linux-vdso.so.1 => (0x00007ffc1c5d4000) libnvidia-tls.so.352.63 => libnvidia-glcore.so.352.63 => libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f161512e000) libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f1614f1c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1614b57000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1614952000) libm.so.6 => /lib/x86_64-linux-(0x00007f1615488000)gnu/libm.so.6 (0x00007f161464c000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f161442d000) /lib64/ld-linux-x86-64.so.2 (0x0000557aa9c51000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1614228000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1614022000) 

~/.zshrc下行添加到~/.zshrc~/.bashrc …如果您使用的是bash):

 export LD_LIBRARY_PATH=/usr/lib/nvidia-352:$LD_LIBRARY_PATH 

因此,以下是我的~/.zshrc .zshrc中与cuda相关的条目:

 export PATH=$PATH:/usr/local/cuda-7.5/bin export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=/usr/lib/nvidia-352:$LD_LIBRARY_PATH 

然后我采购了~/.zshrc

 source ~/.zshrc 

现在ldd /usr/lib/nvidia-352/libGL.so显示:

 linux-vdso.so.1 => (0x00007ffc1c5d4000) libnvidia-tls.so.352.63 => tls/libnvidia-tls.so.352.63 (0x00007f1617f1c000) libnvidia-glcore.so.352.63 (0x00007f1615488000) libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f161512e000) libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f1614f1c000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1614b57000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1614952000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f161464c000) libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f161442d000) /lib64/ld-linux-x86-64.so.2 (0x0000557aa9c51000) libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f1614228000) libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f1614022000) 

在此之后, NVIDIA_CUDA-7.5_Samples目录中的make成功完成。

我有同样的问题。 我在Ubuntu 14.04上使用nvidia网站上的.deb软件包安装。 我的解决方案是:

  • export LD_LIBRARY_PATH=/usr/lib/nvidia-346:$LD_LIBRARY_PATH到〜/ .bashrc
  • 开放式终端类型:
  • cd到samples文件夹
  • sudo bash
  • source ~./bashrc
  • 检查/ usr / lib / nvidia-346是否在LD_LIBRARY_PATH中
  • make -j

这解决了我。

我有这种感觉,使用cuda-repo-ubuntuXXX_amd64.deb文件安装CUDA时存在一些权限问题。 我有