[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程



Cuda6.5安装

备注:已经装好cuda的请略过,往下看。
记得没有VS2012的一定要先装VS。否则:安装后打开VS2012新建项目不显示NIVIDA解决方案。记住记住记住!重要的事情说三遍!
第一步:安装文件的下载,直接去官网就下载就可以。现在有cuda7.0了。
cuda
直接双击exe文件,弹出后,首先会监测一下你的运行环境,如果找不到Nividia对应的显卡设备,他会提示你是否要继续安装。这里面nvidia的显卡,最起码也是8800以上的,要不是无法编写CUDA的。千万不要电脑上面是intel或者AMD的显卡,却要编写cuda,除非你有钱买一个cuda-x86这个编译器。
第二步:和正常安装软件步骤一样,首先弹出的对话框直接OK就行,这个是CUDA的一些安装文件,位置在哪无所谓。会监测你的电脑是否支持cuda的搭建,接下来一步步的走。
第三步:
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第1张图片
博主强烈推荐选择自定义安装
博主当初就因为选了精简安装,没安装上SDK。
安装的位置,推荐自己建三个好找的文件夹,不用他默认的路径,免得稍后配置环境变量麻烦。
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第2张图片
下一步直接安装就行,等待过程漫长,喝杯茶吧
第四步:
接下来配置cuda的环境变量,默认安装好后,他会自动帮你设置好2个环境变量,但是最好还自己添加下其他的几个,方便日后配置vs使用。有两个是默认的环境变量,只需添加下面四个即可:

<code class="hljs autohotkey has-numbering">
CUD<span class="hljs-built_in">A_BIN</span>_PATH  <span class="hljs-var_expand">%CUDA_PATH%</span>\bin

CUD<span class="hljs-built_in">A_LIB</span>_PATH  <span class="hljs-var_expand">%CUDA_PATH%</span>\lib\Win64

CUD<span class="hljs-built_in">A_SDK</span>_BIN  <span class="hljs-var_expand">%CUDA_SDK_PATH%</span>\bin\Win64

CUD<span class="hljs-built_in">A_SDK</span>_LIB  <span class="hljs-var_expand">%CUDA_SDK_PATH%</span>\common\lib\Win64

<span class="hljs-label">CUDA_SDK_PATH  C:</span>\cuda\cudasdk\common</code><ul class="pre-numbering" style="display: block;"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

第五步:检测Cuda的安装成功与否。
首先启动cmd DOS命令窗口(博主的cuda安装到c:\cuda文件夹下)
  默认进来的是c:\users\Admistrator>路径,输入 cd .. 两次,来到c:目录下输入dir 找到安装的cuda文件夹
  还是直接上图吧,方便清晰:
  [置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第3张图片
  [置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第4张图片
  [置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第5张图片
至此,万里长征第一项基本成功了。(如果没有安装成功,重新再装下)
最后一步:(这段偷懒直接复制的,图里面的cuda5.5自己当作cuda6.5就好)
5 最后就是VS的配置了
  5.1 启动VS2012
  5.2 新建一个win32的控制台工程,空的。
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第6张图片
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第7张图片
 5.3 右键源文件文件夹->新建项->选择cuda c/c++->新建一个以.cu结尾的文件 
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第8张图片
5.4 右键工程-》生成自定义-》选择cuda生成
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第9张图片
  5.5 右键test.cu-》属性-》选择cuda c/c++编译器
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第10张图片
  5.6 右键工程-》属性-》链接器-》常规-》附加库目录-》添加目录 $(CUDA_PATH_V5_5)\lib\$(Platform);
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第11张图片
  5.7 在链接器-》输入中添加 cudart.lib
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第12张图片

  5.8 在工具-》选项-》文本编辑器-》文件扩展名-》添加cu \cuh两个文件扩展名
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第13张图片

至此,编译环境的相关搭建就完成了。

分——————————–割———————————线
分——————————–割———————————线

Caffe安装

老规矩,按照步骤慢慢来,面包会有的!

第一步:首先去http://download.csdn.net/detail/yangkequn/8108035下载,这个Caffe里面有很多的lib,是已经编译好了的。CSDN没有积分的可以私信博主,给你发邮箱去!
然后去https://github.com/niuzhiheng/caffe下载原作者的Caffe!
为什么要下载两个Caffe工程呢?因为1中的Caffe虽然是编好的,有各种lib和include的,但是没有%caffe_path/caffe/build/MSVCmex(其中%caffe_path为自己的路径)这个工程,这个工程用来编译Matlab接口的。所以,下载2的caffe就是要这个工程文件。

第二步:将MSVCmex这个工程复制到1中的caffe/build里面,用VS2012打开工程,直接运行发现不能编译。修改如下用editplus(当然任何编译器都可以,直接在VS里面也可以修改)打开matcaffe.vcxproj中,把里面所有的cuda6.0改成cuda6.5,之后把其中所有的C:/programme/matlab改为你自己的matlab地址。保存。当然部分路径还是需要根据自己的情况全部修改。(比如cuda的路径一般也是需要修改的,博主添加cuda的路径为:C:\cuda\cudatoolkit\lib\x64)接下来你就可以编译matcaffe.sln这个文件了。但是问题来了!会出错的!不是直接就可以的!
不拐弯抹角了,直接正确的修改有以下几项(血泪史):
①在vs2012的工程中,matcaffe.cpp中的这一行init_key=random(); // NOLINT(caffe/random_fn)编译过程中出错了,改成了init_key=rand(); // NOLINT(caffe/random_fn) 就可以正常编译了。
②CUDA编译报错问题:error MSB3721这个是因为编译的路径中存在中文路径,只需要把中文路径改成英文路径即可。
③编译出错:提示找不到各种.h文件。这是因为你没有把include的路径添加到附加包含目录中。
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第14张图片
这样找不到头文件这个问题就解决了。
④出现error C2977: “std::tuple”: 模板 参数太多 g:\caffe\caffe for windows vs2012\src\gtest\gtest.h的类似的错误,如下图:
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第15张图片
两种解决办法:
第一种打开“解决方案资源管理器”,右键打开项目“属性”,在C/C++ –> “预处理器”–> “预处理定义”中增加以下行即可:
_VARIADIC_MAX=10;
另外一种,用代码编译器打开G:\Caffe\Caffe For Windows\src\gtest文件夹下的gtest.h,增加一下行即可:

<code class="hljs cs has-numbering"><span class="hljs-preprocessor">#<span class="hljs-keyword">define</span> _VARIADIC_MAX=10;</span></code><ul class="pre-numbering" style="display: block;"><li>1</li></ul>

⑤生成解决方案停止在caffe.pb.h remains the same as before这句话不动了。其实这个不是错误,是人家还在编译中,需要等待,只要不报错,就等待就行。
⑥又一个错误error C1083: 无法打开包括文件:“mex.h”: No such file or directory g:\caffe\caffe for windows vs2012\matlab\caffe\matcaffe.cpp
http://blog.sina.com.cn/s/blog_7e2e98ad0101hd3c.html
查看上面这个博客 ,添加相关路径。上几个图:注意图中黑体部分
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第16张图片
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第17张图片
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第18张图片
差点忘了:记得把Matlab的安装目录 和bin/include添加到环境变量中去,将caffe for windows下的将3rdparty/bin文件夹加到环境变量的PATH中。
⑦又一个错误error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public
这个错误应该是依赖库的问题,上面那些都配置好理应没有问题的。查资料查资料,最后也是最重要的,记得将平台改为X64的。许多文档中没有指出来!
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第19张图片
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第20张图片
注意字符集:使用Unicode字符集

再大胆并且抱有希望的重新生成解决方案一次吧!
[置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程_第21张图片

终于终于OK了!编译了36分钟!

最后
编译完成后需要将caffe-windows\bin中所有的dll 放到matlab\caffe中,编译完成后并没有把所有的dll都移入。

编译完成后:测试
进入matlab2013b,cd到caffe/matlab/caffe,输入im = imread(‘peppers.png’);
[scores, maxlabel] = matcaffe_demo(im,1);
如果提示错误,可能是在examples/imagent没有训练集文件caffe_reference_imagenet_model,网上能够下载到。

你可能感兴趣的:([置顶] Windows7 64位+Cuda6.5+vs2012 的caffe配置历程)