折腾了几天,终于在windows系统上成功配置了Caffe环境,期间遇到了很多问题,每个问题的解决也都花了不少时间,查过挺多资料,感觉挺有意义,这里写篇博客记录一下。

原来我使用的CUDA版本是7.5,参照win7环境下CUDA7.5的安装、配置与测试(VS2010) 辛辛苦苦编译生成了caffe.exe,愣高兴了一晚,结果当我用caffe对手写字体库mnist进行训练时,悲剧了!运行时出现

CUDA driver version is insufficient for CUDA runtime version.

意思就是你的显卡驱动版本与CUDA的版本不匹配,直接一点就是你的显卡太辣鸡了!不适合这么高版本的CUDA。

我一看,完了,太冲动了,辛辛苦苦编译完caffe.exe,还没能用上,就出现致命的问题!第一时间就是想着怎么补救,将问题抛给百度,顺道爬墙去了google,给的答案基本都是将显卡驱动升级至最高版本或者是卸载CUDA7.5,或一个与你的显卡驱动能匹配的CUDA版本。我自己的电脑,我是知道的,用着学校实验室批发回来的电脑,显卡肯定是不行的,而且驱动已经是最新版本。想到这,我又开始怀疑,可能我电脑的显卡根本就不支持CUDA。越想越着急,我下定决心要把这件事弄清楚!下面正式开始!

一、VS2013的安装

现在visual Studio已经免费了,微软真的是体恤中国的科研人士,致敬!安装在这里就不多提了,官网上下载就好,还有中文版的-。-

二、Opencv2.4.10的安装

开源计算机视觉库,现在已经更新到3.0了,我比较传统,还在使用2.4.10,下载和安装也不多提了-。-

三、CUDA的安装

检查显卡


首先最重要的一点是,你得确认你的显卡是否支持CUDA。CUDA是NVIDIA厂商推出的运算平台,如果显卡厂商不是NVIDIA,那么,我“不负责任”地说,CUDA不适合你的电脑,到别处玩沙去吧!(或许已经有其它厂商制造的显卡支持CUDA了,但绝大部分,都不支持)。如果你的显卡是N卡,也没急着偷笑,因为太老的N卡也是要去边上玩沙的。

我的机器的基本配置:

  • 处理器 intel i3-2120
  • 内存 8GB
  • 显卡 NVIDIA GeForce 405 OEM  512MB
  • 系统 Windows7 64bit

配置很差吧,我都懒得港-。-!

首先可以在NVIDIA的官方网站查看显卡是否在支持的列表中。下面我截了两幅图,为了图文并茂而已,而且也只是部分。

我在这上面没查到我的GeForce 405,心想完了,科研举步维艰啊!后来又想,可能我这个显卡年代过于久远,人家懒得在列表里列出来,况且您好我截了两张图都还没列全呢!后来我不断查资料时,发现有博主说,上面那个表不是特别全,然后给了一个NVIDA的硬件设备网站,说是可以在上面查看是否支持!就是这个链接——>点我

还有的说法是说GPU-Z也可以查看是否支持,

不过听说这个软件有时会失准,所以最好还是查看硬件的支持信息。

开始安装


看来我的显卡还是支持CUDA的,接下来就要选一个合适版本的CUDA了。那怎么知道我的显卡支持的CUDA最高版本是哪一个呀?为此我又百度了很久,终于功夫不负有心人,在一个论坛的网友提问中找到了答案。

有时真的是感慨互联网搜索功能之强大!你遇到的问题,基本上都会有人遇到过并解决!

于是乎,我就打开了NVIDIA控制面板,找到了NVCUDA.DLL信息显示栏,截图如下:

看来我的显卡支持的CUDA最高版本只到6.5,现在都出到8.0了,再次感慨电脑配置之差!

下载了正确的CUDA版本,安装便是,在这里提醒两点:

1、不要选择精简模式安装,而是全部安装,因为选择精简安装后,SDK包是默认不安装的,但是实际使用时,是要用到SDK中的内容的。

2、在安装过程中,提示:"This graphics driver could not find compatible graphics hardware....",一定不要点“继续”,如果点了,后续你就会遇到开头我说的那种问题,所以,一定慎重!

