序言
最近找了不少资料,反反复复装了好几遍系统,最终搭好了theano的gpu计算环境。总结一下前面失败的原因,方便以后再安装,也给需要的人一些帮助吧。由于网上各种教程,看的也有点醉的,走了不少歪路。一开始都是baidu的,后来快放弃了,最后不甘心,改google就成功了(怒黑一把百度)。
配置
先说一下我的笔记本显卡吧,电脑4年前的。双显卡:
Intel(R) HD Graphics 4000
NVIDIA GeForce GT 630M
当然重点是有这块GT 630M,虽然它旧,但是还是能支持gpu计算的。你可以去这里查询自己设备是否支持gpu设备
安装 UBUNTU 14.04
我是装了双系统,win10+Ubuntu14.04,建议先装win10,这样就不用折腾启动项了,再去安装Ubuntu。Ubuntu建议装中文版,如果装英文版,强烈建议改一下库的源地址,不然bash下更新软件慢的要死(我12m的网速,下载速度只有几kb/s到10几kb/s,当时还以为网速问题,白等了好久)。具体安装可以参考网上教程,这个安装还是挺简单的。
下载RUN版本的CUDA 7.5 toolkit
不要去Nvidia网站下载你的显卡驱动,只要下载CUDA toolkit即可,这里提供了deb和run两种版本,建议下run版本吧。
屏蔽Nouveau驱动
之前找过不少教程,都没提到屏蔽Nouveau驱动,导致每次装完cuda,重启后就黑屏了,害我重装了两次。Nouveau驱动是Ubuntu下自带的显示驱动,会和你装的Nvidia驱动冲突,导致黑屏。
为了拒绝黑屏,我们这么做,输入命令
$ sudo gedit /etc/modprobe.d/blacklist.conf
文本中加入以下内容并保存
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
如果是其他linux系统,加入下面
blacklist vga16fb
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
关闭 X server
接下来要关闭X server(即Ubuntu的图形界面)。按下“ctrl+alt+F1”进入tty1,输入命令
$ sudo service lightdm stop
安装CUDA 7.5 toolkit. (Driver, Toolkit, Samples)
先进入到你的.run目录文件下,由于在tty中,中文无法显示,我建议你先在自己的主目录下创一个英文名的文件夹。输入下面两条命令:
$ chmod a+x cuda_7.5.18_linux.run
$ sudo ./cuda_7.5.18_linux.run
然后一堆介绍吧,直接pass,回到问题的那一步:
仔细阅读问题,按照我的回答:
Do you accept the previously read EULA? (accept/decline/quit): accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 346.46? ((y)es/(n)o/(q)uit): y
Do you want to install the OpenGL libraries? ((y)es/(n)o/(q)uit)[ default
is yes ]: nInstall the CUDA 7.5 Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-7.5 ]: [Enter]
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y
Install the CUDA 7.5 Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /root ]: [Enter]
- 注意!
千万不要安装 OpenGL library. 它可能使你的显卡驱动产生错误。
重启
命令重启电脑
$ sudo reboot
添加PATH and LD_LIBRARY_PATH到.bashrc
首先输入
$ sudo gedit ~/.bashrc
然后加入以下内容并保存
export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda7.5/lib64:$LD_LIBRARY_PATH
输入下面这个命令使得配置生效
$ sudo source ~/.bashrc
安装并更新 G++/GCC 编辑器
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ gcc -v
$ make -v
配置 CUDA sample 并测试 deviceQuery
这是为了测试你的cuda库是否正确安装
$ cd NVIDIA_CUDA-7.5_Samples ~/NVIDIA_CUDA-7.5_Samples$ make ~/NVIDIA_CUDA-7.5_Samples$ cd bin/x86_64/linux/release ~/release$ ./deviceQuery
运行deviceQuery程序,查看输出结果(重点关注最后一行,Pass表示通过测试)。
另外一种简单的测试方式
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Mon_Apr_4_22:59:02_CST_2016
Cuda compilation tools, release 7.5, V7.5.15
$ nvidia-smi
千万不要用这条“sudo apt-get install nvidia-cuda-toolkit”命令,这是条过时了的命令,会在你电脑上装上cuda5.5,会无法工作的,请按照我上面说的操作!
如果没通过以上两种测试(任一),你的Nvidia cuda驱动和配置可能有问题。如果通过了,那恭喜你cuda成功装好了!
安装 Numpy, Scipy, Pip, Theano
接下来安装python库和theano依赖的库,输入命令
$ sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ git
安装theano
$ sudo pip install Theano
倘若pip出现如下错误
pip install yolk
Downloading/unpacking theano
Cannot fetch index base URL https://pypi.python.org/simple/
Could not find any downloads that satisfy the requirement theano
参考这里,原因如下
This seems to be an issue with an old version of OpenSSL being incompatible with pip 1.3.1. If you’re using a non-stock Python distribution (notably EPD 7.3), you’re very likely to have a setup that isn’t going to work with pip 1.3.1 without a shitload of work.
解决办法
$ curl -O https://pypi.python.org/packages/source/p/pip/pip-1.2.1.tar.gz $ tar xvfz pip-1.2.1.tar.gz $ cd pip-1.2.1 $ python setup.py install
安装OpenBlas
$ sudo apt-get install libopenblas-dev
生成 .theanorc 文件
“.theanorc. ” 文件包含theano库的配置信息,首先用下列命令新建 theanorc 文件
$ sudo gedit ~/.theanorc
加入以下信息并保存
[global]
device=gpu
floatX=float32
root=/usr/local/cuda-7.5
[nvcc]
fastmath = True
[blas]
ldflags = -lopenblas
[cuda]
root = /usr/local/cuda-7.5
测试Theano
新建一个python 文件
$ sudo gedit testing_theano.py
复制并粘贴测试代码. 并保存 “testing_theano.py” 文件
$ python testing_theano.py
检查是否启用gpu
如果看到下面一这句,你就已经成功了。
Using gpu device 0: GeForce 630M