Windows下caffe的GPU配置:VS2013+cuda7.5+cudnn v5+python+matlab(二)

一、准备工作

1、首先去github上下载微软的caffe。https://github.com/Microsoft/caffe解压文件到任意位置,我自己的是放在D:\caffe-master。
2、安装Python.这里使用的是WinPython集合包,请下载64位版本https://sourceforge.net/projects/winpython/files/WinPython_2.7/2.7.10.3/安装WinPython。我这里是安装在d:\WinPython-64bit-2.7.10.3。
3、安装Matlab 2014a,我这里是安装在C:\ProgramFiles\MATLAB\R2014a。

二、配置过程

1、打开caffe-master文件夹,复制CommonSettings.props.example,再将CommonSettings.props.example重命名为CommonSettings.props得到(props格式的文件)。用文本格式(写字板)打开CommonSettings.props,将<MatlabSupport>==false<PythonSupport>=false中的false改为true;将PythonDir中的路径改为 winpython的路径(注意是你安装winPython的路径),如果是安装的是anaconda,可以改为C:\Anaconda,确保下一级中有python.exe即可;
将MatlabDir中的路径改为你matlab的安装路径即可。
改完如下图所示:
1

打开CommonSettings.props的配置.问题往往出现在这里:

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3     <ImportGroup Label="PropertySheets" />
  4     <PropertyGroup Label="UserMacros">
  5         <BuildDir>$(SolutionDir)..\Build</BuildDir>
  6         <!--NOTE: CpuOnlyBuild and UseCuDNN flags can't be set at the same time.-->
  7         <CpuOnlyBuild>false</CpuOnlyBuild>(用Cpu设为true,用Gpu设为false)
  8         <UseCuDNN>true</UseCuDNN>(用Gpu设为true)
  9         <CudaVersion>7.5</CudaVersion>
 10         <!-- NOTE: If Python support is enabled, PythonDir (below) needs to be
 11          set to the root of your Python installation. If your Python installation
 12          does not contain debug libraries, debug build will not work. -->
 13         <PythonSupport>true</PythonSupport>(装Python设为true,否则,false)
 14         <!-- NOTE: If Matlab support is enabled, MatlabDir (below) needs to be
 15          set to the root of your Matlab installation. -->
 16         <MatlabSupport>true</MatlabSupport>(装matlab设为true,否则,false)
 17         <CudaDependencies></CudaDependencies>
 18 
 19         <!-- Set CUDA architecture suitable for your GPU.
 20          Setting proper architecture is important to mimize your run and compile time. -->
 21         <CudaArchitecture>compute_30,sm_30;compute_35,sm_35;compute_52,sm_52</CudaArchitecture>(不改也行)
 22 
 23         <!-- CuDNN 4 and 5 are supported -->
 24         <CuDnnPath>C:\cuDNN</CuDnnPath>(添加你解压的cudnn的路径,路径下的文件夹应该是cuda,貌似不改也行,可以试试)
 25         <ScriptsDir>$(SolutionDir)\scripts</ScriptsDir>
 26     </PropertyGroup>
 27     <PropertyGroup Condition="'$(CpuOnlyBuild)'=='false'">
 28         <CudaDependencies>cublas.lib;cuda.lib;curand.lib;cudart.lib</CudaDependencies>
 29     </PropertyGroup>
 30 
 31     <PropertyGroup Condition="'$(UseCuDNN)'=='true'">
 32         <CudaDependencies>cudnn.lib;$(CudaDependencies)</CudaDependencies>
 33     </PropertyGroup>
 34     <PropertyGroup Condition="'$(UseCuDNN)'=='true' And $(CuDnnPath)!=''">
 35         <LibraryPath>$(CuDnnPath)\cuda\lib\x64;$(LibraryPath)</LibraryPath>
 36         <IncludePath>$(CuDnnPath)\cuda\include;$(IncludePath)</IncludePath>
 37     </PropertyGroup>
 38 
 39     <PropertyGroup>
 40         <OutDir>$(BuildDir)\$(Platform)\$(Configuration)\</OutDir>
 41         <IntDir>$(BuildDir)\Int\$(ProjectName)\$(Platform)\$(Configuration)\</IntDir>
 42     </PropertyGroup>
 43     <PropertyGroup>
 44         <LibraryPath>$(OutDir);$(CUDA_PATH)\lib\$(Platform);$(LibraryPath)</LibraryPath>
 45         <IncludePath>$(SolutionDir)..\include;$(SolutionDir)..\include\caffe\proto;$(CUDA_PATH)\include;$(IncludePath)</IncludePath>
 46     </PropertyGroup>
 47     <PropertyGroup Condition="'$(PythonSupport)'=='true'">
 48         <PythonDir>C:\Miniconda2\</PythonDir>改为 withpython的路径(注意是你安装winPython的路径),如果是安装的是anaconda,可以改为C:\Anaconda,确保下一级中有python.exe即可
 49         <LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>
 50         <IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>
 51     </PropertyGroup>
 52     <PropertyGroup Condition="'$(MatlabSupport)'=='true'">
 53         <MatlabDir>C:\Program Files\MATLAB\R2014a</MatlabDir>(添加matlab的安装路径,装哪个盘都可以)
 54         <LibraryPath>$(MatlabDir)\extern\lib\win64\microsoft;$(LibraryPath)</LibraryPath>
 55         <IncludePath>$(MatlabDir)\extern\include;$(MatlabDir)\toolbox\distcomp\gpu\extern\include;$(IncludePath)</IncludePath>
 56     </PropertyGroup>
 57     <ItemDefinitionGroup Condition="'$(CpuOnlyBuild)'=='true'">
 58         <ClCompile>
 59             <PreprocessorDefinitions>CPU_ONLY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 60         </ClCompile>
 61     </ItemDefinitionGroup>
 62     <ItemDefinitionGroup Condition="'$(UseCuDNN)'=='true'">

