CUDA 7.0 测试在 Ubuntu 14.04 上失败

CUDA 7.0 测试在 Ubuntu 14.04 上失败

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

环境

我正在使用 64 位 Ubuntu 14.04,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通过为当前用户添加这两行来修复路径和库设置:

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看来我需要通过运行文件来安装。

答案1

经过多次尝试,我终于找到了解决方案。安装 CUDA 很麻烦,因为它不断破坏我的系统配置,而且我无法恢复。

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

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

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

答案2

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

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没有向链接器提供路径。

答案3

我在 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~/.bashrc...如果您使用 bash):

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

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

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)

此后make内部NVIDIA_CUDA-7.5_Samples目录成功完成。

答案4

我遇到了同样的问题。我在 Ubuntu 14.04 上使用 nvidia 网站上的 .deb 包进行安装。我的解决方案是:

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

这帮我解决了这个问题。

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

相关内容