非Anaconda纯PYTHON环境下Theano基于WIN10的纯净CUDA安装与GPU配置

编程知识 更新时间:2023-05-01 22:39:26

非Anaconda纯PYTHON环境下Theano基于WIN10的纯净CUDA安装与GPU配置

最近为了安装Theano为了使用GPU,折腾得半死,网上很多都是基于Python2.x版本、Theano0.6x版本,大部分是基于ubuntu操作系统的安装教程,现在是2017年11月最新版的Python3.6.3了,Theano 0.9.0了,Cuda都9.0了,结果居然找不到网上能正确指导安装的教程,玩非微软的东东就这么多的坑吗?我觉得做为初学用户还是微软的东东好用,LINUX也好其它开源应用或组件也好,都太不友好,都得让使用者折腾,不在折腾中死亡,就在折腾中激荡…..

目录

    • 现在准备开始
    • 安装步骤
      • Python安装
      • MinGW安装
      • CUDA安装
      • Theanopycudanose安装
    • Theano配置GPU
    • 总结

现在准备开始:

系统环境:
-操作系统:Windows10 64位
-显卡:GeForce GTX 1050
-开发环境:Visual Studio 2015
-directx 11 64位

要安装的软件及组件列表:
- Python3.6.3 64位
- Theano0.9.0
- pycuda (2017.1.1)
- nose (1.3.7)
- cuda8.0.44
- mingw 64(7.2.0)


安装步骤

以上所有组件除Python、cuda、mingw以外,其它组件都是在安装了Python后使用PIP命令自动下载安装的,本教程不提供以上程序下载地址,因为百度一搜都有

Python安装

Python安装很简单,记得下载64位的,在windows下一路下一步就行了,但要注意在安装界面中有一个选项要勾上“Add Python 3.6 to PATH”,添加到系统环境变量;

检测安装是否成功
打开CMD,最好用管理员打开,然后输入python

C:\Windows\System32>python
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

看到以上信息表示安装成功了;

MinGW安装

mingw安装主要是解决g++,因为运行Theano需要用到g++/gcc,安装MinGw就有了g++;要注意也要配套是64位的;安装也很方便,就是一路下一步;可以百度”Mingw-w64 - GCC for Windows 64 “找到资源下载;

检测安装是否成功
打开CMD,最好用管理员打开,然后输入gcc -v

C:\Windows\System32>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=C:/Program\ Files/mingw-w64/x86_64-7.2.0-win32-seh-rt_v5-rev1/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/7.2.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-7.2.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/mingw720/x86_64-720-win32-seh-rt_v5-rev1/mingw64 --enable-shared --enable-static --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=win32 --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/mingw720/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/mingw720/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/mingw720/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/mingw720/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-win32-seh-rev1, Built by MinGW-W64 project' --with-bugurl=https://sourceforge/projects/mingw-w64 CFLAGS='-O2 -pipe -fno-ident -I/c/mingw720/x86_64-720-win32-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw720/prerequisites/x86_64-zlib-static/include -I/c/mingw720/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/mingw720/x86_64-720-win32-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw720/prerequisites/x86_64-zlib-static/include -I/c/mingw720/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/mingw720/x86_64-720-win32-seh-rt_v5-rev1/mingw64/opt/include -I/c/mingw720/prerequisites/x86_64-zlib-static/include -I/c/mingw720/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/mingw720/x86_64-720-win32-seh-rt_v5-rev1/mingw64/opt/lib -L/c/mingw720/prerequisites/x86_64-zlib-static/lib -L/c/mingw720/prerequisites/x86_64-w64-mingw32-static/lib '
Thread model: win32
gcc version 7.2.0 (x86_64-win32-seh-rev1, Built by MinGW-W64 project)
C:\Windows\System32>

看到以上信息表示gcc/g++安装成功啦,如果提示没这个命令,可以配置下系统环境变量,将mingw的安装目录添加到PATH中如:C:/Program Files/mingw-w64/x86_64-7.2.0-win32-seh-rt_v5-rev1/mingw64/bin

CUDA安装

这个安装一定要注意,其实有两个内容安装,一个是CUDA,一个是CUDNN;CUDA是NVIDIA芯片商提供的GPU加速开发包,CUDNN是NVIDIA提供的基于深度学习等一些机器学习算法支持的东东,具体是啥可以百度细细了解,我这里只要描述要装这两个就好

下载CUDA和CUDNN有点纠结,不知道NVIDIA公司抽什么风,提供的下载地址或网页老跳到一个导航页,所以下载找这个资源真心不容易,大家百度可以找”CUDA8.0”,”CUDNN5.0”网上因此有好心人提供了资源下载的,我这里就不整了,懒得上传了,但可以列一下下载的内容样式:
-CUDNN 解压后会有一个cudnn-8.0-windows10-x64-v5.0-ga目录
-CUDA 下载后是一个cuda_8.0.44_win10.exe执行文件

