Win10 x64 下安装theano过程

原文地址: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:\Anaconda2C:\Anaconda2\Scripts这两个路径(如果没有得手动添加)

  • 安装完Anaconda的后续操作:安装完Anaconda后,在cmd控制台命令行下输入conda install mingw libpython,将G++安装上。在安装完成之后,会在Anaconda安装路径下看到一个MinGW文件夹,以我的为例,会出现D:\Anaconda2\MinGW。然后将这两个路径添加到系统的环境变量:D:\Anaconda2\MinGW\binD:\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安装:将下载的文件解压后,会出现三个子目录:binincludelib,我这里是将解压的目录放在D:\Program Files\cuda

    • 将相应的路径添加到系统环境变量中,这里添加的是D:\Program Files\cuda\binD:\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,表示安装成功了

  • 一些后续操作:将解压出来的三个子目录:binincludelib\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左右。效果还是非常好的!!!

Reference

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值