最近安装了3台workstation, 显卡分布是Quadro P2000, Quadro K220和Quadro 2000。其中第一台工作站是去年新入的,另外两台都是3-5年历史的旧机器了。

第一台的新机器的安装比较顺利,另外两台由于显卡比较老,只能装比较旧版的驱动,因此CUDA也不能装最新版的,由此就出现了许多的问题, 后面会一一和大家细数。

首先来讲一下一个正常的安装步骤。

安装NVIDIA驱动

首先,检测你的NVIDIA显卡型号和推荐的驱动程序的模型。

ubuntu-drivers devices


从返回信息可以看到,系统推荐的nvidia驱动版本是nvidia-driver-440。
在开始安装nvidia驱动之前,还有一些准备工作要做。

如果你曾安装过其他版本,卸载原有的NVIDIA驱动。

sudo apt-get remove –purge nvidia*

禁用自带的 nouveau nvidia驱动,通过命令创建一个文件。

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

并添加如下内容:

blacklist nouveau
options nouveau modeset=0

执行以下命令,让改动生效。

sudo update-initramfs -u

确认下Nouveau是已经被你干掉,使用命令:

lsmod | grep nouveau

如果在返回信息里没有看到nouveau,则说明已经成功干掉nouveau。

安装nvidia driver

sudo apt-get install nvidia-driver-440

安装完成后,重启

sudo reboot

验证驱动是否安装成功,输入以下命令,如果可以看到下面画面,就说明驱动安装成功了。

nvidia-smi

安装CUDA

到NVIDIA官网中,找到CUDA下载。
https://developer.nvidia.com/cuda-toolkit
我下载的版本是CUDA Toolkit 10.2。由于CUDA和nvidia-driver有依赖关系,所以选择下载的版本之前,要查看一下CUDA的release note里对nvidia-driver的版本要求。
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

以下是CUDA 10.2的release note里提供的CUDA和nvidia driver的版本兼容关系。

我安装的驱动版本是440.59,因此可以安装目前最新的CUDA 10.2.89。于是到 官网下载相应的版本。我的操作系统是Ubuntu 18.04,选择下载runfile。

完成版本选择后,NVIDIA官网还很贴心的给出了linux下载安装包的命令行,和运行安装包的命令。

wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run

此处需要主要的是在运行runfile之前,需要先安装gcc-multilib。

sudo apt install gcc-multilib

进入安装后,先要浏览一段很长的协议,按着回车键往下滚到底,

Do you accept the previously read EULA?
accept/decline/quit:

输入accept

You are attempting to install on an unsupported configuration. Do you wish to continue?
(y)es/(n)o [ default is no ]:

输入y

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
(y)es/(n)o/(q)uit:

输入n, 不安装nvidia-driver

Install the CUDA 9.1 Toolkit?
(y)es/(n)o/(q)uit:

输入y

Enter Toolkit Location
[ default is /usr/local/cuda-9.1 ]:

直接回车,安装到默认目录下。

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit:

输入y

Install the CUDA 9.1 Samples?
(y)es/(n)o/(q)uit:

输入y,我们后面可以使用这些samples来验证CUDA安装是否成功。

Enter CUDA Samples Location
[ default is /home/ubuntu ]:

直接回车,安装到默认目录下。然后就一路到安装结束。
安装介绍后,记得要输出路径。

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

接下来验证一下CUDA是否安装正确。先输入以下命令试着看一下CUDA的版本。

nvcc -V

让人抓狂的事情又发生了,居然提示没有安装CUDA tool kit,并提示如果需安装请执行apt install nvidia-cuda-toolkit。可是,之前cuda的安装信息明明显示已经将toolkit安装到/usr/local/cuda-9.1了,而且路径也已经输出了。百思不得其解,索性按照提示执行以下命令。

sudo apt install nvidia-cuda-toolkit

于是,再安装了一遍cuda toolkit。 完成安装后再输入nvcc -V,这次终于看到版本信息了。显示目前安装的版本是release9.1,完全正确。

接下来,我们再尝试编译一个CUDA自带的sample来验证以下安装是否成功。
根据之前cuda的安装提示sample被安装到了/home/ubuntu目录下,此处ubuntu是我的登录用户名。查看该目录确实发现有一个NVIDIA_CUDA-9.1_Samples的目录,进入该目录并找到 1_Utilities/deviceQuery 例子,进行编译。

cd /home/ubuntu/NVIDIA_CUDA-9.1_Samples/1_Utilities/deviceQuery
make

执行了make之后,就应该可以看到如下的输出了,如果不行的话请确认以下g++是否安装了。

编译完成后执行deviceQuery

sudo ./deviceQuery

如果你可以看到以下类似的输出,那表面CUDA安装成功了。

安装cuDNN

