Linux上的驱动配置本就麻烦还危险,再加上CUDA和cuDNN,嗯……,搭好一个环境估计又得多掉几根头发。但是!
这一切其实可以像apt install和pip install一样简单!
下文教程经Linux Mint(Ubuntu系)实证可用,如果不出岔子,feora、opensuse、rhel、sles这几个发行版应该也可以采用这种方式进行配置。
1. 配置软件源
没错,NVIDIA官方是有驱动、CUDA和cuDNN的官方仓库的,所以才可以apt install解决大部分问题。但是添加源的方式不是手动编辑/etc/apt
下的配置,而是安装官方提供的软件包,其中打包好了所需的源配置。
1.1. 驱动和CUDA源
地址:https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/
地址中的最后两级目录根据实际选择,示例对应的情况为64位Intel cpu上的Mint 19.1(基于ubuntu 18.04)。
下载目录中名为cuda-repo-*.deb
(例如cuda-repo-ubuntu1804_10.1.105-1_amd64.deb)的文件,可能有多个版本,选择最新的就好了,毕竟只是配置一个源而已,越新越好。
sudo dpkg -i cuda-repo-ubuntu1804_10.1.105-1_amd64.deb |
dpkg命令执行后会显示还要配置认证密钥,以实际的显式为准,命令形式如下。
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub |
其实就是下载了刚才页面中的.pub文件添加密钥。
1.2. cuDNN源
地址:http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/
同上,下载并且dpkg安装,文件名为nvidia-machine-learning-repo-*.deb
,如nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb。
按理上一步已经添加了认证密钥,这里不需要重复了,但还是以dpkg实际显示为标准。
1.3. 更新源
sudo apt update |
2. 安装新版驱动
CUDA对显卡驱动有一定要求,一般来说,在系统和硬件兼容范围之内,安装最新的驱动总没错的。
2.1. 查看硬件驱动兼容情况
在NVIDIA官网https://www.nvidia.com/Download/index.aspx可以查看自己硬件的驱动支持情况。
结果大概如下,
2.2. 利用系统驱动管理器安装驱动
但是不用下载,看个版本号就够了,因为,进入系统的驱动管理器,会发现直接有不同版本的安装选择,用系统工具可比手动安装要安全多了。
2.3. 利用apt安装驱动
如果没有图形界面的话,也可以用apt命令手动执行安装,
sudo apt install nvidia-driver-<版本号> |
3. 安装CUDA和cuDNN
安装好驱动后,最好重启一下系统,并确认是否安装成功。
接下来就是安装CUDA和cuDNN这两个计算库了,但TensorFlow截止到1.13.1版本还不支持CUDA 10.1,所以就用10.0了。
apt install cuda-10-0 libcudnn7-dev |
apt install就完事了。
4. 安装Python包
sudo pip3 install tensorflow-gpu |
pip install就完事了。
5. 验证
import tensorflow as tf |
add: (Add): /job:localhost/replica:0/task:0/device:GPU:0
2019-03-22 23:38:56.880439: I tensorflow/core/common_runtime/placer.cc:1059] add: (Add)/job:localhost/replica:0/task:0/device:GPU:0
Const: (Const): /job:localhost/replica:0/task:0/device:GPU:0
2019-03-22 23:38:56.880525: I tensorflow/core/common_runtime/placer.cc:1059] Const: (Const)/job:localhost/replica:0/task:0/device:GPU:0
Const_1: (Const): /job:localhost/replica:0/task:0/device:GPU:0
2019-03-22 23:38:56.880565: I tensorflow/core/common_runtime/placer.cc:1059] Const_1: (Const)/job:localhost/replica:0/task:0/device:GPU:0
2