文章目录
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编译器套件
它包括了C、C++、Objective-C、Fortran、Java、Ada、Go语言和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
忘记在哪里看的图了,侵权删
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驱动程序版本