2017.12.5 CUDA 与 cuDNN的最新版本均已经有所变化,不过安装方式相同。
当前环境如下:
- Ubuntu 16.04.1 LTS
- GeForce GTX 960M
- CUDA 8.0
- cuDNN V5.1 Library
环境准备
首先检查自己的GPU是否支持CUDA, 1
2
$ lspci | grep -i nvidia
我本机的环境如下:
- Ubuntu 16.04.1 LTS
- GeForce GTX 960M
下面开始安装。
安装CUDA和cuDNN
下载CUDA: https://developer.nvidia.com/cuda-downloads,下载对应版本的cuda安装包,下载对应版本的cuda安装包,推荐下载最新版本的8.0版本,deb版的本地安装比较方便。
下载完成之后,直接执行如下的命令进行安装即可:
注: 下载完成之后,deb的名称可能有一个oauth的后缀,直接重命令删掉就好了。如果报错由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF2377B的问题, 则添加下公钥即可:1
2
3sudo dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64.deb
sudo apt update
sudo apt install cuda之后再1
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FAF69C646FF2377B
sudo apt update
即可下载cuDDN:https://developer.nvidia.com/rdp/cudnn-download , 这里需要注册个帐号,然后才可以下载。
这里有个版本需要注意,最好下载
cuDNNv5.1 Library
版本的。 虽然V5.0也支持 CUDA 8.0,但是在后续跑TensorFlow的时候,会报错,后来才重新下载了V5.1的,才能正常运行。拷贝库文件 将下载下的cuDNN压缩包执行如下命令:
1
2
3
4tar -zxvf cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp lib64/* /usr/local/cuda/lib64/ -d
sudo cp include/cudnn.h /usr/local/cuda/include/修改环境变量 修改
.bashrc
或者/etc/profile
等,加入如下的环境变量:之后执行1
2
3
4## CUDA
export CUDA_HOME=/usr/local/cuda
export PATH=${CUDA_HOME}/bin/:$PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CUDA_HOME/lib64:$CUDA_HOME/extras/CUPTI/lib64source .bashrc
立即生效测试是否成功 进入
/usr/local/cuda/samples
,编译运行某个sample:全部编译完成后,进入1
sudo make all -j4
samples/bin/x86_64/linux/release
,运行deviceQuery
:显示有可用的GPU,即可成功:1
./deviceQuery
安装TensorFlow
直接使用pip
安装即可:当前版本为1.4: 1
sudo pip install tensorflow-gpu
安装完成之后,尝试import tensorflow
:显示如下即可成功(最新版tf显示信息有所差异) 1
2
3
4
5
6
7In [1]: import tensorflow
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally
In [2]:
在代码使用的时候,只需要指定GPU
即可(当然tf也会默认使用GPU): 1
with tf.device('/gpu:0'):
watch
实时查看nvidia显卡状态的命令,每隔1s显示状态: 1
watch -n 1 nvidia-smi