Theano利用GPU进行深度学习加速的配置及使用

2014年12月16日

最近使用Theano写了MLP和CNN的程序,由于训练样本大,单靠CPU运算速度so slow;于是乎找到了一台有NVIDIA显卡的电脑进行了GPU的配置使用,期间遇到很多问题,记录如下。

平台说明:

Python:2.7, 建议直接使用 Python(x,y),包含了Theano需要的Numpy等库,省去自己配置

Theano: 0.6

CUDA:3.0

下载


1 下载安装Theano: easy_install theano

2 下载CUDA:传送门

3 下载驱动、工具包、软件开发包,按顺序安装

注:同学们最好直接下载3.0版的,我最早下的2.3版本,但发现Theano的CUDA模块对2.3的支持很差很差,改了..\theano\sandbox\cuda\下.cu里面的很多代码,比如cudaMemGetInfor(为3.0版本的接口,2.3为cuMemGetInfor,详细见这里),最终编译没错了,但出现了很难处理的link bug。最终改用3.0后,只改了小部分的代码就成功运行(怎么改后面有说明)。

配置


打开theano的配置文件(一般在用户文件夹的根目录,例如C:\Documents and Settings\Administrator\,名为.theanorc.txt)添加以下配置:

[nvcc]
flags=-LC:\python27\libs
compiler_bindir=C:\program Files\Microsoft Visual Studio 9.0\VC\bin

注:2.3版本的只支持MSVC8.0和MSVC9.0

添加后import theano.sandbox.cuda进行初测,成功后进行下面的配置:

[global]
device = gpu
floatX = float32

最后run theano/misc/check_blas.py来进行测试,或者直接import theano ; theano.test()。

遇到的问题


1 class “cudaDeviceProp” have no conponent of named "concurrentKernels" 跟进cuda_ndarray.cu,在2796行附近有:

#if CUDART_VERSION >= 3000
  put_in_dict(dict, "concurrentKernels", deviceProp.concurrentKernels);
#endif

在C:\CUDA下找到cudaDeviceProp的类,看到里面并没有concurrentKernels,虽然vision是3.0的。

解决方案:注释掉上面的部分即可。

2 fatel error C1083:无法打开包括文件:stdint.h: No such file or directory

解决方法:

去googlecode下载http://msinttypes.googlecode.com/files/msinttypes-r26.zip,解压后会得到三个文件,把inttypes.h和stdint.h放到vc的include目录就可以了。

我安装的是VS2008,安装到的默认位置,因此include的路径就是: C:\Program Files\Microsoft Visual Studio 9.0\VC\include。

3 如何查看GPU状态

下载GPUZ即可。

结语


最后成功运行,虽然这台带有NVIDIA的机器很老很老了,但有了GPU的加速,比在我Y470上跑速度快N倍。

GPU,很好很强大。


版权声明:本文为博主原创文章,转载请注明出处 本文总阅读量    次