折腾了几天,终于在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】参照内容)
感恩!
以上。