Ubuntu15.10_64位安装Theano+cuda7.5详细笔记

  经过了3天的摸索,尝试了网上的各种方法,重装了N遍ubuntu,今天终于装好了,记录下来,与自己或者有需要的朋友一起分享。

  介绍一下我的环境:GTX425M,笔记本win7_64+ubuntu15.10_64双系统,cuda7.5。

  首先声明,我是安装完ubuntu15.10后,没有sudo apt-get update,没有安装其他的软件,没有disable Nouveau,直接安装的cuda,再安装的Theano。下面介绍一下我的安装过程及遇到的问题和解决方案。

第1步:下载cuda安装包。下载页面:https://developer.nvidia.com/cuda-downloads 从中选择适合ubuntu的deb安装包。也就是linux–>x86_64–>Ubuntu–>15.04–>deb(local). 大约1.9G.假设下载到 ~/Downloads/cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb

第2步:cd ~/Downloads(进入下载的目录),执行sudo dpkg -i 你的下载包

第3步:执行sudo apt-get update

第4步:执行sudo apt-get install cuda

第5步:执行sudo gedit ~/.bashrc,在最后面,64位的话粘贴以下内容:

export PATH=/usr/local/cuda-7.5/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

32位的话,粘贴以下内容:

export PATH=/usr/local/cuda-7.5/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib:$LD_LIBRARY_PATH

不要忘了执行source ~/.bashrc 使其立即生效

解释一下,就是在PATH里边添加cuda-7.5的路径,进入/usr/local/可以看到有一个cuda,还有一个cuda-7.5,这里填写cuda-7.5的路径

第6步:这个时候基本就安装完了,剩下的就是进行配置。这个时候可以执行nvcc -V(注意大写V)检测一下是否有内容输出,如果没问题的话,应该有以下类似输出

nvcc: NVIDIA(R) Cuda compiler driver
copyright (c) 2005-2015 NVIDIA Corporation
Built on ………………
Cuda compilation tools, release 7.5, V7.5.17

执行nvidia-settings会弹出显卡配置的界面,至少7个大项,其中有一项叫GPU-0(GeForce GT 425M),如果能看到自己的显卡的话,应该就算安装成功了。下面进行配置。

第7步:使用自带的samples进行GPU运算测试。进入到cuda-7.5的samples目录,一般都是cd /usr/local/cuda-7.5/samples,然后会有一个Makefile文件,执行命令sudo make,不出意外地话,会出现带有红颜色的error错误,大概是这样的:unsupported GNU version! gcc versions later than 4.9 are not supported! 意思也很明显了,就是gcc的版本高于4.9,Cuda不支持。解释一下:ubuntu15.10自带的gcc是5.2.1,可以通过gcc –version(两个-)查看,但是cuda不支持超过4.9.0的gcc编译器。要么安装一个低版本的编译器,要么把cuda的这个限制给去掉。我选择的是后者,而且尚未出现其他问题。

解决方案如下:

sudo cd /usr/local/cuda/include/ #进入到头文件目录cuda(而不是cuda-7.5);
sudo cp host_config.h host_config.h.bak #备份原头文件;
sudo gedit host_config.h #编辑头文件;
ctrl+F查找4.9出现的地方,大约位于115行,在第113行处应该显示if _GNUC_>4 || (_GNUC_ == 4 && _GNUC_MINOR_ > 9),因为我们的是5.2.1,因此,把上面的2个4都改成5就ok了,保存退出。

第8步:重新执行第七步中的sudo make指令(查看是否处于/usr/local/cuda-7.5/samples目录中),这个时候,应该就可以编译了。这个过程会比较长,让他在哪编译一会,剩下的时间可以用来安装Theano。