CUDA driver version is insufficient for CUDA runtime version.

所以安装CUDA之前,一定一定要确定好你的显卡支持的最高版本,尤其是那些显卡老旧的人(最新换的显卡就无所谓啦,装个最高版本的,妥妥的!)

验证CUDA是否安装完成并能使用


安装完之后,得确认是否安装正确,打开命令提示框cmd,输入命令“nvcc -V”,如果安装正确,会显示下面的结果:

显示CUDA的版本是V6.5.13。

当然,这只是表明你安装CUDA正确,但并不表示能用,要验证是否能用,还需使用到CUDA提供的例子。

1、在例子的安装目录下,找到解决方案的名字。比如我的例子的安装路径是

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.

然后在

C:\ProgramData\NVIDIA Corporation\CUDA Samples\v6.\1_Utilities

下,找到bandwidthTest文件夹下的bandwidthTest_vs2013.sln ,有几个不同版本的解决方案,我使用的是vs2013,所以选择这个。

2、开始编译,运行生成控制台程序如下:

看到Result=PASS 就可以安心了。

还有一个例子是deviceQuery文件夹下的deviceQuery_vs2013.sln ,编译后运行的结果如下:

同样,看到Result=PASS 就可以放心了!

到这里,CUDA确定是可用了,可以起身抽支烟放松放松~

四、caffe环境的配置

我配了几次caffe环境,每次都是参照这个博文里的步骤配置的http://blog.csdn.net/chenqibob/article/details/52135614

虽然使用的是CUDA7.5,但步骤是一致的,参考的时候注意路径、环境变量、依赖库、包含目录、库目录等问题即可!

遇到的问题:

1、出现“应用程序无法正常启动(0xc000007b)”

可能是因为:

a.需要把./3rdparty/bin的路径加入到系统环境变量Path中;

b.之前使用的opencv是win32位的,而caffe使用的Release是64位配置的,因此在环境变量中既要配x86的opencv的vc12\bin,也要有x64的vc12\bin。

2、在使用CUDA6.5版本生成解决方案后,编译时,出现:

【conv_layer.cu】 错误  error: too few arguments in function call

点击这个错误,定位到错误行

在某论坛上看到的解决方法是在最后加入第四个参数“false”,即更改为

重新编译后,该错误消失。

3、在使用CUDA6.5版本编译时,遇到了一个问题:

CUDA fatal error "Invalid device function "

出现这个问题,说明你的gpu超荷载了,你得查查自己的gpu的计算能力,怎么查呢?我用的是GPU-Z查看的,

我的gpu的计算能力为1.2(极低!),但我参照博客配置时,在code Generation中使用的是compute_20,sm_20,所以一直出错,后来按照自己的计算能力,更改一下就编译通过了!

另外我想补充的是以下几点:

1、CUDA的用处:目前随着硬件技术的进步,常使用GPU(Graphics Processing Unit,图形处理器)来进行神经网络算法的训练及实现。GPU计算的基础是Nvidia的CUDA环境。

2、Caffe的主版本(caffe-master)只支持Linux,所以要下载专门的caffe windows版本。

3、Caffe的编译需要第三方库的支持,3rdparty即为所需的第三方库,通常包括了:

  a.boost函数库,下载地址是http://www.boost.org/ ,下载需要的版本库。

  b.Opencv开源计算机视觉库,到官网下载就好。

  c.OpenBlas,是一个高性能的多核BLAS(Basic Linear Algebra Subprograms,基础线性代数子程序库),下载地址是http://www.openblas.net/ ,注意要下载64位的window版本。

  d.glog是google的开源API,但是google是上不去的,翻墙吧-。-

  e.levelldb,也是谷歌的开源库,下载地址也在google上,不过这里有个链接可以直接下载https://leveldb.googlecode.com/archive/windows.zip

  f.protobuf,也是谷歌的开源库,下载地址也在google上,在百度云找到一个版本http://pan.baidu.com/s/1pJlZubT

参考博客:

1、在Windows8.1上安装CUDA (【检查显卡】参照内容)