首先安装cuda
这个比较简单,执行EXE默认安装,选择自定义全部安装就好,别精简安装;另外安装前注意显卡驱动最好先装好,还有就是你的显卡是否支持CUDA;可以百度下一个”GPUZ”这个程序看看;
如果显卡本身不支持CUDA,那就别继续了,一切都是徒劳;
安装好CUDA后,就可以开始安装CUDNN

CUDNN安装

CUDA默认安装目录有三个其中一个是下面的目录,用于安装CUDNN:
- C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

安装CUDNN最简单,打开cudnn-8.0-windows10-x64-v5.0-ga目录会有三个子目录和文件:

[bin]
cudnn64_5.dll (拷贝到CUDA安装目录对应的BIN目录下)
[include]
cudnn.h (拷贝到CUDA安装目录对应的INCLUDE目录下)
[lib\x64]
cudnn.lib(拷贝到CUDA安装目录对应的lib\x64目录下)

好了这样CUDA和CUDNN就安装完成了

检查CUDA是否安装成功

还是打开CMD执行nvcc -V(注意V一定要大写)

C:\Windows\System32>nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sat_Sep__3_19:05:48_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44
C:\Windows\System32>

看到以上信息,恭喜CUDA安装成功了,但是否显卡支持CUDA呢?CUDA是否可以正常工作呢?这就需要用到VS2015了,要去编译执行CUDA的示例程序检查了;

检查CUDA是否可以正常工作
启动你的VS2015,打开项目解决方案:

-C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\1_Utilities\deviceQuery\deviceQuery_vs2015.sln

这是我的默认安装CUDA路径之二,打开后编译生成deviceQuery.exe,然后在CMD中执行一下,看到最后有没有返回PASS,是PASS就表示CUDA可以正常工作,否则就有问题,这可有得查了,有可能是显卡不支持,有可能是CUDA安装有问题;
但卸载CUDA要注意,千万别用360,也别信360提示卸载提示要清理卸不干净的文件,真的会很惨;我之前装CUDA9.0就是因为按360提示干了清理未删干净的文件,结果CUDA9.0再也装不上,还老开机报错(小白警示)

 Result = PASS

Theano、pycuda、nose安装

这些安装为什么放到一起来安装呢?因为这三个是python的组件,安装方法一样,而且很简单,只要分别执行以下CMD命令(建议最好以管理员身份打开CMD,另外要在Python的\Scripts目录下执行以下命令)

D:\Python36\Scripts>pip install Theano
D:\Python36\Scripts>pip install pycuda
D:\Python36\Scripts>pip install nose

nose是python的测试框架,主要是Theano.test()执行时会用到;
pycuda是Python支持Cuda的组件,所以必装;

如何检测是否已安装了以上组件?
使用 pip list 命令,会列出你当前Python安装的组件列表

D:\Python36\Scripts>pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
appdirs (1.4.3)
colorama (0.3.9)
decorator (4.1.2)
Mako (1.0.7)
MarkupSafe (1.0)
nose (1.3.7)
nose-parameterized (0.6.0)
numpy (1.13.3)
pip (9.0.1)
py (1.5.2)
pycuda (2017.1.1)
pymssql (2.1.3)
PyMySQL (0.7.11)
pytest (3.2.5)
pytools (2017.6)
scipy (1.0.0)
setuptools (28.8.0)
six (1.11.0)
Theano (0.9.0)

Theano配置GPU

这个过程是被坑到不知痛的过程,我反复安装了三次以上的所有过程,碰到了很多问题,主要可以归结如下:

1、提示g++找不到,这是因为minGW的bin目录没有添加到系统环境变量PATH中
2、提示CL编译CUDA的.cpp和.h文件存在编码问题,编译不成功,这个最坑,要一个一个找出提示的文件并一个一个的用记事本打开另存为unicode文件替换原文件,就可以编译成功了
3、提示CUDA已安装,但不可用,这个问题会发疯,这是配置问题,还有一些环境变量没配好的问题
还有很多,我记不清了

配置之前我先列一下我的系统环境变量清单:

