配置环境:
win10+matlab r2018b+visual studio 2015+CUDA 9.2+cuDNN 7.6.5+matconvnet-1.0-beta25
安装前提:
配置matconvnet之前需要先安装支持C++11的编译器,安装顺序:vs2015->CUDA->cuDNN->matconvnet
安装:
1.下载matconvnet:
去matconvnet官网下载matconvnet的压缩包。解压到你指定的文件夹中。
链接:http://www.vlfeat.org/matconvnet/download/matconvnet-1.0-beta25.tar.gz
2.编译:
打开matlab,命令行输入
mex -setup
mex -setup C++
然后在命令行中cd到解压的matconvnet文件夹
cd 'D:\software\Matlab r2018b\matconvnet-1.0-beta25'
addpath matlab
vl_compilenn
此时编译的是matconvnet的CPU版本,如果电脑没有GPU,现在就已经搞定了,可以输入
vl_testnn
测试是否编译成功,这个时间比较长,不太建议测试,一般编译的时候没什么问题就可以。
然后我们开始编译GPU版本
vl_compilenn('enableGpu', true)
此时我的电脑上面报错
错误使用 vl_compilenn>search_cuda_devkit (line 715)
Could not find a valid NVCC executable\n出错 vl_compilenn (line 279)
if isempty(opts.cudaRoot), opts.cudaRoot = search_cuda_devkit(opts) ; end
没有找到可执行的NVCC,所以我们需要指定我们电脑上安装CUDA的根目录
vl_compilenn('enableGpu', true, 'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2')
如果安装CUDA的时候使用的是默认的安装位置应该跟我这个差不多。这时候会比较慢,等了一会以为大功告成了,结果到最后又报错了
错误使用 mex
'D:\software\Matlab r2018b\matconvnet-1.0-beta25\matlab\mex\vl_nnconv.mexw64' 使用了 '-R2018a' 进行编译并与 '-R2017b' 链接在一起。 有关详细信息,请参阅 MEX 文件使用了一
个 API 进行编译并与另一个 API 链接在一起。出错 vl_compilenn>mex_link (line 627)
mex(args{:}) ;出错 vl_compilenn (line 500)
mex_link(opts, objs, flags.mex_dir, flags) ;
可能是matlab版本的问题,网上已经有解决方案了,https://blog.youkuaiyun.com/u014292102/article/details/80331481,按照这个修改vl_compilenn.m文件之后重新编译,等待一会,最后显示好几个
使用 'Microsoft Visual C++ 2015 (C)' 编译。
MEX 已成功完成。
这时候就代表matconvnet的GPU版本已经编译完成,如果想测试一下的话可以输入
vl_testnn('gpu', true)
这个需要等待很长时间,感觉最少要20分钟吧,所以如果没什么问题的话就没必要测试了。