2、CUDA7.5安装和vs2013配置 (【安装CUDA】参照内容)

3、Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境(【配置caffe环境】参照内容)

4、配置Caffe+VS2013+CUDA 6.5+Windows 8.1 64位系统(【遇到的问题之2】参照内容)

5、cuda-convnet在Windows下的使用 错误(error:invalid device function) (【遇到的问题之3】参照内容)

感恩!

以上。

Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境的更多相关文章

  1. caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题

    之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...

  2. Windows 10下安装配置Caffe并支持GPU加速(修改版)

    基本环境 建议严格按照版本来 - Windows 10 - Visual Studio 2013 - Matlab R2016b - Anaconda - CUDA 8.0.44 - cuDNN v4 ...

  3. win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

    win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...

  4. (OpenCV) VS2013 + opencv-2.4.10.exe + Windows 10 开发环境配置

    主要配置2点: - Windows 环境变量. - VC++ 配置. STEP BY STEP: 1. 双击 ”opencv-2.4.10.exe“,解压到本地文件夹 “C:\ ". 2. ...

  5. windows 10安装和配置caffe教程 | Install and Configure Caffe on windows 10

    本文首发于个人博客https://kezunlin.me/post/1739694c/,欢迎阅读! Install and Configure Caffe on windows 10 Part 1: ...

  6. 在Windows 10 Anniversary下配置Caffe

    去年十月份的时候尝试过配置caffe,真的是恶心到家,当时用的还是微软魔改的基于NuGet的caffe.现在这个项目退役了,接手的是原项目下的windows分支,虽然并不是很成熟,但是依然非常推荐在W ...

  7. VS2010+opencv2.4.10+gsl_1.8配置实现RobHess的SIFT程序

    最近在做sift方面的毕业设计,弄了一天终于把RobHess的SIFT程序调通了.虽然网上有很多相关博文,但是我还是想把我的调试的过程跟大家分享一下.由于工程没法在博文上传,所以有需要的可以在下方留言 ...

  8. mac OS X 10.9.1 配置jdk环境变量

    进入命令行 cd ~ touch .bash_profile vi .bash_profile 输入内容jdk变量配置内容: export JAVA_HOME=/Library/Java/JavaVi ...

  9. VS2013+Win10+opencv3.0配置(包括opencv2.4.10版本)

    在win下配置opencv3.0.0还是比较简单的,这里简单说一下配置过程:参考链接:http://blog.csdn.net/u010009145/article/details/50756751 ...

随机推荐

  1. MySQL Python教程(1)

    首先对于数据库的基本操作要有一定基础,其次了解Python的基础语法. 建议先阅读MysqL中文教程http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chap ...

  2. nginx反向代理proxy模块相关参数

    http_proxy_module Proxy_pass proxy_pass指令属于ngx_http_proxy_module模块,此模块可以将请求转发到另一台服务器:官方说明:http://ngi ...

  3. jsp+servlet

  4. git commit --amend

    任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 有时候我们提交 ...

  5. php学习笔记(1)-----基础

    语法 <?PHP //code here?> 变量以$开头 字符串并置运算符 . echo $txt1 . " " . $txt2计算字符串长度 strlen() 空格 ...

  6. [codeforces 55]D. Beautiful numbers

    [codeforces 55]D. Beautiful numbers 试题描述 Volodya is an odd boy and his taste is strange as well. It ...

  7. 十进制转为N进制

    昨天笔试遇到的题,如果是正数,不断以余数做除法即可: void convert(int num, int N, vector<char>& data) { int number = ...

  8. am等adb命令小总结

    本文的am部分参考了:http://www.cnblogs.com/dyllove98/archive/2013/07/08/3178094.html 的博客 今天研究adb的时候发现在pc端也可以启 ...

  9. django 操作数据库--orm(object relation mapping)---models

    思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...

  10. Java web中为什么要用Service接口和DAO接口?

    面向接口:依赖倒转原理----使用service接口的原因是为了让表示层不依赖于业务层的具体实现,使用dao接口的原理也是如此,而且便于spring ioc容器,当修改dao层,时不需要修改servi ...