2、如果你用的是Microsoft的caffe,在用vs2013生成matcaffe的解决方案时,最后出现了错误:
“无法打开包括文件: “gpu/mxGPUArray.h”: No such file or directory”
那么请在第55行,添加路径:

$(MatlabDir)\toolbox\distcomp\gpu\extern\include;

当然你的matlab版本不要低于2012b,否则这个目录下可能什么都没有;

3、在系统变量和matlab中分别添加了路径。但在用matlab测试caffe的样例bvlc_reference_caffenet.caffemodel时出现了错误:
未定义函数或变量 ‘caffe_’。
出错 caffe.set_mode_cpu (line 5)
caffe_(‘set_mode_cpu’);
出错 classification_demo (line 71)
caffe.set_mode_cpu();

4、打开caffe-master\windows\Caffe.sln 对libcaffe和caffe项目做如下设置:项目→属性→C/C++→常规→将警告视为错误 设置为否 如果不设置的话在编译boost库的时候会由于文字编码的警告而报错, (把“警告等级”调整为等级3),这一步很重要。 选择编译环境为Release,x64(其他环境同理)。 首先编译libcaffe,在libcaffe上右键生成就可以了。(第一次编译会自动下载NugetPackages包,里面有16个文件,这个过程需要连接VPN,且以后每次生成解决方案都要连接VPN,否则报错)libcaffe编译成功后再编译caffe,所有编译成功和运行需要的dll文件都会存储在caffe_master\Build\x64\Release下 至此,Windows版的Caffe编译就成功了。建议最好是把所有的都编译一遍,一共好像是16个,因为后续的caffe学习中会用到。
在用vs2013生成解决方案时,连接VPN会自动下载第三方包源 NugetPackages,如果你的网络环境不够畅通,请在这里下载链接:http://wangpan.baidu.com/s/1dFl1cp7 密码:d6e3,然后将其解压在与caffe-master同一个父文件夹下。
5、编译出错:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\CUDA 7.5.targets(160,9): error MSB4062: 未能从程序集 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\BuildCustomizations\Nvda.Build.CudaTasks.v7.5.dll 加载任务“Nvda.Build.CudaTasks.SanitizePaths”。未能加载文件或程序集“Microsoft.Build.Utilities.v3.5, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。 请确认 声明正确,该程序集及其所有依赖项都可用,并且该任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
解决方法:下载安装.NET Framework 3.5即可解决
思路:win10系统缺少Microsoft.NET Framework 3.5,百度下载安装即可,win7系统自带Microsoft.NET Framework 3.5。具体可参考博客:http://blog.csdn.net/amusi1994/article/details/53368876

error : 无法打开包括文件: “numpy/arrayobject.h”: No such file.
解决方法:下载匹配python的numpy,比如小C的numpy-1.14.0-cp27-none-win_amd64.whl放在D:\WinPython\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Scripts目录下,然后在命令行模式下输入命令
pip3.4 install D:\WinPython\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Scripts\numpy-1.14.0-cp27-none-win_amd64.whl会提示安装成功,然后在python下import numpy不报错表示安装成功。

6、但是caffe-master\examples下的sample现在还都用不了。因为所有的脚本都是Linux下的sh文件。因为caffe的指令都是.sh文件,在windows下是无法直接运行.sh文件的,需要通过cygwin(UNIX模拟环境)来运行。打开http://www.cygwin.com/,下载cygwin对应于自己windows操作系统的版本:32位或64位(cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件, 它对于学习UNIX/Linux操作环境,或者从UNIX到Windows的应用程序移植,或者进行某些特殊的开发工作,尤其是使用GNU工具集在Windows上进行嵌入式系统开发,非常有用。随着嵌入式系统开发在国内日渐流行,越来越多的开发者对Cygwin产生了兴趣。),按照提示安装软件。
Cygwin下载:
2
点击install Cygwin进入:
3
点击set-x86_64.exe开始下载:
4

