必要条件
- NIVDIA GeForce GTX 950M或以上的显卡
- Visual Studio 2015社区版。Windows Kit 10.0.10240.0
用其C / C ++编译器(而不是其IDE)和SDK - python(64位)。Python 3.6.3(Anaconda3-5.0.1)
Python发行版,给我们提供NumPy,SciPy和其他科学方法库 - CUDA 9.0(64位)
GPU数学库,卡驱动程序和CUDA编译器 - MinGW-w64(5.4.0)
类Unix编译器,并为Windows提供构建工具(g ++ / gcc,make ...) - Theano 0.9.0
用来求多维数组上的数学表达式得结果 - Mnxet-cu90 1.1.0
- Tensorflow
- Keras 2.1.3
以theano、mxnet、tensorflow为后台的深度学习框架 - OpenBLAS 0.2.14(可选)
CPU优化的许多线性代数运算的实现 - CUDNN v7.0.5 CUDA 9.0(有条件)
为了运行极快的卷积神经网络
安装步骤
- 安装vs2015
- https://github.com/philferriere/dlwin/blob/master/img/vs2015-install-part4b-2016-10.png
- 安装Anaconda3 5.0.1(对应Python3.6)
- 环境变量
- 加到path中
C:\Users\PC\Anaconda3;C:\Users\PC\Anaconda3\Scripts;C:\Users\PC\Anaconda3\Library\bin;
- pip install keras -U --pre
- conda install mingw libpython (也可以自行下载mingw64放到anaconda3目录下)
- 环境变量
- 如果.theanorc.txt中配置了目录,则可以不用加到环境变量中
- conda install pygpu
- pip3 install --upgrade tensorflow (cpu)
- pip3 install --upgrade tensorflow-gpu
- 安装cuda 9.0
- 环境变量
CUDA_PATH C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
CUDA_PATH_V9_0 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
- 加到path中
%CUDA_PATH%\bin;%CUDA_PATH%\libnvvp
- 命令行输入 nvcc --V 检测是否成功安装
- 下载cudnn(7.0.5),最起码要和cuda兼容,下载完成把库文件放在cuda相应目录下,覆盖cuda的3个文件
- 安装mxnet:pip install mxnet-cu90
测试theano
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')
测试BLAS
- 看看numpy是不是已经默认BLAS加速了,在python里输入:
import numpy
id(numpy.dot) == id(numpy.core.multiarray.dot)
结果为False表示已经成功依赖了BLAS加速,如果是Ture则表示用的是python自己的实现,并没有加速。
附上.theanorc.txt内容
[global]
openmp = False
#这样theano无法使用gpu加速,要改成gpu,虽然会出现警告,但是theano可以用gpu加速
device = cuda
floatX = float32
#init_gpu_device = gpu #用device = cuda就不能用
optimizer_including = cudnn #不用cudnn的话就不要这句
optimizer = fast_compile
allow_input_downcast = True
exception_verbosity = high
[blas]
ldflags =
[dnn]
include_path = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include
library_path = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64
[lib]
# 不能超过1
cnmem = 0.8
[gcc]
# mingw目录,mingw安装完记得放到anaconda中
cxxflags = -IC:\Users\PC\Anaconda2\envs\Anaconda3\MinGW
#好像没什么用
#cxxflags = -D_hypot=hypot -IC:\Users\PC\Anaconda2\envs\Anaconda3\Lib\site-packages\pygpu -LC:\Users\PC\Anaconda2\envs\Anaconda3\Lib\site-packages\pygpu
[nvcc]
# anaconda3 有两个flags会报错,anaconda2 要有两个 anaconda目录下的libs
flags = -LC:\Users\PC\Anaconda2\env\Anaconda3\libs
compiler_bindir = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
fastmath = True
#flags =-arch=sm_30