cuda+Tensorflow的环境部署较为方便,笔者在ubuntu14.04上面进行环境部署,主要经过了以下几个步骤:
安装cuda
1. 在Nvidia官网下载cuda安装包
打开cuda下载页面,依次选择
Operating System: Linux
Architecture: x86_64
Distribution: Ubuntu
Version: 14.04
Installer Type: runfile(local)
其中Installer Type一定要选择runfile脚本安装,用deb包安装的话,可能遇到OpenGL设置冲突的问题,导致ubuntu桌面挂掉。
2. 禁用nouveau驱动
终端运行
lsmod | grep nouveau
如果有输出则代表nouveau正在加载
nouveau的禁用方法为:在/etc/modprobe.d中创建文件blacklist-nouveau.conf并输入以下内容
blacklist nouveau
options nouveau modeset=0
生成新的系统启动文件
sudo update-initramfs -u
之后重启系统
3. 执行cuda脚本安装文件
重启系统后,按alt+ctrl+f1进入控制台并登陆账户
关闭图形化界面
sudo service lightdm stop
执行安装脚本
sudo chmod +x cuda_8.0.61_375.26_linux.run
sudo ./cuda_8.0.61_375.26_linux.run
脚本在执行过程中会提醒用户做一些选择,在遇到提示是否安装OpenGL库时,选择否,其余选项选择默认即可。
重新启用图形桌面服务
sudo service lightdm start
alt+ctrl+f7 切换至图形界面
4. 环境变量与设备文件设置
在/root/.bashrc文件末尾添加
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
之后运行source /root/.bashrc进行更新
检查/dev下是否有nvidia*文件,如果没有,则创建并运行如下脚本。取自cuda安装手册官网
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
最后检查cuda是否安装成功
nvcc -V
安装Tensorflow
相比于安装cuda,安装tensorflow十分简单,只需执行pip安装命令即可,国内pip源较慢,推荐换成清华大学开源镜像源。这里采用的是Tensorflow 1.2.1gpu版,python 2.7 版
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ https://mirrors.tuna.tsinghua.edu.cn/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp27-none-linux_x86_64.whl
等待安装完成之后,运行tensorflow版的hello world。取自tensorflow中文官网
$ python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>>