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 ...
随机推荐
- 通过url地址传递base64加密参数遇到的问题整理
1. base64的加密解密方法在C#的类库中就有 QueryString中的加号变成了空格问题 Server.UrlEncode(username),获取到的编码又将等于号变成了%3d; 到底改怎么 ...
- 信号屏蔽的切换的理解sigsuspend
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- IntelliJ Idea 修改编码格式
Setting→Editor→File Encodings→设置“Project Encoding”为UTF-8,如图:
- Java 7 Concurrency Cookbook 翻译 第一章 线程管理之四
七.创建和运行一个后台线程 Java中有一种特别的线程叫做 deamon(后台) 线程.这类线程具有非常低的权限,并且只有在同一个程序中没有其他的正常线程在运行时才会运行.注意:当一个程序中只剩下后台 ...
- 带你走进rsync的世界
导读 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录.rsync共有3种使用方 ...
- 使用 Intel HAXM 为 Android 模拟器加速,媲美真机
http://www.cnblogs.com/beginor/archive/2013/01/13/2858228.html
- 应用alter index ××× monitoring usage;语句监控索引使用与否
随着时间的累积,在没有很好的规划的情况下,数据库中也许会存在大量长期不被使用的索引,如果快速的定位这些索引以便清理便摆在案头.我们可以使用"alter index ××× monitorin ...
- 剑指Offer 斐波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 思路: 不考虑递归 用递推的思路 AC代码: class Solution { public ...
- STM32F103ZET6 用定时器级联方式输出特定数目的PWM(转载)
STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5.TIM8,共6个.这里需要使用定时器的级联功能,ST的RM0008 REV12的P388和P399页上有说明对于特定的定 ...
- js之作用域和面向对象
作用域 JavaScript以函数为作用域 函数的作用域在函数未被调用之前,已经创建 函数的作用域存在作用域链,并且也是在被调用之前创建 示例一 xo = "alex"; func ...