一、Caffe版本升级之路
用高版本VS编译caffe(目前尝试vs2017、vs2019);有两种方法:
一是通过cmake生成caffe项目,再去vs上编译,这个方法在vs2019上编译caffe.lib成功了,但是没有生成模型测试必需的libcaffe.lib依赖项。(第二章)
二是直接采用vs2017编译包含有libcaffe工程的caffe项目,经过多次编译尝试,入坑、填坑,编译成功了GPU版本的libcaffe.lib。(第三章)
二、Caffe-VS2019安装记录
1.下载安装包
保存在网盘里:我的网盘/软件下载/caffe-windows-vs2019/…
下载:caffe-windows.zip和caffe-build-auto-V1.rar。
2.编译依赖包
2.1 caffe-build-auto-v1.rar,解压到盘根目录caffe-build-auto。
2.2 打开x64 Native Tools Command Prompt for VS 2019控制台
2.3 cd 到build-VS2019.bat所在的目录,运行build-VS2019.bat。
运行成功后,在build路径下生成caffe-builder.sln
2.4 VS2019打开caffe-builder.sln项目,生成解决方案。
3.编译caffe
3.1 caffe-windows.zip,解压到根目录,命名为caffe-windows,做以下修改:
1)…\caffe-windows\cmake\WindowsDownloadPrebuiltDependencies.cmake
将脚本用#[[ ]]全部注释掉,在最后加一行:
include(…/caffe-build/caffe-builder/build/libraries/caffe-builder-config.cmake)
其中,caffe-builder-config.cmake为第一节编译时产生。
2)…\caffe-build\caffe-builder\build\libraries\ OpenCVConfig.cmake,修改:
4.报错与修改项
4.1编译build内caffe.sln时,错误 C1083 无法打开包括文件: “caffe/include_symbols.hpp”: No such file or directory device_query …\build\caffe\export.hpp 7
打开export.hpp,注释4-8行代码。见网址:https://blog.csdn.net/xiakejiang/article/details/104409087
4.2错误too few arguments in function call D:\lmy\caffe-windows\include\caffe\util\cudnn.hpp 114
参考:https://blog.csdn.net/mao_hui_fei/article/details/80326464
5.编译生成caffe
caffe.bin.vcxproj -> …\build\tools\Release\caffe.exe
但是没有生成libcaffe.lib
三、Caffe-VS2017安装记录
1.安装包与平台
192的win10服务器,卸载掉vs2013/2015/2019,仅保留vs2017。
caffe安装包:.\caffe-windows\ caffe-master.zip
2.lib.caffe编译过程
2.1 cpu版本的libcaffe.lib编译成功。
2.2 gpu版本的libcaffe.lib各种报错(不同cuda,cudnn版本的尝试):
1)CUDA9.0 + cudnn 7.3.1
报错:严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe” -gencode=arch=compute_35,code=“sm_35,compute_35” -gencode=arch=compute_52,code=“sm_52,compute_52” -gencode=arch=compute_61,code=“sm_61,compute_61” --use-local-env --cl-version 2017 -ccbin “C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64” -x cu -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\lmdb-v120-clean.0.9.14.0\build\native…\lib\native\include" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\LevelDB-vc120.1.2.0.0\build\native…/…//build/native/include/" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\protobuf-v120.2.6.1\build\native…/…//build/native/include/" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\glog.0.3.3.0\build\native…/…//build/native/include/" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\gflags.2.1.2.1\build\native…/…///build/native/include/" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\boost.1.59.0.0\build\native…\lib\native\include\" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\hdf5-v120-complete.1.8.15.2\build\native…\lib\native\include" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\OpenBLAS.0.2.14.1\build\native…\lib\native\include" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\NugetPackages\OpenCV.2.4.10\build\native…/…/build/native/include/" -I"D:\LMY\caffe-windows\vs2017-caffe-windows\caffe\windows\libcaffe\…\src\" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include" --keep-dir D:\LMY\caffe-windows\vs2017-caffe-windows\caffe\windows…\Build\Int\libcaffe\x64\Release -maxrregcount=0 --machine 64 --compile -cudart static -Xcudafe “–diag_suppress=exception_spec_override_incompat --diag_suppress=useless_using_declaration --diag_suppress=field_without_dll_interface” -D_SCL_SECURE_NO_WARNINGS -DGFLAGS_DLL_DECL= -DHAS_LMDB -DHAS_HDF5 -DHAS_OPENBLAS -DHAS_OPENCV -DNDEBUG -D_SCL_SECURE_NO_WARNINGS -DUSE_OPENCV -DUSE_LEVELDB -DUSE_LMDB -DUSE_CUDNN -D_UNICODE -DUNICODE -Xcompiler "/EHsc /W1 /nologo /Ox /FS /Zi /MD " -o D:\LMY\caffe-windows\vs2017-caffe-windows\caffe\windows…\Build\Int\libcaffe\x64\Release\absval_layer.cu.obj “D:\LMY\caffe-windows\vs2017-caffe-windows\caffe\src\caffe\layers\absval_layer.cu””已退出,返回代码为 2。 libcaffe C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 9.0.targets 707
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1189 #error: – unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! libcaffe c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\host_config.h 133
2)CUDA10.2 + cudnn 8.0.3
报错:C2065 “CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT”: 未声明的标识符 libcaffe d:\lmy\caffe-windows\vs2017-caffe-master\src\caffe\layers\cudnn_conv_layer.cpp 131
3)CUDA10.2 + cudnn 7.3.1
libcaffe编译成功! (…\caffe-windows\vs2017-caffe-master\Build\x64\libcaffe-Release)
3.编译caffe.lib
报错1:LNK1104 无法打开文件“libboost_date_time-vc140-mt-1_59.lib”
解决:
1)nugets下载的是libboost_date_time-vc120-mt-1_59.lib文件,而caffe文件编译所需的文件却是vc140版本的,不对应,于是出现该错误,我从网上重新下载了对应版本的boost,
https://dl.bintray.com/boostorg/release/1.75.0/source/下载boost_1_75_0.zip
安装boost库,参考:https://blog.csdn.net/lingcai7071/article/details/115857667
2)将其lib文件夹加入项目属性-》VC++目录-》库目录中。该错误消失。
Windows下编译Caffe依赖的第三方库:
https://blog.csdn.net/joshua_1988/article/details/45036993义目录标题)