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时存在一些权限问题。 我有