第9步:安装Theano的话,就不多说了。

  1. sudo apt-get update #更新源,如果更新速度比较慢的话或者出现未找到软件包……,建议如下修改:
  2. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak #在终端中执行下面命令备份源
  3. sudo gedit /etc/apt/sources.list #运行命令修改
    删除里面所有的内容,增加下面的Ubuntu 15.10源
    deb http://mirrors.hust.edu.cn/ubuntu/ wily main restricted universe multiverse
    deb http://mirrors.hust.edu.cn/ubuntu/ wily-security main restricted universe multiverse
    deb http://mirrors.hust.edu.cn/ubuntu/ wily-updates main restricted universe multiverse
    deb http://mirrors.hust.edu.cn/ubuntu/ wily-proposed main restricted universe multiverse
    deb http://mirrors.hust.edu.cn/ubuntu/ wily-backports main restricted universe multiverse
    deb-src http://mirrors.hust.edu.cn/ubuntu/ wily main restricted universe multiverse
    deb-src http://mirrors.hust.edu.cn/ubuntu/ wily-security main restricted universe multiverse
    deb-src http://mirrors.hust.edu.cn/ubuntu/ wily-updates main restricted universe multiverse
    deb-src http://mirrors.hust.edu.cn/ubuntu/ wily-proposed main restricted universe multiverse
    deb-src http://mirrors.hust.edu.cn/ubuntu/ wily-backports main restricted universe multiverse
    然后执行 sudo apt-get update,刷新一下源。
  4. sudo apt-get install python-numpy python-scipy python-dev python-pip python-nose g++ libopenblas-dev git #安装依赖包
  5. sudo pip install Theano #等安装完就好了(我在执行这一步时,总是提示找不到相应的安装信息,我才用的git方式进行安装的,安装命令如下:先进入~(home)目录cd ~,再进行安装 git clone git://github.com/Theano/Theano.git,大约49M,然后进入cd Theano,执行python setup.py develop –user(同样是两个-),这样就安装好了)
  6. 测试numpy是否启用了blas加速,进入python
    》>>>import numpy
    》>>>id(numpy.dot) == id(numpy.core.multiarray.dot)
    》>>>False (输出False表示加速成功,如果输出True,参考官方教程修改,理论上很少加速失败。)
  7. 命令端下其他测试。(建议先做第10步,把theano配置文件配置好后,再测试一下内容)
    NumPy (~30s): python -c “import numpy; numpy.test()” #最好errors=0,failures=0
    SciPy (~1m): python -c “import scipy; scipy.test()” #最好errors=0,failures=0
    Theano (~30m):python -c “import theano; theano.test()” #时间太长,没测试完。

第10步:编辑theano配置文件。
sudo gedit ~/.theanorc
将以下内容写入:

[global]
floatX=float32
device=gpu
[cuda]
root=/usr/local/cuda-7.5

第11步:在python中,import theano时,有可能会出现以下问题:
问题1. cuda is installed but device gpu is not available
解决1:重新检查一下(sudo vim ~/.bashrc)中的$PATH中的路径是否配置正确,包括LD_LIBARAY_PATH。一般这个问题是由于nvcc complier不能编译造成的,解决了host_config.h里边的问题后,应该不会出现,如果有出现,可以把详细输出信息贴出来,讨论一下。

问题2. failed to compile cuda_ndarray.cu
解决2:cd /etc/ld.so.conf.d,然后编辑sudo gedit cuda.conf,此文件应该是不存在的,所以打开是空的,将 /usr/local/cuda-7.5/lib64 写进去,并保存。然后sudo ldconfig。ok,再回去测试,应该就没什么问题了。import theano后,应该会显示你的GPU信息。例如我的显示:Using gpu device 0: GeForce GT 425M(CNMem is disabled)

至此,大功告成。GPU加速成功。可以把经典的GPU测试代码保存至test.py,然后测试:

from theano import function, config, shared, sandbox
import theano.tensor as T
import numpy
import time
vlen = 10 * 30 * 768  # 10 x #cores x # threads per core
iters = 1000
rng = numpy.random.RandomState(22)
x = shared(numpy.asarray(rng.rand(vlen), config.floatX))
f = function([], T.exp(x))
print (f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
    r = f()
t1 = time.time()
print ('Looping %d times took' % iters, t1 - t0, 'seconds')
print ('Result is', r)
if numpy.any([isinstance(x.op, T.Elemwise) for x in f.maker.fgraph.toposort()]):
    print ('Used the cpu')
else:
    print ('Used the gpu')

如果想用cpu测试的话,就sudo vim ~/.theanorc,将其中的gpu修改为cpu就可以了。

如果还有其他什么问题,可以留言讨论,不一定适合所有人,所有情况。

参考资料:
1. http://www.linuxdiyf.com/linux/11955.html
2. http://www.125135.com/173227.htm
3. http://deeplearning.net/software/theano/install_ubuntu.html#manual-openblas-instruction
4. http://taoo.iteye.com/blog/1823014
5. http://www.cnblogs.com/chriscabin/p/4840019.html

你可能感兴趣的:(Theano随笔,ubuntu15,theano,gpu加速,cuda7,linux-gpu)