Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境
折腾了几天,终于在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环境的更多相关文章
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- Windows 10下安装配置Caffe并支持GPU加速(修改版)
基本环境 建议严格按照版本来 - Windows 10 - Visual Studio 2013 - Matlab R2016b - Anaconda - CUDA 8.0.44 - cuDNN v4 ...
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...
- (OpenCV) VS2013 + opencv-2.4.10.exe + Windows 10 开发环境配置
主要配置2点: - Windows 环境变量. - VC++ 配置. STEP BY STEP: 1. 双击 ”opencv-2.4.10.exe“,解压到本地文件夹 “C:\ ". 2. ...
- windows 10安装和配置caffe教程 | Install and Configure Caffe on windows 10
本文首发于个人博客https://kezunlin.me/post/1739694c/,欢迎阅读! Install and Configure Caffe on windows 10 Part 1: ...
- 在Windows 10 Anniversary下配置Caffe
去年十月份的时候尝试过配置caffe,真的是恶心到家,当时用的还是微软魔改的基于NuGet的caffe.现在这个项目退役了,接手的是原项目下的windows分支,虽然并不是很成熟,但是依然非常推荐在W ...
- VS2010+opencv2.4.10+gsl_1.8配置实现RobHess的SIFT程序
最近在做sift方面的毕业设计,弄了一天终于把RobHess的SIFT程序调通了.虽然网上有很多相关博文,但是我还是想把我的调试的过程跟大家分享一下.由于工程没法在博文上传,所以有需要的可以在下方留言 ...
- mac OS X 10.9.1 配置jdk环境变量
进入命令行 cd ~ touch .bash_profile vi .bash_profile 输入内容jdk变量配置内容: export JAVA_HOME=/Library/Java/JavaVi ...
- VS2013+Win10+opencv3.0配置(包括opencv2.4.10版本)
在win下配置opencv3.0.0还是比较简单的,这里简单说一下配置过程:参考链接:http://blog.csdn.net/u010009145/article/details/50756751 ...
随机推荐
- MySQL Python教程(1)
首先对于数据库的基本操作要有一定基础,其次了解Python的基础语法. 建议先阅读MysqL中文教程http://doc.mysql.cn/mysql5/refman-5.1-zh.html-chap ...
- nginx反向代理proxy模块相关参数
http_proxy_module Proxy_pass proxy_pass指令属于ngx_http_proxy_module模块,此模块可以将请求转发到另一台服务器:官方说明:http://ngi ...
- jsp+servlet
- git commit --amend
任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 有时候我们提交 ...
- php学习笔记(1)-----基础
语法 <?PHP //code here?> 变量以$开头 字符串并置运算符 . echo $txt1 . " " . $txt2计算字符串长度 strlen() 空格 ...
- [codeforces 55]D. Beautiful numbers
[codeforces 55]D. Beautiful numbers 试题描述 Volodya is an odd boy and his taste is strange as well. It ...
- 十进制转为N进制
昨天笔试遇到的题,如果是正数,不断以余数做除法即可: void convert(int num, int N, vector<char>& data) { int number = ...
- am等adb命令小总结
本文的am部分参考了:http://www.cnblogs.com/dyllove98/archive/2013/07/08/3178094.html 的博客 今天研究adb的时候发现在pc端也可以启 ...
- django 操作数据库--orm(object relation mapping)---models
思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...
- Java web中为什么要用Service接口和DAO接口?
面向接口:依赖倒转原理----使用service接口的原因是为了让表示层不依赖于业务层的具体实现,使用dao接口的原理也是如此,而且便于spring ioc容器,当修改dao层,时不需要修改servi ...