深度学习开源框架theano的环境搭建

环境:win7+64位系统

相关安装软件: Anaconda2-4.0.0-Windows-x86_64.exe

visual_studio_ultimate_2013

cuda_7.5.18_windows.exe

硬件:联想Y480笔记本电脑, 显卡型号: NVIDIA  GEFORCE  GT 650M

 

1、安装Anconda。

因为如果安装纯净版Python,还需要自己安装其它的numpy、matpolt等库,挺麻烦的。所以我直接安装集成的Anaconda ,这个软件包含了Ipython,还有许多python的计算库。

因为我是64位系统,因此选择64位的版本,下载后文件为:Anaconda2-4.0.0-Windows-x86_64.exe,下载完成后,就直接双击开始安装,全部都选取默认的就可以了,默认会安装到:C:\Anconda2

 

2、安装mingw、theano。

 

(1)mingw 安装

在Anaconda命令窗口中,输入mingw的安装命令:conda install mingw libpython

mingw安装完后,在C:\Anconda2文件下会出现:名为MinGW的文件夹。

 

(2)theano 安装

与mingw的安装类似,直接在anaconda的命令窗口中输入命令:pip install theano。接着会自动进行在线安装。

 

(3)配置环境变量

步骤一、在系统环境变量中选择“变量path”,在后面加入值:“C:\Anaconda2\MinGW\bin;C:\Anaconda2\MinGW\x86_64-w64-mingw32\lib;”

步骤二、新建环境变量。变量名为“PYTHONPATH”,变量值为“C:\Anaconda2\Lib\site-packages\theano;”

步骤三、打开C盘-》用户-》Adminstrator。在用户Adminstrator下面创建文件名为:“.theanorc.txt”,文件内容为:

“[blas]

ldflags=

 

[gcc]

cxxflags =-IC:\Anaconda2\MinGW\x86_64-w64-mingw32\include”

到了这里我们已经完成了theano配置的上半部分,这个时候theano已经可以用了,接着需要做个测试,测试一下自己上面的配置有没有问题。

 

(4)测试配置是否有误

测试开始前,需要重启电脑,因为我们上面配置了环境变量,系统的环境变量设置完了需要重启电脑才能有效果。

 

测试方案一

测试代码:

import numpy as np

import time

import theano

A = np.random.rand(1000,10000).astype(theano.config.floatX)

B = np.random.rand(10000,1000).astype(theano.config.floatX)

np_start = time.time()

AB = A.dot(B)

np_end = time.time()

X,Y = theano.tensor.matrices('XY')

mf = theano.function([X,Y],X.dot(Y))

t_start = time.time()

tAB = mf(A,B)

t_end = time.time()

print("NP time: %f[s], theano time: %f[s] (times should be close when run on CPU!)" %(

np_end-np_start, t_end-t_start))

print("Result difference: %f" % (np.abs(AB-tAB).max(), ))

用python运行一下结果如下:

runfile('C:/Users/Administrator/.spyder2/temp.py', wdir='C:/Users/Administrator/.spyder2')

NP time: 0.593000[s], theano time: 0.596000[s] (times should be close when run on CPU!)

Result difference: 0.000000

如果上面的np time 和theano time 差不多,那就代表你上面的配置没有问题了,这个有的时候电脑还有其他的任务,也有可能导致运行的时间不一致。

 

测试方案二

在python命令窗口中输入:

import theano

print theano.config.blas.ldflags

没有出错(没有返回值)则说明已经配置成功。

 

测试方案三、验证BLAS是否安装成功。由于numpy是依赖BLAS的,如果BLAS没有安装成功,虽然numpy亦可以安装,但是无法使用BLAS的加速。验证numpy是否真的成功依赖BLAS编译,用以下代码试验:

>>> import numpy

>>> id(numpy.dot) == id(numpy.core.multiarray.dot)

False

结果为False表示成功依赖了BLAS加速,如果是Ture则表示用的是python自己的实现并没有加速。

 

3、安装CUDA

上面的theano配置只是完成了上半部分,这个时候还不能进行gpu加速。这个时候我们可以用如下命令:

>>import  theano

>>theano.test()

这个时候会跳出PyCUDA的相关错误信息,因为我们还没有安装CUDA。

 

安装CUDA,具体步骤如下:

(1)安装vs2013

我安装的是visual_studio_ultimate_2013

(2)安装CUDA

cuda的安装文件cuda_7.5.18_windows.exe

安装时推荐自定义安装,全选相关组件。

