【前言】从开始配置到最后成功,前前后后经过了3天,中间有很多坑,不过都顺利解决了,一些经验分享给大家
【前期配置】
计算机:win10 64位系统,配了一台Acer P238-M高端商务本,16GB内存,SSD硬盘,不知道会不会加速运算
VS2013:网上下载一个2.8G左右的安装包,安装基础功能即可
caffe安装包:本例使用的是微软的配置的文件caffe-master,下载地址https://github.com/Microsoft/caffe
cuda7.5(GPU方案用到):从cuda官网下载,https://developer.nvidia.com/cuda-downloads,安装时要完整安装,否则容易报错,cuda的安装完成后还是要设置一下环境变量的:
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
CUDA_PATH_V7_5 = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
最后在path末尾中添加 %CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_LIB_PATH%;
cudnn安装(GPU方案用到):我使用的是cudnn-7.5-windows7-x64-v5.0,网上很容易可以下到。解压文件后,有一个文件夹cuda,内包含bin、include、lib三个文件夹,将这三个文件夹内的文件分别拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5下的三个文件夹下
【CPU only caffe配置方案】
1. 复制D:\caffe-master\caffe-master\windows下的CommonSettings.props.example文件,并重命名为CommonSettings.props,在当前目录下打开,并修改CpuBuildOnly为true,UseCuDNN为false
2. 双击打开caffe.sln工程,首先对libcaffe工程进行生成,右键生成即可,运行成功后,caffe-master文件夹下会出现NugetPackages文件夹,内有16个项目,生成成功后的界面如下图所示:注意,此处提示为 “BinplaceCudaDependencies : CPU only build, don't copy cuda dependencies.”
3.最后双击打开caffe.cpp文件,ctrl+F5进行编译,最终编译成功后会在D:\caffe-master\caffe-master\Build\x64\Release下生成caffe.exe文件,也会输出一些warnings,不过不用担心,接着会出现caffe的命令提示符界面,标志的cpu only 的caffe设置成功
按这个步骤下来应该很少会出现问题,cpuonly的情况还是比较简单的。
【GPU配置方案】
1. 虽然我的计算机并没有配置GPU,但依然可以编译成功,首先要修改的,就是将CommonSettings.props文件中的CpuBuildOnly改为false,UseCuDNN为true
2.重新生成libcaffe,生成成功后的界面如下图所示,注意,此处提示为 “ BinplaceCudaDependencies : Copy cudart*.dll, cublas*dll, curand*.dll to output.”这一步的时间会比较长,大约十几分钟,要耐心等待
3.重复上述第3步,最后双击打开caffe.cpp文件,ctrl+F5进行编译,最终编译成功后会在D:\caffe-master\caffe-master\Build\x64\Release下生成caffe.exe文件,接着会出现caffe的命令提示符界面,该界面与cpuonly 的界面貌似没有什么区别。
【小结】按照这个步骤配置下来,应该不会报什么错。我在配置过程中也出现过无法打开输入文件、无法解析的外部符号 cudaGetErrorStrings等问题,多半是前期配置出现错误,或者由于自己不小心造成的,其余代码本身都不需要修改。