zoukankan      html  css  js  c++  java
  • win10-Anaconda2-Theano-cuda7.5-VS2013

    两天的辗转反侧,终于灵光一现找到了错误。

    首先,我在win10下配置好了gpu和cudnn版本的caffe。但是因为win平台的限制,caffe用的不够舒服。因为之前用过一阵子theano,虽然很慢,但是灵活啊,于是又将矛头指向了theano。。

    theano cpu版本安装很容易,主流方法都是利用Anaconda,方便快捷。

    本文主要介绍自己搞gpu和其他人配置时的坑,希望大家可以避免。

    1. 文件.theanorc.txt

        这里犯了一个很傻*的错误。win10后缀名是隐藏的,因为之前用的是win7后缀名不隐藏,所以自从在win10上安装了theano,此文件相当于被我命名 .theanorc.txt.txt 所以其实一个月来我就一直用的是cpu。。关键我还不知道文件格式都是错的,细思恐极。。下图正解:

     

    2. cuda版本

        之前安装caffe的时候,我装的是cuda8,因为我的无知,以为问题出现在cuda上,把cuda卸了,装上了cuda7.5.以下是我遇到过的错误(从参考的博客中截取,因为我不想在改成错误的配置来演示,心痛。。):

                           

    好,这张图的错误就是我一直以来的错误,划红线的是主要的错误

     我的错因出现在了:'--compiler-bindir ''C:Program Files<x86>Microsoft Visual Studio 12.0VCin'。  这个compiler bindir 把它理解为编译目录

      因为我的这个路径只有:Microsoft Visual Studio 11.0

                          

      而在.theanorc.txt文件中需要写nvcc的编译目录,所以网上99%的教程都是compoler_bindir=C:Program Files (x86)Microsoft Visual Studio 12.0VCin

      所以我在自己的.theanorc.txt文件里这么写:compoler_bindir=C:Program Files (x86)Microsoft Visual Studio 11.0VCin

      所以永远都不可能正确! 一直有报错找不到 vcvars64.bat 文件。于是我就按照博主的心路历程找到了另一为博主和另另一位博主,按照他们所言,下载了VCForPython27.msi文件,也配置了路径,也   找到了 vcvars64.bat文件,将它复制到了C:Program Files (x86)Microsoft Visual Studio 11.0VCin里,但是还报错找不到vcvars64文件。直到我幸运的遇到了另另另一位博主,他     的文章里的路径是这样的与众不同:compiler_bindir = D:softwareVS2013VCin。我想怎么在VS安装的路径下呢???我打开自己的VS安装路径,发现里面竟然有vcvars64.bat文     件!!!我仿佛明白了什么,这个路径才是适合自己的!当然为什么我这么确信呢》因为我看到这么一张图:

                                       

       图1这么写:cuda7.5支持win10,图2这么写:cuda7.5在VS2013下的编译器是Visual C++ 12.0,上面提到过了,我压根儿在C盘没找到啊,于是我确信这个compiler_bindir一定是这样的:                                 

                                                  

     好了,PyCharm里测试下gpu.test:

    此时我的.theanorc.txt是这样滴:

             

    跑官网测试gpu的例子:

    总算有了gpu信息了!但是还有一些不和谐的东西:CNMeM is disabled, cuDNN not availabel.  就是说cudnn还不能用,当然我还没配置呢。

    但是有以下办法消除其他不和谐的信息: 加入[lib]  cnmen=0.8 和allow_input_downcast=True

           

    看下结果:

    正确!没有错误和bug了。就是cdnn还没用。

     注意不能直接在.theanorc.txt中写:optimizer_including=cudnn,会出现如下错误:里面有一行:Reason=CNMEM_STATUS_OUT_OF_MEMORY

     意思应该是cnmem初始化设置太大超出了内存状态!所以在.theanorc中注意设置cnmem=0.8,如果还提示内存不够就再往小设置,越小占内存比越少。

     另外在错误后面还有个小hint:还可以在.theanorc中设置optimizer=fast_compile,或optimizer=None,这样也可以让程序正确运行。

    3.配置cudnn

     将cudnn下载后解压会发现有个名为cuda的文件夹里面有三个文件:lib,include,bin。将这三个文件复制到cuda安装目录下进行覆盖替换:

      

    替换cuda原来就有的三个文件夹,这时再运行gpu测试程序,就会发现连cudnn not avaliable 也不见了。完美。

          另:感谢知乎er贾峰原话:“有很多人推荐:在用户变量中新建变量pythonpath = C:Anaconda2Libsite-packages heano; 然后被坑了一把。完全没有必要,而且会导致spyder启动时弹窗,kernel died等问题,这个是我亲测,搞了一天。。。 ”     “安装Anaconda时,千万别安装Python 3.5版本的,总显示GPU不能使用。而且千万别安装spyder3系列,即Anaconda4.2.0以上。而应该Python 选择2.7,spyder选择2系列,即Anaconda4.1.1版本及以下。原因是什么呢?因为spyder3总是不调用ipythonw.exe解释器,而调用ipython.exe,导致theano编译的时候,总是弹窗nvcc.exe,”

                感谢另一位知乎erRednaxelaFX  的回答 : 为什么运行theano程序时总是会输出一堆DEBUG: nvcc STDOUT mod.cu ?

        首先nvcc是NVIDIA CUDA Compiler,跟Visual Studio没啥关系。其次是那个DEBUG:提示信息是完全无害的,只是在调用nvcc编译东西的时候输出的信息。升级Theano的话可能就不会看到它总是打出来了。

         注:以上弹窗和DEBUG这俩问题我都有,不过只是Aanconda和Theano的问题,不是错误,无关痛痒,我暂时也懒得折腾。最后,谢谢所有默默为大家提供疑难解答的大神!

    主要参考:

    手把手教你搭建深度学习平台——避坑安装theano+CUDA

    Win7 64位配置GPU版Theano与Keras详细指南(趟坑无数,手把手教你避坑)

    Win10环境下安装theano并配置GPU详细教程

    Win7+theano+CUDA+Keras血泪史

    Converting to the new gpu back end(gpuarray)

     

  • 相关阅读:
    关于 Xcode8打印JSON的时候,NSLog控制台显示不完整
    关于Xcode8打印一堆log问题
    iOS---关于UIWebView
    iOS --- UIWebView的加载本地数据的三种方式
    关于iOS10
    iOS切图文件的命名规范
    iOS---A valid provisioning profile for this executable was not found
    iOS---用Application Loader 上传的时候报错No suitable application records were found. Verify your bundle identifier 'xx' is correct
    2020Python作业15——装饰器2+迭代器
    【2020Python修炼记21】Python语法入门—生成器
  • 原文地址:https://www.cnblogs.com/king-lps/p/6689851.html
Copyright © 2011-2022 走看看