(3)配置cuda的环境变量

默认安装好后,他会自动帮你设置好2个环境变量,但是最好还自己添加下其他的几个,方便配置vs使用

CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5

CUDA_PATH_V7_5=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5

 

CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5

CUDA_LIB_PATH = %CUDA_PATH%\lib\x64

CUDA_BIN_PATH = %CUDA_PATH%\bin

CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\x64

CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

然后,在系统变量 PATH 的末尾添加:

;%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;

(4)重启计算机以使环境变量生效。

(5) 接下来是cuda的安装成功与否的监测了,这个步骤我们用到两个东西,这两个东西,都是cuda为我们准备好的。deviceQuery.exe 和 bandwithTest.exe

在命令提示符窗口中输入:nvcc -V,回车查看是否有版本信息。若出现版本信息,则证明nvcc安装成功。

在C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\1_Utilities下找到这两个例程运行

结果为Result=PASS代表安装成功。

 

4、配置vs2013环境

打开VS2013并建立一个空的win32控制台项目

a.右键源文件 -> 添加 -> 新建项  选择CUDA C++/C文件

b.右键工程 -> 生成自定义,选择CUDA 7.5

c.右键项目 -> 属性 -> 配置属性 -> VC++目录,添加以下两个包含目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\common\include

再添加以下两个库目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\common\lib\x64

d.右键项目 -> 属性 -> 配置属性 ->链接器 -> 常规 -> 附加库目录,添加以下目录:

$(CUDA_PATH_V7_5)\lib\$(Platform)

e.右键项目 -> 属性 -> 配置属性 ->链接器 -> 输入 -> 附加依赖项,添加以下库:

其实就是  C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64 目录下的库

cublas.lib

cublas_device.lib

cuda.lib

cudadevrt.lib

cudart.lib

cudart_static.lib

cufft.lib

cufftw.lib

curand.lib

cusolver.lib

cusparse.lib

nppc.lib

nppi.lib

npps.lib

nvblas.lib

nvcuvid.lib

nvrtc.lib

OpenCL.lib

f.在工具-》选项-》文本编辑器-》文件扩展名-》添加cu \cuh两个文件扩展名

g. 右键test.cu-》属性-》选择cuda c/c++编译器

h. 打开配置管理器将平台改为x64

 

5. 下载并安装Microsoft Visual C++ Compiler for Python 2.7。下载到的文件为:VCForPython27.msi。

接着在dos命令窗口中,cd到VCForPython27.msi所在的目录,然后输入安装命令: msiexec /i VCForPython27.msi ALLUSERS=1

接着会进行安装VCForPython27.msi。其将被安装到: C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0.目录下

安装完后,可以到这个目录下看看有没有上面这个目录。

安装完了以后,然后将stdint.h文件放到目录:

C:\Program Files (x86)\Common Files\Microsoft\Visual C++ for Python\9.0\VC\include下面。

6.完整测试

测试的python代码如下:

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 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 in f.maker.fgraph.toposort()]):

print 'Used the cpu'

else:

print 'Used the gpu'

 

(1)CPU测试

.theanorc.txt内容

[blas]

ldflags=

 

[gcc]

cxxflags = -IC:\Anaconda2\MinGW\x86_64-w64-mingw32\include

CPU下运行结果:

runfile('C:/Users/Administrator/Desktop/untitled0.py', wdir='C:/Users/Administrator/Desktop')

[Elemwise{exp,no_inplace}()]

Looping 1000 times took 15.3100001812 seconds

Result is [ 1.23178032  1.61879341  1.52278065 ...,  2.20771815  2.29967753

1.62323285]

Used the cpu

 

(2)GPU测试

.theanorc.txt内容改为:

[blas]

ldflags=

 

[global]

device = gpu

floatX = float32

 

 

[nvcc]

fastmath=True

flags =-LC:\Anaconda2\libs

compiler_bindir=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

 

[gcc]

cxxflags = -IC:\Anaconda2\MinGW\x86_64-w64-mingw32\include

用GPU加速的运行结果:

runfile('C:/Users/Administrator/Desktop/untitled0.py', wdir='C:/Users/Administrator/Desktop')

[GpuElemwise{exp,no_inplace}(), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]

Looping 1000 times took 0.842000007629 seconds

Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761

1.62323296]

Used the gpu

 

如上运行结果可见在CPU下运行时间约为15.3 seconds,在GPU加速下运行时间约为0.84 seconds,速度提升了18倍。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值