名称
CUDA_BIN_PATH%CUDA_PATH%\bin
CUDA_LIB_PATH%CUDA_PATH%\lib\x64
CUDA_PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
CUDA_PATH_V8_0C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0
CUDA_SDK_BIN_PATH%CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH%CUDA_SDK_PATH%\common\lib\x64
CUDA_SDK_PATHC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
DXSDK_DIRC:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\
INCLUDEC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt
LIBC:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;
LIBC:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x64;
LIBC:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64;
NVCUDASAMPLES_ROOTC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVCUDASAMPLES8_0_ROOTC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0
NVTOOLSEXT_PATHC:\Program Files\NVIDIA Corporation\NvToolsExt\
PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin;
PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp;
PATHC:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;
PATHC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;
PATHC:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\x64;
PATHC:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include\;
PATHC:\Program Files\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\bin;
PATHC:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
PATH%CUDA_LIB_PATH%;
PATH%CUDA_BIN_PATH%;
PATH%CUDA_SDK_LIB_PATH%;
PATH%CUDA_SDK_BIN_PATH%;
PATHC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64;
PATHC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\common\lib\x64;
PATHC:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0\bin\win64;
PATHC:\Program Files\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\bin;
PATHC:\Program Files\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\lib;
PATHD:\Microsoft Visual Studio 14.0\VC\bin\amd64;
PATHC:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64

以上是所有相关的系统环境变量,有安装时自动生成的,也有手动添加的,对比着自已加上去,目录自已对应着找;

Theano配置文件
首先打开你的登录用户目录”C:\Users\王老五\“,然后创建一个”.theanorc.txt”,前面一定要加”.”;

内容如下所示:

[global]
openmp = False
device = gpu0
floatX = float32

[blas]
ldflags =

[gcc]
cxxflags = -I"C:\Program Files\mingw-w64\x86_64-7.2.0-win32-seh-rt_v5-rev1\mingw64\include"

[lib]
cnmem=0.7

[nvcc]
flags = -LD:\Python\Python36\libs
fastmath = True
compiler_bindir =D:\Microsoft Visual Studio 14.0\VC\bin\amd64

其中:
[gcc]cxxflags为mingw64的安装目录
[nvcc]flags为Python的Libs目录
[nvcc]compiler_bindir为VS2015的安装目录中VC++目录,主要用到CL.EXE,用于编译cpp和h文件

以上信息配好后就可以检测一下GPU是否可用了,下面是Theano官网提供的测试是否启用了GPU的代码:

from theano import function, config, shared, tensor
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([], tensor.exp(x).transfer(None))
print(f.maker.fgraph.toposort())
t0 = time.time()
for i in range(iters):
    r = f()
t1 = time.time()
print("Looping %d times took %f seconds" % (iters, t1 - t0))
print("Result is %s" % (numpy.asarray(r),))
if numpy.any([isinstance(x.op, tensor.Elemwise) and
              ('Gpu' not in type(x.op).__name__)
              for x in f.maker.fgraph.toposort()]):
    print('Used the cpu')
else:
    print('Used the gpu')

以上代码保存一个文件”PythonApplication2.py“,执行后,应该有以下信息:

X:\PythonApp\PythonApplication2>python PythonApplication2.py
WARNING (theano.sandbox.cuda): The cuda backend is deprecated and will be removed in the next release (v0.10).  Please switch to the gpuarray backend. You can get more information about how to switch at this URL:
 https://github/Theano/Theano/wiki/Converting-to-the-new-gpu-back-end%28gpuarray%29

D:\Python36\lib\site-packages\nose_parameterized\__init__.py:7: UserWarning: The 'nose-parameterized' package has been renamed 'parameterized'. For the two step migration instructions, see: https://github/wolever/parameterized#migrating-from-nose-parameterized-to-parameterized (set NOSE_PARAMETERIZED_NO_WARN=1 to suppress this warning)
  "The 'nose-parameterized' package has been renamed 'parameterized'. "
Using gpu device 0: GeForce GTX 1050 (CNMeM is enabled with initial size: 70.0% of memory, cuDNN 5005)
[GpuElemwise{exp,no_inplace}(<CudaNdarrayType(float32, vector)>), HostFromGpu(GpuElemwise{exp,no_inplace}.0)]
Looping 1000 times took 0.24114155769348145 seconds
Result is [ 1.23178029  1.61879349  1.52278066 ...,  2.20771813  2.29967761
  1.62323296]
Used the gpu

X:\PythonApp\PythonApplication2>

重点看 ”Used the gpu “这一句,这就表示正确使用GPU了,否则会是”Used the cpu”

总结

以上方法和过程是我成功安装的过程,折腾了好几天,重装了几次,最终还是成功了;如果按以上方法大家安装中还是碰到问题,这是有很大可能,环境不同问题就不同,没办法;坑还是很多的,能安装上不容易;接下来要开始我的深度学习研究之旅了;

更多推荐

非Anaconda纯PYTHON环境下Theano基于WIN10的纯净CUDA安装与GPU配置

本文发布于:2023-04-24 07:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/f2fa6ed5aef5d5aaacf778e90ec7fba1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:纯净   环境   Anaconda   PYTHON   Theano

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 100043文章数
  • 26002阅读数
  • 0评论数