Win7+Anaconda2+VS2013+CUDA8.0+Theano-0.8安装教程
Win7+Anaconda2+VS2013+CUDA8.0+Theano-0.8安装教程
Theano的安装真的是一部血泪史,花费了一个多星期的时间,终于在win7下和Ubuntu下安装theano成功,并且安装cuda、配置GPU工作。期间排了N多的坑,在这先说一**意事项(避免各种坑):
如果选择在Windows下安装Theano,建议安装Anaconda2,对应的是python2.7版本,还要解决VS和cuda的兼容性问题。在这里如果选择安装cuda8.0版本,相应的VS版本可以选择VS2010、VS2012和VS2013,切记不能安装VS2015。
如果选择VS2010或者VS2012,相应的cuda版本可以选择cuda6-cuda8期间的版本都可以。最需要注意的是Theano的版本,切记不要选择Theano的最新版本(Theano-1.0),因为Theano从0.9版本开始使用GPU Backend的安装方法,需要安装pygpu,并且如果自己的显卡计算能力低于3.0的话,device=cuda。同时,安装pygpu的话会有很多兼容性问题,很容易出错。所以在这里选择Theano-0.8的稳定版本。
如果选择在Ubuntu下安装Theano,请参考另外一篇博文:https://blog.****.net/hczhcz0905/article/details/80424023
安装步骤如下:
(1):CUDA是NVIDIA提供可以使用C++进行GPU编程的接口,需要C++编译器,下载并安装VisualStudio Community 2013。要选择和cuda版本对应的VS版本。安装完成之后,配置环境变量:把 E:\software\VS2013\VC\bin和E:\software\VS2013\Common7\IDE目录添加到当前可搜索路径PATH里面。
(2):下载并安装CUDA8.0。首先,检查cuda支持的GPU显卡类型,
https://developer.nvidia.com/cuda-gpus。
然后,安装cuda8.0。
检验cuda是否安装成功:
对于Windows用户而言,cmd命令行界面无法识别nvidia-smi命令,要将相关环境变量添加到系统的PATH中。C:\Program Files\NVIDIA Corporation\NVSMI
使用nvcc –V 查看安装的cuda版本信息,使用nvidia-smi查看显卡信息。
为验证Visual Sdudio工具是否能进行CUDA开发,并能识别CUDA程序,我们可以通过CUDA Toolkit提供的Samples进行测试。可以随便打开一个Samples例子,
如C:\ProgramData\NVIDIACorporation\CUDASamples\v7.5\1_Utilities\bandwidthTest\bandwidthTest_vs2013.sln程序:
这说明已经成功安装了CUDA和Visual Studio工具了,同时也很好集成了Visual Studio工具。
(3):下载并安装Anaconda24.2,该版本支持Python2.7。
使用conda设置国内的清华镜像:
(4):安装MinGW和LibPython包,在4.2版本以前的Anaconda环境中无法通过conda安装LibPython包的,会提示冲突,在4.2及以后的版本中修改了这个问题。只需在console中输入:
Conda install mingw libpython
然后,在系统环境变量中添加path,
E:\server\Anaconda2\MinGW\bin;E:\server\Anaconda2\MinGW\x86_64-w64-mingw32\lib;
(5):安装Theano,
打开CMD,不要进入python,输入:pipinstall theano==0.8
(6):要想有效运行theano还需要进一步配置,测试Theano在cpu下运行。
在个人主文件夹下新建一个“.theanorc.txt”的文档,例如我的在C:\Users\Administrator
并添加如下内容:
并使用官方提供的测试例子:test_gpu.py
from theano import function, config, shared
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 xrange(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 inf.maker.fgraph.toposort()]):
print 'Used the cpu'
else:
print 'Used the gpu'
(7):运行测试脚本查看theano是否调用GPU
可以看到,虽然没有cudnn,但是加速效果还是很明显的。