基于CUDA的Theano GPU加速环境配置 GPU没有反应.求解答
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于CUDA的Theano GPU加速环境配置 GPU没有反应.求解答相关的知识,希望对你有一定的参考价值。
参考技术A 1. 首先安装python,我选择安装Anaconda (Windows 64-Bit Python 2.7 Graphical Installer 下载地址)。Anaconda的一些命令(在Anaconda的命令行窗口输入):
conda list #该命令,将列出Anaconda安装的所有应用包,我们可以看到Anaconda已经安装了numpy, nose, pip, python, scipy, mingw等等。
conda install <pkg name> #该命令用于安装应用包,如 conda install numpy.
pip install <pkg name> #该命令用于安装应用包,如 pip install theano.
conda update <pkg name> #升级应用包,如 conda update python
2. 安装Theano,在Anaconda 的命令窗口中输入 pip install theano,可以看到程序开始下载安装包,并检查是否满足安装条件:numpy>=1.5.0,scipy>=0.7.2,满足条件之后开始运行setup.py安装theano,安装完成后会显示Successfully installed theano。
3. 测试Theano安装情况。
(1)在ipython中输入以下两行代码:
import theano
theano.test()
会显示theano的版本号,安装位置,已经其他包的安装版本,如numpy,nose,python等。
在运行中出现g++不是内部或外部命令,也不是可运行的程序或批处理文件。
(2)在Anaconda的命令行窗口输入:python Lib\site-packages\theano\tests\run_tests_in_batch.py
显示unable to find theano-nose,查看run_tests_in_batch.py发现,其中路径设置为在bin下寻找theano-nose文件,而实际上Anaconda文件夹下根本没有bin这个文件夹,theano-nose存放在Scripts文件夹中。
》》》尝试1:将Scripts更名为bin,重新运行这句命令,可以成功运行。但是出现一个warning,提示没有检测到g++,所以无法运行优化后的C代码版本,只能执行python版本。
该种尝试的结果是,下次打开Anaconda 命令窗口后出现错误,因为其运行路径为Scripts,所以还是不要修改了。
(3)g++问题。我们打开MinGW文件夹,可以很清楚的看到有g++,但是为什么使用不了呢??在Anaconda 命令窗口中输入g++也能成功调用g++.exe啊。所以结论是,鉴于这个代码中出现很明显的漏洞,所以说不定这里也是错误,先不管这些了。
试着做了以下配置,也不知行不行。
添加环境变量: path: C:\Anaconda\MinGW\bin;C:\Anaconda\MinGW\x86_64-w64-mingw32\lib;
新建环境变量: PYTHONPATH: C:\Anaconda\Lib\site-packages\theano;
在home目录下(cmd可以看到,我的是C:\Users\Administrator),创建 .theanorc.txt 文件内容如下:
[global]
openmp=False
[blas]
ldflags=
[gcc]
cxxflags = -IC:\MinGW\include
(4)验证BLAS是否安装成功。由于numpy是依赖BLAS的,如果BLAS没有安装成功,虽然numpy亦可以安装,但是无法使用BLAS的加速。验证numpy是否真的成功依赖BLAS编译,用以下代码试验:
>>> import numpy
>>> id(numpy.dot) == id(numpy.core.multiarray.dot)
False
结果为False表示成功依赖了BLAS加速,如果是Ture则表示用的是python自己的实现并没有加速。
Win10环境下安装theano并配置GPU详细教程
一.软件和环境
(1)安装日期2016/12/23;
(2)原材料VS2013,cuda-8.0(最好下载cuda7.5,目前theano-0.8.2对cuda-8支持不是很好),Anaconda3-4.2.0(64位);
(3)环境为win10.
二.安装步骤
(1)安装VS2013。这个没什么可说的,下载64位版本后就是一路下一步、确定就行,记住安装位置就可以了,我这里的安装目录是D:\\software\\VS2013:
接着右键我的电脑-》属性-》高级系统设置-》环境变量,之后编辑系统变量Path,加入两个路径D:\\software\\VS2013\\VC\\bin和D:\\software\\VS2013\\Common7\\IDE,以分号隔开,如图:
点击确定即可。
(2)安装cuda。这个也没什么可说的,到官网上下载cuda,并一路下一步+确定就好了,注意如果安装过程中win10提示阻止某项操作,一定要选择允许本次操作或允许程序所有操作,否则cuda就会安装失败。Cuda官网地址为
http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/#axzz46v2MC6l8,
下载地址为https://developer.nvidia.com/cuda-downloads,
如图:
(注意:这是cuda-8版本,对目前版本的theano支持不是很好,不过不影响使用,最好还是下载cuda7.5,我这里懒得再重装一遍,所以就用的cuda-8)
还有一定要记住cuda的安装路径,我的路径就是C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0,如图:
(3)右键我的电脑-》属性-》高级系统设置-》环境变量,可以看到系统变量中增加了两个变量CUDA_PATH和CUDA_PATH_V8_0,如图:
之后编辑系统变量Path,加入两个路径%CUDA_PATH%\\lib\\x64和%CUDA_PATH%\\bin,要用分号隔开,如图:
点击确定。
打开命令行,输入nvcc -V,如果出现下图则安装成功:
并可到目录C:\\ProgramData\\NVIDIA Corporation\\CUDA Samples\\v8.0\\1_Utilities\\deviceQuery下用VS2013打开并运行测试样例deviceQuery_vs2013.vcxproj文件,如图:(注意C:\\ProgramData为隐藏文件夹,需要点击C盘-》查看-》选项-》查看,选中显示隐藏的文件、文件夹和驱动器,点击确定。如图)
图为显示C:\\ProgramData文件夹的查看选项
图为deviceQuery_vs2013.vcxproj的位置
图为在VS2013中的运行结果
最后一行为Result = Pass则表示安装配置成功。
(4)安装Anaconda3-4.2.0,这个很简单,就是一路确定即可,记住安装位置,如我就是安装在D:\\software\\Anaconda3,如图:
接着右键我的电脑-》属性-》高级系统设置-》环境变量,在用户变量中添加PATH,并加入路径D:\\software\\Anaconda3,D:\\software\\Anaconda3\\Scripts和D:\\software\\Anaconda3\\Library\\bin,点击确定。如图:
之后进入命令行输入python,如果出现如图信息,则安装成功:
关闭命令行。
(5)安装mingw和libpython。打开命令行后输入conda install mingw libpython即可,目前libpython已经支持python3.5了,就不用再配置python3.4的环境了。注意如果安装mingw速度很慢,则可ctl+c并退出命令行,再进入命令行修改Anaconda的镜像,这里推荐清华的镜像,方法为在命令行中输入:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
,之后再conda install mingw libpython即可。
之后到Anaconda3的安装目录中可以看到MinGW的文件夹,如图:
(注:网上说需要把MinGW的路径加入到环境变量,其实不用,等会儿再theano的配置文件中标出MinGW的位置即可)
(6)安装theano。首先打开命令行,输入conda install scipy,之后再输入pip install theano即可。(为什么要输入conda install scipy我也不明白,但是网上建议)。之后在个人主文件夹下新建一个“.theanorc.txt”的文档。个人主文件夹就是打开命令行后所显示的文件夹路径,比如我的就是C:\\Users\\15540:
注意theano的配置文件为.theanorc.txt,注意前面那个点要有,并且文件名为.theanorc,.txt是文件类型,不要弄错。打开.theanorc.txt写入以下信息:
[global]
openmp=False
device = gpu
optimizer_including=cudnn
floatX = float32
allow_input_downcast=True
[lib]
cnmem = 0.8
[blas]
ldflags=
[gcc]
cxxflags=-ID:\\software\\Anaconda3\\MinGW
[nvcc]
flags = -LD:\\software\\Anaconda3\\libs
compiler_bindir = D:\\software\\VS2013\\VC\\bin
fastmath = True
注意需要把cxxflags=-ID:\\software\\Anaconda3\\MinGW换成你的Anaconda3中MinGW的位置,flags = -LD:\\software\\Anaconda3\\libs换为你的Anaconda3中libs的位置,compiler_bindir = D:\\software\\VS2013\\VC\\bin换为你的VS2013中VC\\bin的位置;还有cnmem = 0.8这个网上说设为1,但是貌似有点问题,建议设为小于1的值,如我这里设为0.8 ,这就可以避免后面显示CNMEM is disabled了。
(7)更新cudnn文件,到网上搜索cudnn下载下来(到官网注册一下就可以下载了,官网网址为https://developer.nvidia.com/cudnn)。将下载来的文件解压,解压出cuda文件夹,里面包含3个文件夹,如图。将设三个文件夹替换掉系统里面的对应文件,进行覆盖替换即可,例如我的文件目录为C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0。覆盖掉后面导入theano时会就不会出现CuDNN not available提示了。
(8)测试theano。打开命令行,输入python,在输入import theano,如果出现UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd5 in position 11: invalid continuation byte这种编码问题,这是因为掉用nvcc返回的字符串是使用的cwindows默认的默认编码,直接找到theano中对应的报错文件,把源码出错的地方改为 *.decode("GBK")就可以。比如我的是在theano下的__init__.py出现的编码问题,则修改为:
(如果出现上述错误,关闭命令行修改错误,重输一遍命令即可)出现以下画面则表示成功。
(注:可以看到仍有warning,不过不影响使用,出现warning的原因主要是cuda-8对目前版本的theano支持不太好导致,不过相信以后更新的theano会解决这个问题,如果实在接受不了这个warning就安装cuda7.5,步骤一样)
三.其他问题
(1)不要在环境变量添加PYTHONPATH变量,否则容易在import theano后出现configparser找不到或没有这个组件这个问题(在我这里是这样的);
(2)建议在安装完cuda后重启电脑;
(3)如果在命令行输入命令后出现什么问题,建议修改完问题后重启命令行;
(4)如果还有其他问题,试试重启电脑后在import theano,如果还有问题,一般就是配置文件.theanorc.txt的问题(我这个配置方式不一定百分之百的适合你),下面列出一些我参考的文章:
http://blog.csdn.net/u011821462/article/details/50145221
http://blog.csdn.net/stormragewang/article/details/51261465
http://blog.csdn.net/voidfaceless/article/details/53711550
以上是关于基于CUDA的Theano GPU加速环境配置 GPU没有反应.求解答的主要内容,如果未能解决你的问题,请参考以下文章
Keras学习环境配置-GPU加速版(Ubuntu 16.04 + CUDA8.0 + cuDNN6.0 + Tensorflow)
深度学习环境配置- win10+Anoconda3-2.4.0+cuda8.0+TensorFlow-GPU+Pycharm2016测试Demo-GPU加速