原文地址:https://my.oschina.net/QinghaiZheng/blog/986596
安装环境
- 电脑:Acer TravelMate TX50-G2
- Windows版本:Windows 10 家庭中文版,64位操作系统,基于x64的处理器
- 处理器:Inter(R) Core(TM) i5-7200U CPU@2.50GHz 2.70GHz
- 显卡:NVIDA Geforce 940MX
安装步骤
第一步:VisualStudio安装
- VisualStudio版本选择:VisualStudio版本我这里选择的是VS2012的(不要选择VS2015,具网上教程说明是VS2015不支持CUDA8.0,而我们接下来安装的CUDA我选择的是CUDA8.0,所以最好不要选择使用VS2015,可以使用VS2013或者VS2012),具体是从
MSDNitellyou
上下载下来的,下载下来的文件名称为:cn_visual_studio_ultimate_2012_x86_dvd_920954.iso
- VisualStudio安装:我是将其安装在C盘上
- VisualStudio激活:网上的教程是说要将其激活,但是我在安装完成后就已经是激活的状态了,很奇怪,不过没有影响,反正是能用
第二步:CUDA安装
-
CUDA支持检测:首先得看一下自己电脑的显卡是什么类型的,如果是A卡的话,是不能安装CUDA的,接下来的步骤就都不用看了;如果是N卡的话,去
CUDA GPUs
查看一下自己的显卡是不是支持CUDA -
CUDA版本选择:如果自己电脑的显卡支持CUDA的话,可以去
CUDA Toolkit Download
选择下载相应的CUDA。我按照如下选择的,下载先来的文件名称是cuda_8.0.61_win10.exe
:- Operation System:Windows
- Architecture:x86_64
- Version:10
- Install Type:exe(local)
-
CUDA安装:安装CUDA是要选择自定义安装,安装是选择全部功能(包括显卡驱动,我自己一开始没有选择安装显卡驱动,后面发现显卡驱动没了,就卸载了CUDA后重新安装了一遍,这个过程中就将所有内容都安装上,包括显卡驱动),不要精简安装,我自己没试过精简安装,但是具网上的教程,采用精简安装的话会出错。安装过程中安装位置我是采用默认位置,即安装在
C:\Program Files\
的相应位置,其他的应该就按部就班的点下一步,最后就安装好了CUDA
安装CUDA后不用自己配置系统环境变量,安装过程会自动配置的,安装完成后可以在cmd控制台命令行输入nvcc -V
查看版本信息
第三步:Anaconda安装
由于一开始学习Python时,用的是Python3.6版本的,所以一开始我装的Anaconda版本是适用于Python3的,老是出错,后来在网上查阅了一些列的资料后发现Python3.5版本对GPU的支持是不太好的,总会显示GPU不能用,所以这里我后来就放弃了使用Python3.x版本的,而是改用Python2.7这个版本。同时,因为Anaconda里面自带了Python和上百个包,所以在安装Anaconda之前,可以先将电脑中的Python卸载掉(这个也是为了后面使用pip进行安装是可以不用去操心到底是在那一个Python上安装)
-
Anaconda版本选择:选择Anaconda4.1.1版本及其以下的系列,这里我采用的是
Anaconda2-4.1.1-Windows-x86_64
这一个版本。因为选择这个及其以下版本时,里面自带的Spyder是2系列的,不是3系列的,而3系列的Spyder总是不调用ipythonw.exe解释器,而是调用ipython.exe,这个会导致theano编译时总是弹窗nvcc.exe! -
Anaconda安装:路径不要有空格,因为theano依赖的G++库不支持路径中有空格,我是将Anaconda安装在
D:\Anaconda2
这个路径。在安装过程中记得将添加路径选项选上。以我的安装路径为例,在安装完成之后在系统的环境变量中会出现C:\Anaconda2
和C:\Anaconda2\Scripts
这两个路径(如果没有得手动添加) -
安装完Anaconda的后续操作:安装完Anaconda后,在cmd控制台命令行下输入
conda install mingw libpython
,将G++安装上。在安装完成之后,会在Anaconda安装路径下看到一个MinGW文件夹,以我的为例,会出现D:\Anaconda2\MinGW
。然后将这两个路径添加到系统的环境变量:D:\Anaconda2\MinGW\bin
和D:\Anaconda2\MinGW\x86_64-w64-mingw32\lib
上述步骤就完成了Anaconda的安装,接下来就可以安装theano了
第四步:theano安装
-
theano安装-step1:直接在cmd控制台命令行下输入
pip install theano
。 -
注意:pip安装完成之后即可,不用安装网上的一些教程中说的添加如
pythonpath = D:\Anaconda2\Lib\site-packages\theano
这样的系统环境变量,这样子没什么用,而且会使得spyder启动时弹窗、kernal died等问题) -
关键点:由于theano现在的版本是0.9的某一版本,和原来的不一样,所以现在网上的大部分教程安装theano都只有直接安装theano-step1就完成了,其实现在这样子安装出错的,最后会出现
You are tring to use the old GPU back-end
这样子的错误。 -
theano安装-step2:在cmd控制台命令行下输入
conda install pygpu theano
。这样子安装pygpu这个库上述就完成了theano的安装
第五步:安装cudnn
-
安装cudnn的原因:在这里如果不按照cudnn,只是安装CUDA的话,还是无法在运算时使用GPU,安装完cudnn后,就可以在计算神经网络是利用GPU进行运算了
-
cudnn版本选择:在NVIDIA官网上下载:NVIDIA cuDNN,这里下载前得先登录NVIDIA才能下载,只要注册一个帐号即可,还是比较方便的。这里我选择的版本是cudnn-8.0-win10-x64这一版本,下载的文件名为:
cudnn-8.0-windows10-x64-v5.1.zip
-
cudnn安装:将下载的文件解压后,会出现三个子目录:
bin
、include
、lib
,我这里是将解压的目录放在D:\Program Files\cuda
。-
将相应的路径添加到系统环境变量中,这里添加的是
D:\Program Files\cuda\bin
和D:\Program Files\cuda\include
这两个路径 -
用VisualStudio2012新建一个CUDA项目,这里我是将项目名称命名为
cudaProject
,将项目存放的位置放在D:\Program Files\cuda\cudaProject
这一位置。同时在VS中将Solution Configuration
的内容选择为Release,将Platforms Solution
的Platforms中选为x64 -
在
项目属性/VC++ Directories/Include Directories
中添加include的路径(如D:\Program Files\cuda\include
)。注意这里是添加,就是在原来的里面添加进这些内容,不是将原来的替代掉 -
在
项目属性/VC++ Directories/Libary Directories
中添加lib\x64
路径(如D:\Program Files\cuda\lib\x64
)。注意,这里也是添加 -
在
项目属性/Linker/Input/Additional Dependencies
中添加cudnn.lib
。这里也是添加 -
在
项目属性/CUDA C|C++/Device/Code Generation
中将sm_20
改为sm_30
或者更高的数值 -
将
kernel.cu
文件中内容改为:#include <iostream> #include <cuda_runtime.h> #include <cudnn.h> using namespace std; void main(){ cudnnHandle_t handle; cudnnStatus_t t = cudnnCreate(&handle); cout<< cudnnGetErrorString(t); getchar(); }
-
完成上述操作后,点击
本地Windows调试器
,可以得到结果:CUDNN_STATES_SUCCESS
,表示安装成功了
-
-
一些后续操作:将解压出来的三个子目录:
bin
、include
、lib\x64
中的内容分别添加进C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
第六步:配置.theanorc.txt
注意,这个文件的文件名最前面有一个英文的点,不要漏掉! 我的该文件中内容如下:
[global]
openmp=False
device = cuda
floatX = float32
allow_input_downcast=True
cxx=D:\Anaconda2\Library\mingw-w64\bin\g++.exe
[blas]
ldflags=
[gcc]
cxxflags=-ID:\Anaconda2\MinGW
[nvcc]
flags = -LD:\Anaconda2\libs
compiler_bindir = C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin
fastmath = True
flags=-arch=sm_30
[dnn]
enabled = True
include_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
library_path=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64
第七步:解决import theano
中出现的g++编译的问题
这个问题是因为采用直接pip install theano
的缘故,解决方法如下:
- 去github下载最新的theano的zip文件,下载地址为:Github/Theano。我下载下来的文件名为:
Theano-master.zip
- 解压下载后的文件,拷贝出里面的
theano
文件夹,替换原来在D:\Anaconda2\Lib\site-packages\theano
这个文件夹,不用替换也行,合并也行(我就是采用合并的方法)。
整个方法中添加的系统环境变量有:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
D:\Anaconda2
D:\Anaconda2\Scripts
D:\Anaconda2\MinGW\bin
D:\Anaconda2\MinGW\x86_64-w64-mingw32\bin
D:\Anaconda2\Library\mingw-w64\bin
D:\Program Files\cuda\bin
D:\Program Files\cuda\include
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\include
上面这些是我觉得应该是在这个过程中添加进来的,不一定是对的,反正记录在这,以防重新安装等情况,可以作为一个参考
额外安装内容:Keras
这个也是直接用pip进行安装的。安装完这个后可能运行一会儿后可能会出现I/O错误,解决方法为:
- 在cmd控制台命令行中输入:
conda install ipykernel
。这样子就可以解决问题了
切换回CPU,不使用GPU结果对比
可以通过修改.theanorc.txt配置内容切换会使用CPU,而不是用GPU,配置内容为:
[blas]
ldflags =
[gcc]
cxxflags = -ID:\Anaconda2\MinGW\include
不过个人觉得不推荐,因为如果不使用GPU的话,可以在代码中去做调整,而不用去修改配置文件,这样子不仅麻烦,还容易出错。
使用GPU和CPU计算结果对比
采用网上的示例,计算相同的内容的,大概结果是采用CPU计算耗时为16s左右,而采用GPU计算耗时为0.8s左右。效果还是非常好的!!!