cuDNN的官网地址如下,首先依旧是上官网查看以下适用版本和下载信息。
https://developer.nvidia.com/cudnn
下载cuDNN首先得登录Nvidia Developer账户,如何么有就注册一个。另外,nvidia还支持用微信和QQ账号登陆。
下载前务必查询以下你的CUDA版本兼容的cuDNN,每个cuDNN都会有多下载包分别个支持不同CUDA版本的,务必要看仔细了。

另外,兼容信息也可以在cuDNN的release note里的cuDNN Support Matrix章节有给出,以下是链接。
https://docs.nvidia.com/deeplearning/sdk/cudnn-support-matrix/index.html#cudnn-cuda-hardware-versions

下图是关于cuDNN的最新版本 v7.6.4-v7.6.5的兼容性信息,我第一台最新的工作站是Quadro P2000的显卡安装的是440的nvidia驱动和10.2的CUDA,因此安装最新的cuDNN版本没有问题。但是我另外一台老的Quadro K2200的显卡配390的驱动和9.1.85的CUDA就和目前最新的cuDNN不兼容。

继续查询,发现这个版本的CUDA和所有的7.1.4以上版本的cuDNN都不兼容。在一通搜索之后终于找到了这个v7.1.3,而且这个版本对Ubuntu支持只有deb文件,而且对Ubuntu的支持仅到16.04, 而我的Ubuntu是18.06。本着选择最接近的版本,下载了cuDNN v7.1.3 Developer Library for Ubuntu16.04 (Deb)。

执行命令dkpg -i来安装deb包,这一次总算是一切顺利。

sudo pkdg -i

踩坑记录

安装最新版本的CUDA,基本没有什么问题。然而,再装另外两台工作站是,却踩坑了。

  • 重启后nvidia驱动消失

当我完成所有安装和设置并重启,结果却发现nvidia-smi运行失败了。系统提示

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.


网上查了一下,发现大部分人都说是因为重启后Ubuntu的内核版本改变了。要将内核版本改回去,问题即可解决。
具体办法如下
此处下回在写

  • CUDA 9.1是个大坑

我一早就知道nvidia driver,CUDA和cuDNN有依赖关系。但是我还是低估了这个问题的严重性。 重要事情说三遍:
千万不要装CUDA9.1!
千万不要装CUDA9.1!
千万不要装CUDA9.1!
cuDNN可以支持的CUDA9.1的版本特别的有限,其次tensorflow可以支持CUDA9.1的最高版本是1.13,而tensorflow1.13仅可以运行中python 3.6及以下版本。这个问题,几乎导致我重装了开发环境。
我最终选择安装CUDA9.0,但在重装过程中,我发现如果不卸载之前安装的CUDA9.1版本,cuDNN和tensorflow会误认之前的CUDA版本,所以必须移除。卸载CUDA的命令:

cd /usr/local/cuda-9.1/bin
sudo ./uninstall_cuda_9.1.pl
  • CUDA依赖包无法安装问题

我的那块Quadro K220显卡匹配的驱动是nvidia-driver-390.46,可以支持的CUDA版本是9.1,但我最终选择的是9.0。官网下载CUDA安装包,依旧选择runfile, 然后进入安装。

然而却安装失败了,报不支持的编译错误, 但提示可以使用 --override 选项跳过这个步骤。

Error: unsupported compiler: 7.3.0. Use --override to override this check.

于是再次尝试…

sudo sh cuda_9.1.85_440.33.01_linux.run --override

于是得到如下错误信息,而且

Installing the CUDA Toolkit in /usr/local/cuda-9.1 …
Missing recommended library: libGLU.so
Missing recommended library: libX11.so
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Missing recommended library: libGL.so

在网上查了一下,原因是缺少相关的依赖库,安装相应库就解决了:

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

可以按照依赖库也失败了,提示依旧是缺少依赖库。在网上查了这个问题许久,也没有找到解决问题的方法,

后来,在网上看到用aptitude install可以解决这个问题。aptitude是和apt-get一样的linux下的包管理工具,但在依赖包处理上比apt-get更好。
先用apt-get来安装一个aptitude。

sudo apt-get install aptitude

再用aptitude来安装依赖包。

sudo aptitude install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

这里需要主要的是安装过程中会有提示选择,第一个提示是Keep the following package as their current version, 需要选择n,第二个提示The follow action will resolve the dependencies. , 选择y。

完成安装后,再次安装CUDA,记得加上–override选项,这次就不在报错了。

当我完成所有安装和设置并重启,结果却发现nvidia-smi运行失败了。系统提示

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

  • 在anaconda里安装CUDA Toolkit和cuDNN
    以上安装步骤,我在第一台workstation上成功了。但是第二台K2200显卡的,却始终不成功。
    我在安装CUDA时选择了9.1版本,安装Anaconda是选择了最新支持python3.7的版本。完成安装后,运行tensorflow却报错
    后续安装步骤请参考文章
    Anaconda+Tensorflow-gpu+Juypter Notebook安装配置踩坑记录

