程序员

Debian CUDA-9.0 & CUDA-8.0 混合安装

2018-01-27  本文已影响0人  darkie

<(  ̄^ ̄)> 不服, Tensorflow1.4 版本还不支持 CUDA-9, 放着 1070 不用怎么说的过去, 只能硬着头皮把 CUDA 版本降下去. 又一曲折的过程开始了.

安装过程均在文本模式下完成~

1c8b. 直接安装 CUDA-8.0

好吧, 不支持我也没办法, 降级吧.


sudo nvidia-uninstall

卸载掉 CUDA-9 的显卡驱动, 然后


sudo /usr/local/cuda-9.0/bin/uninstall*.pl

卸载掉所有 CUDA-9 相关的文件.

我从官网下载了 CUDA-8.0.run 文件, 还是跟上一文记录的一样开始安装, 然而, 一开始就挂了...

1c8c. 解决 gcc g++ 版本的问题

Debian 虽然稳定, 但是依赖处理真的是比不上 Ubuntu, 不过当然是稳定为主, 不想再遇到各种莫名其妙的问题. 首先, CUDA-8 支持的 gcc 版本是 4.4. 在网上直接找到了 Debian 的安装包, 无法安装成功. 原因就是系统无法解决很多依赖问题. 而 Strech 的官方源里面已经找不到 gcc-4.4 g++-4.4 了. 那么就是说, 源的版本太新了. 遂找到 Wheezy 的源, update 之后就能通过官方源安装 4.4 版本的 gcc g++了. 很奇怪啊, 为什么通过官方源安装就可以解决依赖了, 看来以后还要研究一下 aptdpkg 的区别. 好了, 反正安装成功了. 安装好之后把 Wheezy 的源注释掉. 之后创建一下链接.


sudo ln -sf /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -sf /usr/bin/gcc /usr/bin/cc
sudo ln -sf /usr/bin/g++-4.4 /usr/bin/g++

这样做就能让系统使用 4.4 版本的 gcc g++ cc 了. gcccc 是在安装 CUDA-8 过程中使用的, g++ 是在编译 CUDA-Sample 的时候用的.

好了, 编译器的版本问题就解决了.

安装起来吧, 问题二来了~

1c8d. 解决找不到 Kernel Source Tree 的问题

CUDA-8 报找不到 kernel-source-tree, 说如果你确定安装了 kernel source, 就把路径包含进来. 我是安装了的, 但不过貌似不用这样处理.

用过


sudo apt install linux-headers-$(uname -r)

来安装最新的内核源码, 安装完成之后, 通过


sudo apt install dkms

安装 dkms. 系统通过 dkms, 在安装 CUDA-8 驱动的时候把显卡驱动模块编译进内核. 安装了 dkms 之后, 安装包也能顺利找到内核源码了, 这个原因不明...

好啦, 继续安装, 喔吼, 还有问题...

1c8e. 解决找不到 libXmu.so 的问题

肯定是哪个依赖包没有安装嘛, 谷歌一下之后, 通过


sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libglfw3-dev libgles2-mesa-dev

一概解决~

继续尝试安装, 成功了~ 嗯哼, 驱动, CUDA-Toolkit 以及 CUDA-Sample 全部安装完成~

很开心, startx 一下检查显卡驱动是否正常, 然后就跪了...

1c8f. 375.26 版本显卡驱动加载失败

错误信息是 Cannot find monitor, 然后 X window 就退出了. 看了一眼 /etc/X11/xorg.conf, 显示的部分, vendormodel 都显示 unkown, 并且刷新率也不对. 再看显卡 Device 部分, 没有识别出是 NVIDIA GTX 1070. 如果用之前正确的 xorg.conf 文件尝试一下, 结果是 X window 可以正常工作了, 但是显示分辨率极低, 显卡驱动显然是没有工作的. 后面经过反复确认, CUDA-9 的显卡驱动是没有问题的. 那么现在的困境就在于, 怎么让显卡正常工作, 并且系统里安装的是 CUDA-8-ToolkitTensorflow 正常使用.

1c90. CUDA-8 & CUDA-9 混装

既然想两全其美, 那么就保留 CUDA-8ToolkitSample, 然后安装 CUDA-9 的驱动. 这里经过尝试, 不能先安装 CUDA-9 的驱动, 然后去安装 CUDA-8, 这样会得到 CUDA-8 Toolkit 需求 CUDA-8 版本的显卡驱动才能正确安装的问题. 所以, 先完整安装完 CUDA-8, 然后


sudo nvidia-uninstall

卸载掉显卡驱动, 然后安装 CUDA-9 的显卡驱动, 其他两项都给 n, 即可.

安装结束之后, 运行一下


sudo nvidia-xconfig

生成新的 xorg.conf, 然后就可以 startx 进入 X window 了. 可以打开 nvidia-settings 选择一下显示器的刷新率然后保存一下配置.

最后结果就是, 显卡和 Tensorflow 都能正常工作.

最后, 在编译 CUDA-8 Sample 的时候, 给出了 warning, 找不到 libGLU.so libX11.so libGL.so 这三个动态库. 因为 Debian 不是 CUDA 默认支持的 Linux 版本, 所以一些配置是没有的. 这些库其实都是有的, 只是没有链接在正确的位置.


sudo ln -sf /usr/lib/x86_l64-linux-gnu/libGLU.so.1 /usr/lib/libGLU.so
sudo ln -sf /usr/lib/x86_l64-linux-gnu/libX11.so.1 /usr/lib/libX11.so
sudo ln -sf /usr/lib/x86_l64-linux-gnu/libGL.so.1 /usr/lib/libGL.so

然后将


GLPATH=/usr/lib

添加到 PATH 中. 然后再编译, no more missing library warnings~

We did it! Enjoy cuda~

上一篇 下一篇

猜你喜欢

热点阅读