安装GPU版本,首先确定自己matlab对应的CUDA版本,可利用 gpuDevice查看显卡相关信息。部分官网给出的对应关系见下图。
此处我电脑的配置是matlab R2019b + matconvnet-1.0-beta25 + CUDA/Cudnn 10.1
CPU版本安装:
> mex -setup
// Compile the library for CPU
>cd <MatConvNet>Path
> addpath matlab
> vl_compilenn
GPU版本安装:
> mex -setup
// Compile the library for GPU
>cd <MatConvNet>Path
> addpath matlab
> vl_compilenn('enableGpu',true,
'Debug', 'true',
'cudaRoot','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1',
'cudaMethod' ,'nvcc',
'enableCudnn','true',
'cudnnRoot','.\local\cudnn-rc4')
问题解决:
Error 1
Error using vl_compilenn>nvcc_compile (line 615)
Command "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc" -c -o
"D:\Matlab\matconvnet-1.0-beta25\matconvnet-1.0-beta25\matlab\mex\.build\bits\data.obj"
"D:\Matlab\matconvnet-1.0-beta25\matconvnet-1.0-beta25\matlab\src\bits\data.cu" -DENABLE_GPU -DENABLE_DOUBLE
-DENABLE_CUDNN -I".local\cudnn\include" -O -DNDEBUG -D_FORCE_INLINES --std=c++11
-I"D:\Matlab\extern\include" -I"D:\Matlab\toolbox\distcomp\gpu\extern\include"
-gencode=arch=compute_52,code=\"sm_52,compute_52\" --compiler-options=/MD --compiler-bindir="C:\Program
Files (x86)\Microsoft Visual Studio\2017\Community\VC\bin" failed.
Error in vl_compilenn (line 487)
nvcc_compile(opts, srcs{i}, objfile, flags) ;
解决:
在 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC 下创建bin文件夹
Error2
nvcc fatal '-DNEDBUG': expected a number
解决:
设置参数’Debug’为true
vl_compilenn('enableGpu',true,
’Debug’, 'true',
'cudaRoot','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1',
'cudaMethod' ,'nvcc',
'enableCudnn','true',
'cudnnRoot','.\local\cudnn-rc4')
参考:https://blog.csdn.net/CsdnWujinming/article/details/89221565
Error3
Matlab 使用了 '-R2018a' 进行编译并与 '-R2017b' 链接在一起
解决:
将文件中line 359的{}内容改为'-lmwblas'(去掉'-largeArrayDims')
flags.mexlink = {'-largeArrayDims','-lmwblas'} ;
Error4
错误使用 copyfile 未找到匹配的文件。
出错 vl_compilenn (line 508)
copyfile(fullfile(opts.cudnnRoot, 'bin', '*.dll'), flags.mex_dir);
解决:
vl_compilenn('enableGpu', true, ...
'cudaRoot', ' D:\Program Files\MATLAB\CUDA\9.1(你的CUDA路径)', ...
'cudaMethod', 'nvcc',...
'enableCudnn', true, ...
'cudnnRoot', ' D:\Program Files\MATLAB\matconvnet\local\cudnn-9.1(你的CUDNN全路径)');
参考链接:https://blog.csdn.net/youshaoduo/java/article/details/80791110
Error5
|| 和 && 运算符的操作数必须能够转换为逻辑标量值
出错 vl_compilenn (line 506)
if strcmp(arch, 'win64') && opts.enableCudnn
解决:
将“&&”改成“&”
参考:
https://blog.csdn.net/edward_zcl/article/details/88920170
https://www.jianshu.com/p/13e27a5bf4b2