参考的官方配置文档:GitHub - BVLC/caffe-windows
1、环境准备
环境清单:
- 操作系统:Windows10
- Windows版Caffe源码
- Visual Studio 2015
- CMake
- Python3.5
- 依赖包
- 显卡:NVIDIA GeForce GTX 1650
- CUDA & cuDNN
详细操作:
①Windows版Caffe源码:官网下载,下载解压后,文件名是caffe-windows,如果解压完名字是caffe则说明下载错了。
②Visual Studio 2015:可以在 下载之家 或者 软件学堂 进行下载,下载community版即可,下载ultimate版还需要破解。安装时组件里面一定要选上Visual C++,因为后面编译时,会用到里面的C/C++编译器,不选的话编译时会报错:
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
③CMake:下载2016年以后的任意版本都行,我是在网上下载解压后直接用的,需要将bin目录放到系统环境变量下。CMake是编译时,会用到的一个工具,如果没安装好的话,编译时会报错:
'cmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。
④Python3.5:如果版本不对的话,编译时会报错:
Could not find url for MSVC version = 1900 and Python version = 3.8
安装一个Anaconda可以方便地切换环境,在Anaconda里新建一个Python3.5的环境,然后将对应的路径放到环境变量path的最上面(Python的路径有多个时,系统默认用最上面的那个),实在不行的话就下载Python3.5版本的Anaconda。
⑤依赖包:编译时要下载很多的依赖包,下载速度慢而且容易报错,所以我们提前下载好,下载地址。
使用:先进行编译,软件会自动创建对应的文件夹并进行下载,我们Ctrl+C取消编译,然后将下载的依赖包放到这个文件夹中。我的默认地址是:
C:\Users\hp\.caffe\dependencies\download
⑥CUDA & cuDNN:CUDA官方下载 cuDNN官方下载 ,其中下载CUDA8.0以及对应的cuDNN即可,因为我的显卡是20系的GTX1650(Turing架构),所以只能安装CUDA10.0及以上。
2、编译
①caffe-windows代码解压后,找到cmake文件夹,修改caffe-windows\cmake下的Cuda.cmake
//cuda.cmke改动
set(Caffe_known_gpu_archs "35 50 60 61 75")
...
set(__archs_names "Fermi" "Kepler" "Maxwell" "Pascal" "All" "Manual" "Turing")
...
elseif(${CUDA_ARCH_NAME} STREQUAL "Turing")
set(__cuda_arch_bin "75")
②修改C:\Users\xpf.caffe\dependencies\libraries_v140_x64_py27_1.1.0\libraries\include\boost-1_61\boost\config\compiler下的nvcc.hpp
注释掉最后三行:
没有修改的话会报如下错误:
nvcc fatal : Unsupported gpu architecture 'compute_481'
③修改build_win.cmd,主要是69行-100行之间。
else (
:: Change the settings here to match your setup
:: Change MSVC_VERSION to 12 to use VS 2013
:: 根据自己vs版本设置,2013就是12,2015就是14,我的是14
if NOT DEFINED MSVC_VERSION set MSVC_VERSION=14
:: Change to 1 to use Ninja generator (builds much faster)
:: 这里由于我使用的cmake编译,未使用ninja,所有设置为了0
if NOT DEFINED WITH_NINJA set WITH_NINJA=0
:: Change to 1 to build caffe without CUDA support
:: 这里我们安装的是GPU版本所以设置为0;
if NOT DEFINED CPU_ONLY set CPU_ONLY=0
:: Change to generate CUDA code for one of the following GPU architectures
:: [Fermi Kepler Maxwell Pascal Votal Turing Ampere All]
:: 上面那些都是显卡的架构(按时间排序)我的1650显卡是Turng架构
if NOT DEFINED CUDA_ARCH_NAME set CUDA_ARCH_NAME=Turing
:: Change to Debug to build Debug. This is only relevant for the Ninja generator the Visual Studio generator will generate both Debug and Release configs
:: 此处就是编译vs的版本,是Release还是Debug版本,我的是Release,Release优化了代码,训练速度更快。
if NOT DEFINED CMAKE_CONFIG set CMAKE_CONFIG=Release
:: Set to 1 to use NCCL
:: 是否使用多卡训练
if NOT DEFINED USE_NCCL set USE_NCCL=0
:: Change to 1 to build a caffe.dll
if NOT DEFINED CMAKE_BUILD_SHARED_LIBS set CMAKE_BUILD_SHARED_LIBS=0
:: Change to 3 if using python 3.5 (only 2.7 and 3.5 are supported)
:: 选择python版本,我使用是python 3.5,所以修改为3
if NOT DEFINED PYTHON_VERSION set PYTHON_VERSION=3
:: Change these options for your needs.
:: 这里选择需要的选项,我需要python,所以将python选项设置为了1,如果需要MATLAB,则将其也设置为1
if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1
if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1
if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0
:: If python is on your path leave this alone
if NOT DEFINED PYTHON_EXE set PYTHON_EXE=python
:: Run the tests
if NOT DEFINED RUN_TESTS set RUN_TESTS=0
:: Run lint
if NOT DEFINED RUN_LINT set RUN_LINT=0
:: Build the install target
:: 生成安装文件,所以需要设置为1
if NOT DEFINED RUN_INSTALL set RUN_INSTALL=1
)
④修改好build_win.cmd文件后保存退出,然后在caffe-windows文件下打开命令行工具,输入:
.\script\build_win.cmd
之所以在cmd里面运行是因为出错了会显示提示信息,直接运行build_win.cmd出错了就直接退出了,cmd的一些基本操作:
打开窗口:WIN+R后输入cmd
切换到G盘:G:
切换到指定目录:cd G:\caffe-windows\scripts
执行文件:build_win.cmd
注意:改变环境变量后cmd窗口要关了重开
⑤等待编译结束:编译时我乱码了,不影响正常使用。
③生成解决方案(对整个项目进行编译):
G:\caffe-windows\scripts\build
这个路径下有个Caffe.sln文件,用Visual Studio打开并且生成解决方案
最后全部成功,没有失败即可
3、验证
①scripts文件下会多出一个build文件
②G:\caffe\caffe-windows\scripts\build\tools\Release里面有很多编译生成的可执行文件
③可以做一个Mnist的实验,来验证一下。
训练时提示使用了GPU: