显卡+cuda+cudnn+tensorflow安装教程

文章目录

1. 先修知识

1.1 显卡

全称显示接口卡,又称显示适配器,用途是将计算机系统所需要的显示信息进行转换驱动显示器,并向显示器提供逐行或隔行扫描信号,控制显示器的正确显示,

显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来

原始的显卡一般都是集成在主板上,只完成最基本的信号输出工作,并不用来处理数据。随着显卡的迅速发展,就出现了GPU的概念,显卡也分为独立显卡和集成显卡。

1.2 显卡驱动

显卡驱动就是用来驱动显卡的程序,它是硬件所对应的软件。驱动程序即添加到操作系统中的一小块代码,其中包含有关硬件设备的信息。有了此信息,计算机就可以与设备进行通信。驱动程序是硬件厂商根据操作系统编写的配置文件,可以说没有驱动程序,计算机中的硬件就无法工作。操作系统不同,硬件的驱动程序也不同。

1.3 Cuda

是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。CUDA在拥有开发套件(CUDA Toolkit, NVIDIA GPU Computing SDK以及NSight等等)注意,并不是所有GPU都支持CUDA,实际上CUDA是NAVIDIA推出来只用于自己GPU的并行计算框架

1.4 Cudnn

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

1.5 GPU

图形处理器,又称显示核心、视觉处理器、显示芯片,GPU是显卡上的一块芯片,是显卡的*处理器,是一种专门做图像和图形相关运算工作的微处理器,GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作。CPU负责逻辑性强的事物处理和串行计算,GPU则专注于执行高度线程化的并行处理任务(大规模计算任务)

1.6 Nouveau

这是一个旨在为nvidia的GPU建立高质量的,免费*的开源驱动项目,nouveau[nuvo]与new谐音, 是Linux KMS驱动的一部份,最新的版本在Linux内核中支持nvidia的帕斯卡构架

1.7 GCC是GNU编译器套件

它包括了CC++Objective-CFortranJavaAdaGo语言D语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等),个用于linux系统下编程的编译器 是一个用于编程开发的*编译器

2. 检查本地配置

在win10下发现显示适配器只有一个Intel® HD Graphics 630,在安装ubuntu双系统之前还有NAVIDIA,因 为在bios-onfiguration-graphic device-uMa only,改成只使用集成的显卡显卡:GTX1050Ti 4G
CPU:Intel(R)Core(TM)i7-7700HQ CPU @2.8GHZ 2.8GHZ

3.NVIDIA显卡驱动安装

安装英伟达显卡驱动的方法主要有三种:

使用标准仓库自动化安装;

使用官 方的NVIDIA驱动进行手动安装;

使用PPA仓库自动化安装。

​ 主要要清楚对应显卡驱动的稳定版本

3.1 官网下载run文件

 https://www.geforce.cn/drivers

选择对应的GPU卡,不要下载RHEL专用驱动,驱动的版本与cuda、cudnn无联系,可以安装电脑对应的驱动或者最新的驱动

3.2 用指令查看版本

查看本电脑可用的驱动版本

 ubuntu-drivers devices

查看显卡型号

lspci | grep -i nvidia

查看驱动版本

sudo dpkg --list | grep nvidia-*

3.3 删除旧的显卡驱动

Linux默认安装的显卡驱动不是英伟达的驱动,所以先把旧得驱动删除掉

 sudo apt-get purge remove  nvidia-*

3.4 禁止自带的nouveau nvidia驱动

ubuntu自带的nouveau驱动会影响cuda安装,不当操作会导致黑屏和登陆循环。输 入代码后没有输出结果。可用修改blacklist.conf文件,不允许修改则先用chmode修改属性

修改属性

 sudo chmod 666 /etc/modprobe.d/blacklist.conf 

直接打开blacklist文件,在文件最末尾加入下面两行代码行,然后点击保存,最后关闭文件。(如果终端显示不支持操作,不用管它,还是能成的。)

blacklist nouveau 

options nouveau modeset=0 

然后记得将文件权限复原

sudo chmod 644 /etc/modprobe.d/blacklist.conf

更新

sudo update-initramfs -u

在终端输入以下代码重启电脑,完成修改

sudo reboot

检测电脑是否已经屏蔽成功

lsmod | grep nouveau

或者直接删除

   cd /lib/modules/3.0.0-12-generic/kernel/drivers/gpu/drm/nouveau/

   rm -rf nouveau.ko

   rm -rf nouveau.ko.org //(nouveau.ko.org 此文件一般是隐藏的)

之后跟随更新及其以后的步骤相同

3.5 修改bios设置

Secure Boot选择Disabled
关闭图形化界面

sudo service lightdm stop

 sudo systemctl stop gdm.server

 sudo init 3

ctal+alt+f1,登录进入到字符界面

3.6 安装驱动

 sudo chmod a+x NVIDIA-Linux-x86_64-415.13.run //获取权限

 sudo ./NVIDIA-Linux-x86_64-415.13.run //安装驱动

3.7 安装结束后重启电脑,再查看是否安装成功

sudo nvidia-smi

sudo nvidia-settings

也可以查看系统配置—详细信息—关于,查看图像处理是否对应于自己的独立显卡

3.8 重新打开桌面

 service lightdm start

 sudo systemctl set-default multi-user.target #默认进入字符界面

 sudo systemctl set-default graphical.target  #默认进入图形界面

3.9 或使用PPA仓库自动化安装

同样需要在bios禁用secure boot,但是非手动安装不需要禁用nouveau

sudo apt-get purge nvidia-* # 删除可能存在的已有驱动,但是此处没有接 

关闭图形界面

sudo add-apt-repository ppa:graphics-drivers/ppa # 添加第三方驱动源

sudo apt-get update # 更新源,运行

sudo apt-cache search nvidia-* # 查询nvidia驱动可用版本

sudo apt-get install nvidia-390 # 这里选择安装nvidia-390

sudo reboot //重启

重启后执行下面的步骤

检验是否安装成功

nvidia-smi  

nvidia-settings

忘记在哪里看的图了,侵权删
显卡+cuda+cudnn+tensorflow安装教程

4. 安装CUDA

CUDA9.0要求GCC版本是5.x或者6.x,其他版本不可以

采用conda安装tensorflow-gpu不需要单独安装cuda和cudnn,conda会下载并安装好,不需要考虑版本依赖的问题

安装cuda需要根据cuDNN 来选择,首先,cuda官网中支持ubumtu18.04的最低版本为cuda10.0,但系统也可以兼容低版本的

安装cuda需要查清楚所要安装的tensorflow版本对应的uda版本,可以通过navidia开发者官网搜索

查看CUDA版本,进入安装目录,执行cat version.txt

4.1 在线安装

(deb[network])比下载安装包(deb[local])更快更加稳妥,安装过程会帮我们解决各种依赖问题
到下载路径下执行建议的命令

sudo dpkg -i cuda-repo-ubuntu1804_10.1.105-1_amd64.deb

sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub

sudo apt-get update

sudo apt-get install cuda

执行第一句时,会提示添加apt-key,把提示的命令输一下,继续运行即可.

到这里,执行nvcc -V 提示没有cuda tool,需要将cuda安装路径加入环境变量。

cuda路径可能有所不同,可以cd过去确认

执行

 gedit ~/.bashrc

在文件最后添加

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

export CUDA_HOME=/usr/local/cuda

在写的时候export PATH=/usr/local/cuda/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}},没有将cuda写成相应的cuda版本。

如export PATH=/usr/local/cuda9.0/binKaTeX parse error: Expected '}', got 'EOF' at end of input: {PATH:+:{PATH}}。

这样写的好处是,我们只要将usr/local目录下的不同版本的cuda通过软连接,去链接就可以了,不用再每次安装不同的cuda后,去修改相应的.bashrc文件

如下命令建立一个cuda–cuda-9.0

sudo ln -s cuda-9.0 cuda

使环境变量在当前用户下永久有效

source ~/.bashrc

立即生效

nvcc -V

输出如下

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2018 NVIDIA Corporation

Built on Sat_Aug_25_21:08:01_CDT_2018

Cuda compilation tools, release 10.0, V10.0.130

4.2 run文件本地安装runfile(local)

下载CUDA 下载地址:https://developer.nvidia.com/cuda-toolkit-archive**,**选择9.1

GCC **降级(实际上,截止最迟18年五月份,cuda9.0已经支持gcc7.0)

由于CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3

故手动进行降级:

sudo apt-get install gcc-4.8

sudo apt-get install g++-4.8

装完后进入到/usr/bin目录下

$ls -l gcc*

会显示以下结果

lrwxrwxrwx 1 root root 7th May 16 18:16 /usr/bin/gcc -> gcc-7.3

发现gcc链接到gcc-7.0, 需要将它改为链接到gcc-4.8,方法如下:

sudo mv gcc gcc.bak //备份

sudo ln -s gcc-4.8 gcc //重新链接

同理,对g++也做同样的修改:

ls -l g++*

lrwxrwxrwx 1 root root 7th May 15:17 g++ -> g++-7.3

需要将g++链接改为g+±4.8:

sudo mv g++ g++.bak

sudo ln -s g++-4.8 g++

再查看gcc和g++版本号:

gcc -v g++ -v

均显示gcc version 4.8 ,说明gcc 4.8安装成功。

安装cuda 及其补丁

输入命令安装Base Installer:

sudo sh cuda_9.1.85_387.26_linux.run

需要注意的是,之前已经安装过显卡驱动程序,故在提问是否安装显卡驱动时选择no,其他 选择默认路径或者yes即可

然后,继续执行以下操作安装3个 patch :

sudo sh cuda_9.1.85.1_linux.run

sudo sh cuda_9.1.85.2_linux.run

sudo sh cuda_9.1.85.3_linux.run

安装完毕之后,将以下两条加入.bashrc文件中.

sudo vim ~/.bashrc

export PATH=/usr/local/cuda-9.1/bin${PATH:+:$PATH}}   

注意,根据自己的版本,修改cuda-9.2/9.0…

export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

注意,根据自己的版本,修改cuda-9.2/9.0…

OK ,那么,到这一步,cuda 就安装完成了

某些参考来自来自 https://www.linuxidc.com/Linux/2019-02/157168.htm

5.安装CUDNN

根据cuDNN 的版本,目前,较为完善的,是cuDNN v7.0.5 ,其适用于 CUDA 9.1 版本,所以,咱们在选择安装cuda的时候,选择 CUDA 9.1。

查看CUDNN版本,进入安装目录,执行

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 

如果你安装错了,可以通过如下命令消除,根据你安装文件夹的不同做相应调整。

sudo rm /usr/local/cuda/include/cudnn.h 

sudo rm /usr/local/cuda/lib64/libcudnn*

5. tensorflow

注意tensorflow版本请和cuda、cudnn配套,但是如果使用conda管理的话旧可以不用考虑搭配,其会安装好依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GkeBY7NS-1618220784385)(D:\sum Up and Share\电脑系统\附图\1.png)]

要提醒你要注意的一点是,安装tensorflow时,不要忘记后面的-gpu选项。

sudo pip install tensorflow-gpu

Tensorflow 和tensorflow*-gpu的区别

Tensorflow-gpu跑的时候会调用gpu跑而不是在cpu上跑,据说这两个共存会有麻烦,而cpu版的tensorflow只会在CPU跑而不会在GPU跑,gpu版的tensorflow比普通版多了CUDA/CuDNN的kernel definition,也就是各种运算的高性能GPU实现。当然基于Eigen库的多线程CPU运算实现在tensorflow-gpu里面也有

**error**:CUDA driver version is insufficient for CUDA runtime version

原因:cuda驱动程序版本和cuda运行时版本不匹配,如果用conda install tensorflow-gpu 安装就会出现这个问题,这个会导致相应的cudnn和cuda Toolkit都会自动下载最新版的,而这些最新版的不一定和自己的gpu匹配。

解决:cuda的驱动程序版本就是NVIDIA GPU驱动程序版本

上一篇:Ubuntu16.04快速安装显卡驱动, Cuda, Cudnn


下一篇:ubuntu18.04安装CUDA和cuDNN