[Tensorflow] Ubuntu下NVIDIA Driver+CUDA+cuDNN 安装踩坑总结相关推荐

  1. NVIDIA显卡+cuda+cudnn安装

    一. nvidia显卡安装教程: 链接: ubuntu20.04到ubuntu18.04安装英伟达(nvidia)显卡驱动的血泪史. 小编在安装过程中遇到以下问题: 借鉴原作者的第三种方法,前面几步没 ...

  2. Tensorflow Object Detection API 版本对应关系(CUDA/cudnn/tensorflow-gpu踩坑)

    关于Tensorflow Object Detection API中tensorflow-gpu的版本选择: 记得一定要去看官网的要求! 官网是这么说的:它的版本是tensorflow-gpu 1.1 ...

  3. win10双系统ubuntu安装+卸载driver+cuda+cudnn+anaconda+mxnet编译(好文推荐+实际动手填坑系列)

    写在 2021.8.4 的话,最近刚弄的这些,许多东西还记得,如果大家有什么问题,可以在评论区留言,我应该能回答上来一些. 安装参考: (root空间分配那儿要注意,我一开始是分配20G,结果还在安装 ...

  4. Ubuntu系统---安NVIDIA 驱动后 CUDA+cuDNN 安装

    Ubuntu系统---安NVIDIA 驱动后  CUDA+cuDNN 安装 --------------------------------------------@20190726--------- ...

  5. Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)...

    win7(win10也适用)系统安装GPU/CPU版tensorflow Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程) 目录 2.配置 ...

  6. linux下cuda cudnn安装 没有权限的安装

    linux下cuda cudnn安装 cuda 10.2:https://developer.nvidia.com/cuda-10.2-download-archive?target_os=Linux ...

  7. CentOS 安装Nvidia驱动+CUDA+cuDNN+Anaconda3

    文章目录 一.安装Nvidia显卡驱动 1.1 添加 ELRepo 源: 1.2 删除已安装的驱动,如果是之前没有安装过显卡驱动的这步可以跳过 1.3 安装显卡检查程序: 1.4 检测显卡型号,并选择 ...

  8. 从无到有 Ubuntu16.04 18.04 20.04安装+Todesk+Chrome+NVIDIA驱动+CUDA+Cudnn+Anaconda3+Pycharm 超详细教程+踩坑问题

    从无到有 Ubuntu16.04 18.04 20.04安装+Todesk+Chrome+NVIDIA驱动+CUDA+Cudnn+Anaconda3+Pycharm 超详细教程+踩坑问题(有部分图片忘 ...

  9. Ubuntu20.04安装NVIDIA驱动+cuda+cudnn+anaconda+pytorch+pycharm经验

    配置环境是深度学习的第一道门槛,也是必须迈过的一道门槛,之前一直在windows平台上跑pytorch,但很多包无法安装,必须要使用Linux.在经历了很多坑,无数次重装系统,崩溃,坚持后终于在Ubu ...

最新文章

  1. spring 托管bean_在非托管对象中使用Spring托管Bean
  2. OpenGL ES着色器语言之变量和数据类型
  3. 大型高并发高负载网站的系统架构(转)
  4. 挑战练习题2.3动态规划 poj3181 Dollar Dayz 完全背包
  5. LinQ中Skip()方法和Take()方法的使用
  6. 深入react技术栈(12):组件内通信
  7. java中IO流的标准异常处理代码
  8. Java 位运算和逻辑运算的区别
  9. 设计模式20_观察者
  10. 私人影院音响效果如何有效提升?
  11. Citrix 桌面云 XenApp_XenDesktop_7.15 部署系列(六)配置虚拟桌面控制器
  12. 鸿蒙开发工具下载设置Mac
  13. 软件需求工程 高校教学平台 项目可行性报告
  14. [教程]黑莓终极中文混刷教程 终身受用
  15. 旧手机上的微信数据丢失怎么才能恢复回来
  16. 小米怎么和计算机连接网络连接网络,小米电视如何与电脑连接
  17. OpenCV(二) —— 颜色通道提取 边界填充 数值计算 图像融合
  18. react 项目的一个ie8兼容性问题
  19. mysql怎么写外键支持级联删除_MySQL外键级联删除不起作用,完全难倒
  20. c语言15-puzzle解法,15 Puzzle (4乘4谜题) IDA*(DFS策略与曼哈顿距离启发) 的C语言实现...

热门文章

  1. Android 高级面试高频知识点,flutter跳转到appstore
  2. 真真感受到了c语言的古老!
  3. ECCV 散焦图像恢复论文
  4. 数据计算中间件技术综述 1
  5. 做成绩查询系统,教你去除excel表格粘贴函数。
  6. 运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView
  7. Spring:代理模式
  8. L2之上的L3、L4,StarkWare的这个设想到底能否实现?
  9. 大神总结 | 强化学习线路图
  10. markdown(windows下)快捷键