caffe单独移植出来需要的工程配置和注意点,CPU版本和GPU版本!
2017-06-07 15:30
489 查看
这个需要一定caffe基础的人才可以配置,入门者请先看如何把caffe-master给编译成功。
参考博客: Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境 其主要时GPU版的配置
Cuda学习笔记(四)——在vs2010中配置.cpp和.cu文件 其时关于GPU版本时添加cu文件需要修改项类型的原因。
windows下的caffe配置过程 GPU版本的配置,注意:其后面的3.4 修改部分在现在的新版本是不用修改了,这些bug已经被微软修复了。
A、caffe配置CPU版本。简单出错低!
其大概就是:
我在自己的笔记本配置的caffe,配置的环境为:Windows7 64位+
cuda8.0+ Opencv2413 + boost1.59+VS2013。
下载CUDA8.0: https://developer.nvidia.com/cuda-downloads,安装完成后会自动创建环境变量CUDA_PATH_V8_0
,把bin路径添加到环境变量里。
下载boost1.56:http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/,选择boost_1_56_0-msvc-12.0-64.exe,安装完成后手动创建环境变量BOOST_1_59_0。(创建变量只是为了后期包含库更方便)。把bin路径加到环境变量里,个人的百度盘为:http://pan.baidu.com/s/1kVwqMbX
密码:fep3
下载OpenCV2413:http://opencv.org/downloads.html,安装完成后把bin路径加到环境变量里。
这一部分主要包括Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas,不容易下载。使用的是Neil
Z. SHAO‘s Blog提供的编译好的。
下载地址:http://pan.baidu.com/s/1ge9FN71 密码是:434e
下载完,解压得到3rdparty文件夹。其主要是x64平台的debug、release模式下的库跟dll,把bin路径添加到环境变量里。
其实其就是:
是为了方便我们后期的环境配置而已。
1.5下载caffe源码:我使用的地址是:微软提供Windows工具包(caffe-master):https://github.com/Microsoft/caffe 百度云下载地址:链接:http://pan.baidu.com/s/1hs8ngpA
密码:ith0
特点是:比caffe官网的好,修复了很多bug。
2、就可以自己创建一个工程,工程文件如下:
其中src、include是caffe里的,3rdparty是1.4步安装的第三方库。这些都是自己加的。
(1)、然后把与\src\caffe对应的所有文件及文件夹添加进工程源文件中,其大概如下:
任何版本的boost得头文件都相同,所以不用加F:\installed soft\boost_1_59_0\lib64-msvc-12.0里的头文件,因为已经有./3rdparty。接着就是配置工程环境(debug x64)其中的cuda也要加,否则会报错:
VC++目录->包含目录:
(2)接着只要编译工程就可,即可成功,很少出错:
原因:应为当预定义里定义了CPU_ONLY时,则这个那些cu文件就不会参与项目编译,我们只编译了一些cpp,hpp文件,故出错概率很低。成功如下:
B、GPU的版本的配置:
注意:这一步出现的错误会挺多的做好心理准备。
(2)、然后把与\src\caffe对应的所有文件及文件夹添加进工程源文件中(test文件夹可以不加)
2)、VC++目录->包含目录:
如图:
3)、VC++目录->库目录:
.\3rdparty\lib
如图:
4)、链接器->输入->附加依赖项:
cuda.lib
cudnn.lib
cudart.lib
curand.lib
gflags.lib
cublas.lib
libglog.lib
libprotoc.lib
libprotobuf.lib
libopenblas.dll.a
libgflags.lib
lmdb.lib
leveldb.lib
libhdf5.lib
libhdf5_hl.lib
如图:
5)、C/C++->预处理器->预处理器定义:
USE_LMDB
USE_OPENCV
USE_LEVELDB
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
(注意:caffe代码默认是不使用LEVELDB的,如果加了USE_LEVELDB的话3rdparty里的leveldbd.lib与LevelDb.lib需要进行更换,因为他们是依赖boost.1.56的,需要把其更换为NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120里的库文件,它们是静态库)错误如下:
如图:
6)、CUDAC/C++ -> Common -> Target Machine Platform:64-bit
如图:
7)、CUDAC/C++ ->Device -> Code Generation:
compute_20,sm_20
这个一般默认产生的。
8)、把F:\VSWorkSpace\caffe\3rdparty\bin加入到系统环境变量path中!!!
9)、接下来把源文件中所有的.cu文件,右键点击属性,在常规中的项类型中把“不参与生成”改成“CUDA
C/C++”,在对每一个.cu文件进行单独编译。
这里我没有找到简便方法,(工作量比较大)就是说直接配置.cu文件的属性-常规-项类型,则所有的.cu文件都可以变成“CUDA C/C++”
如图:
如果上面这个步骤没有做,会出现下面图中的问题,因为默认的是.cu文件是“不参与生成”:如下:
然后就可以编译成功。太perfect了。
加入cu文件的改进方法:
对应文件右键,然后按J键进行添加到项目中,则工程会自动识别并编译。可以快好多。
参考博客: Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境 其主要时GPU版的配置
Cuda学习笔记(四)——在vs2010中配置.cpp和.cu文件 其时关于GPU版本时添加cu文件需要修改项类型的原因。
windows下的caffe配置过程 GPU版本的配置,注意:其后面的3.4 修改部分在现在的新版本是不用修改了,这些bug已经被微软修复了。
A、caffe配置CPU版本。简单出错低!
其大概就是:
1.准备工作
我在自己的笔记本配置的caffe,配置的环境为:Windows7 64位+cuda8.0+ Opencv2413 + boost1.59+VS2013。
1.1安装CUDA8.0
下载CUDA8.0: https://developer.nvidia.com/cuda-downloads,安装完成后会自动创建环境变量CUDA_PATH_V8_0,把bin路径添加到环境变量里。
1.2安装boost1.59
下载boost1.56:http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/,选择boost_1_56_0-msvc-12.0-64.exe,安装完成后手动创建环境变量BOOST_1_59_0。(创建变量只是为了后期包含库更方便)。把bin路径加到环境变量里,个人的百度盘为:http://pan.baidu.com/s/1kVwqMbX密码:fep3
1.3安装opencv2413
下载OpenCV2413:http://opencv.org/downloads.html,安装完成后把bin路径加到环境变量里。
1.4第三方库
这一部分主要包括Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas,不容易下载。使用的是NeilZ. SHAO‘s Blog提供的编译好的。
下载地址:http://pan.baidu.com/s/1ge9FN71 密码是:434e
下载完,解压得到3rdparty文件夹。其主要是x64平台的debug、release模式下的库跟dll,把bin路径添加到环境变量里。
其实其就是:
是为了方便我们后期的环境配置而已。
1.5下载caffe源码:我使用的地址是:微软提供Windows工具包(caffe-master):https://github.com/Microsoft/caffe 百度云下载地址:链接:http://pan.baidu.com/s/1hs8ngpA
密码:ith0
特点是:比caffe官网的好,修复了很多bug。
2、就可以自己创建一个工程,工程文件如下:
其中src、include是caffe里的,3rdparty是1.4步安装的第三方库。这些都是自己加的。
(1)、然后把与\src\caffe对应的所有文件及文件夹添加进工程源文件中,其大概如下:
任何版本的boost得头文件都相同,所以不用加F:\installed soft\boost_1_59_0\lib64-msvc-12.0里的头文件,因为已经有./3rdparty。接着就是配置工程环境(debug x64)其中的cuda也要加,否则会报错:
VC++目录->包含目录:
./include ./3rdparty $(CUDA_PATH_V8_0)\include ./3rdparty/include ./3rdparty/include/openblas ./3rdparty/include/hdf5 ./3rdparty/include/lmdb ./3rdparty/include/leveldb ./3rdparty/include/gflag ./3rdparty/include/glog ./3rdparty/include/google/protobuf ./src库目录:
.\3rdparty\lib $(CUDA_PATH_V8_0)\lib\$(PlatformName) .\src\caffe\proto F:\installed soft\boost_1_59_0\lib64-msvc-12.0其附加依赖项是:
gflagsd.lib libglog.lib libopenblas.dll.a libprotobufd.lib libprotoc.lib libgflags.lib leveldbd.lib lmdbd.lib libhdf5.lib libhdf5_hl.lib预处理定义为:
WIN32 _DEBUG _CONSOLE _LIB USE_OPENCV CPU_ONLY其opencv需要自己另外配置上去就可,我使用的是脚本,所以可以很快。
(2)接着只要编译工程就可,即可成功,很少出错:
原因:应为当预定义里定义了CPU_ONLY时,则这个那些cu文件就不会参与项目编译,我们只编译了一些cpp,hpp文件,故出错概率很低。成功如下:
B、GPU的版本的配置:
注意:这一步出现的错误会挺多的做好心理准备。
3.3 编译源码
3.3.1 建立项目
(1)、打开Visual Studio在caffe根目录下新建一个项目名为caffe的空项目。并设置为x64 Release平台,(2)、然后把与\src\caffe对应的所有文件及文件夹添加进工程源文件中(test文件夹可以不加)
3.3.2 配置属性
(1)、右键项目名>生成依赖项->生成自定义:勾选CUDA 8.02)、VC++目录->包含目录:
./include ./3rdparty $(CUDA_PATH_V8_0)\include ./3rdparty/include ./3rdparty/include/openblas ./3rdparty/include/hdf5 ./3rdparty/include/lmdb ./3rdparty/include/leveldb ./3rdparty/include/gflag ./3rdparty/include/glog ./3rdparty/include/google/protobuf ./src
如图:
3)、VC++目录->库目录:
.\3rdparty\lib
$(CUDA_PATH_V8_0)\lib\$(PlatformName) .\src\caffe\proto F:\installed soft\boost_1_59_0\lib64-msvc-12.0
如图:
4)、链接器->输入->附加依赖项:
cuda.lib
cudnn.lib
cudart.lib
curand.lib
gflags.lib
cublas.lib
libglog.lib
libprotoc.lib
libprotobuf.lib
libopenblas.dll.a
libgflags.lib
lmdb.lib
leveldb.lib
libhdf5.lib
libhdf5_hl.lib
如图:
5)、C/C++->预处理器->预处理器定义:
USE_LMDB
USE_OPENCV
USE_LEVELDB
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
(注意:caffe代码默认是不使用LEVELDB的,如果加了USE_LEVELDB的话3rdparty里的leveldbd.lib与LevelDb.lib需要进行更换,因为他们是依赖boost.1.56的,需要把其更换为NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120里的库文件,它们是静态库)错误如下:
如图:
6)、CUDAC/C++ -> Common -> Target Machine Platform:64-bit
如图:
7)、CUDAC/C++ ->Device -> Code Generation:
compute_20,sm_20
这个一般默认产生的。
8)、把F:\VSWorkSpace\caffe\3rdparty\bin加入到系统环境变量path中!!!
9)、接下来把源文件中所有的.cu文件,右键点击属性,在常规中的项类型中把“不参与生成”改成“CUDA
C/C++”,在对每一个.cu文件进行单独编译。
这里我没有找到简便方法,(工作量比较大)就是说直接配置.cu文件的属性-常规-项类型,则所有的.cu文件都可以变成“CUDA C/C++”
如图:
如果上面这个步骤没有做,会出现下面图中的问题,因为默认的是.cu文件是“不参与生成”:如下:
error LNK2019: 无法解析的外部符号 "void __cdecl caffe::caffe_gpu_axpy<double>(int,double,double const *,double *)" (??$caffe_gpu_axpy@N@caffe@@YAXHNPEBNPEAN@Z),该符号在函数 "public: void __cdecl caffe::Blob<double>::Update(void)" (?Update@?$Blob@N@caffe@@QEAAXXZ) 中被引用 H:\VCproject\caffe_classification\classification\classification\blob.obj classification error LNK2001: 无法解析的外部符号 "void __cdecl caffe::caffe_gpu_axpy<double>(int,double,double const *,double *)" (??$caffe_gpu_axpy@N@caffe@@YAXHNPEBNPEAN@Z) H:\VCproject\caffe_classification\classification\classification\sgd_solver.obj classification error LNK2019: 无法解析的外部符号 "void __cdecl caffe::caffe_gpu_asum<double>(int,double const *,double *)" (??$caffe_gpu_asum@N@caffe@@YAXHPEBNPEAN@Z),该符号在函数 "public: double __cdecl caffe::Blob<double>::asum_data(void)const " (?asum_data@?$Blob@N@caffe@@QEBANXZ) 中被引用 H:\VCproject\caffe_classification\classification\classification\blob.obj classification如图:
然后就可以编译成功。太perfect了。
加入cu文件的改进方法:
对应文件右键,然后按J键进行添加到项目中,则工程会自动识别并编译。可以快好多。
相关文章推荐
- caffe单独移植出来需要的工程配置和注意点,CPU版本和GPU版本!
- Windows下配置Caffe(CPU+GPU版本)
- caffe搭建--caffe- win10 vs2015 编译(支持GPU)--注意在cmake的时候需要根据情况仔细修改配置
- 【深度学习】笔记1_Ubuntu14.04下caffe环境的搭建,无GPU版本以及python可视化环境的配置
- caffe windows10 vs2013 安装配置 GPU版本CPU也可参考
- VM虚拟机 ubuntu16.04配置CPU版本的caffe
- 微信跳一跳外挂【程序员版,附两个版本的源代码以及为防止跳几下就挂的注意事项,需要自己配置编译器】
- Wndows安装配置CPU版本的Caffe-SSD
- Ubuntu下配置caffe(CPU版本,无CUDA)
- LUbuntu安装配置CPU版本的Caffe
- windows下caffe GPU版本配置
- windows下编译Matconvnet的环境配置(CPU和GPU版本)
- 配置完Caffe后配置CPU版本的faster-rcnn环境
- LUbuntu安装配置CPU版本的Caffe-SSD
- linux 下配置python 以及 python脚本的移植需要注意的问题
- Ubuntu16.04 安装配置GPU版本Caffe
- windows配置caffe及matlab/python接口编译和调用(cpu/gpu)
- 整合一下深度学习caffe环境配置和基本使用例程(CPU+GPU)
- windows下配置caffe的python接口(CPU and GPU)
- Windows安装配置CPU版本的Caffe