5

6

7

8

9

10

此处需要选择一个服务器,之后就是从该服务器下载对应的安装所需的模块文件了。
因此,此处如果选择的服务器不合适的话,尽管你的网络本身速度很快,但是此处下载速度很慢。
所以,此处需要选择一个速度比较快的服务器。
对于国内来说,连接很多国外的服务器,速度一般都很慢。
不过,目前已经的,口碑较好的,速度较快的服务器,是近几年刚出现的163的服务器。
所以,此处对于多数人,最好的选择就是选择163的服务器。
如果你的选择其他的服务器,而且服务器列表中也找不到163的话,那么可以自己手动添加:
在Use URL处,输入:http://mirrors.163.com/cygwin/

11
注意:这里选的python跟上面安装的withpython不一样,这里的python只是为了服务Cygwin,编译caffe用到的是上面安装的withpython安装包。

Cygwin中模块的各种分类
先来说说,那一堆的列表。
可以看到,其有Accesibility,Base,Devel,Editors,Math等很多的部分。
此处,对于安装Cygwin来说,就是安装各种各样的模块而已。
具体安装什么模块,则是根据你自己的需要,去选择不同的模块。
而对于大多数人,尤其是不熟悉的人,其实,最核心的,要记住的一点,那就是,记住一定要安装Devel这个部分的模块,其中包含了各种开发所用到的工具或模块。
一般必须安装的有3个模块:
binutils
gcc-core
gcc-g++
gcc-mingw-core
gcc-mingw-g++
gdb
但对于选择出这些很麻烦,一旦选错即安装失败,建议把binutils、gcc、gdb模块全选,即点击相应模块的Devel-Default中的Default。

而对于其他部分的设置,如果不熟悉,那么可以直接使用默认配置即可
可以看到,有很多n/a的标示,其表示Not Avalibale不可用,此处即为不安装的意思,对应的模块的前面也写的是Skip,同样是跳过安装此模块的意思。
而对应方括号中间打叉,表示的是选择安装该模块
而想要安装某单个模块,比如gdb模块的话,那么就是对着那个skip前面的图标,点击一下,然后就可以看到gdb模块被选中了,表示安装此模块
很明显,如果想要对几十个,几百个模块都想要安装的话,如果都要一个个点击,那岂不是累死了。
对此,cygwin早就想好了,给我们提供了更方便的设置,那就是,对于此Devel分类下面的所有的模块,如果你想要都安装,那么可以点击Devel后面的那个Default:
那么Default就会变成Install,同时,其下所有的模块,也都变成选择安装了:

12

13

7、 安装wget( wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是”World Wide Web”与”get”的结合。)。这个软件用于从互联网获取资源。下载后解压到任意目录即可,然后将wget的目录加入到系统环境变量Path内,确保可以被shell脚本找到。我这里是安装在E:\Program Files (x86)\GnuWin32。
7.1、 安装wget www.2cto.com
网址:http://gnuwin32.sourceforge.net/packages/wget.htm
下载http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe
双击安装

7.2、系统环境变量,新建
GNU_HOME=C:\Program Files\GnuWin32

7.3、path添加
==========分割线==============
;%GNU_HOME%\bin
==========分割线==============

7.4、下载整站:
用wget下载东西,的确很方便,它会自动重连并断点续传。让人很放心。
经常要下载一个网站或网站的某个目录。
www.2cto.com
下载一个目录,例如下载网站www.example.com/目录mydir下的所有内容
命令如下:
wget -r -p -k -np -nc -e robots=off http://www.example.com/mydir/
如果要想下载整个网站,最好去除-np参数。
wget -r -p -k -nc -e robots=off http://www.example.com/mydir/

-r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递 归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
-c 指定断点续传功能。实际上,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才 需要指定此参数。

-nc 不下载已经存在的文件
-np 表示不追溯至父目录,不跟随链接,只下载指定目录及子目录里的东西;
-p 下载页面显示所需的所有文件。比如页面中包含了图片,但是图片并不在/yourdir目录中,而在/images目录下,有此参数,图片依然会被正常下 载。

-k 修复下载文件中的绝对连接为相对连接,这样方便本地阅读。
-o down.log 记录日记到down.log
-e robots=off 忽略robots.txt

8、最后还需要将python的路径添加到系统的环境变量中,即D:\WinPython-64bit-2.7.10.3\python-2.7.10.amd64。然后重启计算机使得环境变量生效。

其实后续还有许多软件和需要依赖的第三方库要安装,这里就不一一说了。

猜你喜欢

转载自blog.csdn.net/carina_cao/article/details/78895384
今日推荐