概述
MatconNet版本:https://github.com/vlfeat/matconvnet
可编译版本vl_compilenn.m链接
总结:
必须修改
170:opts.continue = true;
179:opts.debug = true;
359:flags.mexlink = {'-lmwblas'} ; %这个选项和后续619是等价的,可视情况任选
646:cl_path = fullfile(cc.Location, 'VC', 'Tools', 'MSVC','14.27.29110','bin','Hostx64','x64');
619:flags.mexlink(1)=[];
686:for v = {'5.5', '6.0', '6.5', '7.0', '7.5', '8.0', '8.5', '9.0', '9.5', '10.2'}
可修改可不修改
184:% '-gencode=arch=compute_20,code="sm_20,compute_20" '...
367: sprintf('-I"%s"',fullfile(toolboxdir('parallel'),'gpu','extern','include')), ...
运行:vl_compilenn('enableGpu', true, 'cudaMethod', 'nvcc', 'cudaRoot', 'C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2', 'enableCudnn', true, 'cudnnRoot', 'C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2')
有时候上述一句也不完全可以搞定,vl_compilenn('enableGpu', true) 和vl_compilenn('enableGpu', true, 'enableCudnn', true)这两个可以交替的运行让前面的编译成功,后续再进行链接
运行:vl_setupnn
在第10轮链接时候,620行删除 flags.base如下
flags.mexlink(1)=[]
args = horzcat({'-outdir', mex_dir}, ...
flags.mexlink, ...
{['LDFLAGS=$LDFLAGS ' strjoin(flags.mexlink_ldflags)]}, ...
{['LDOPTIMFLAGS=$LDOPTIMFLAGS ' strjoin(flags.mexlink_ldoptimflags)]}, ...
{['LINKLIBS=' strjoin(flags.mexlink_linklibs) ' $LINKLIBS']}, ...
objs) ;
opts.verbose && fprintf('%s: MEX LINK: %sn', mfilename, strjoin(args)) ;
mex(args{:})
链接成功
或者直接采用以下两句
flags.mexlink(1)=[]
flags.base=[]
1. 运行dr_setup.m
错误使用 vl_compilenn>check_clpath (第 577 行)
Unable to find cl.exe
出错 vl_compilenn (第 400 行)
check_clpath(); % check whether cl.exe in path
出错 dr_setup (第 78 行)
vl_compilenn('EnableGpu',false);
解决办法:
646行替换为
cl_path = fullfile(cc.Location, 'VC', 'Tools', 'MSVC','14.27.29110','bin','Hostx64','x64');
2. 编译cuda不存在
>> vl_compilenn('enableGpu',true)
错误使用 vl_compilenn>search_cuda_devkit (第 636 行)
Could not find a valid NVCC executablen
出错 vl_compilenn (第 256 行)
if isempty(opts.cudaRoot), opts.cudaRoot = search_cuda_devkit(opts) ; end
解决办法:
第608行
for v = {'5.5', '6.0', '6.5', '7.0', '7.5'}
加上自己cuda版本号可后续执行
for v = {'5.5', '6.0', '6.5', '7.0', '7.5', '10.2'}
3. 1.25版本.1,2,错误后紧接着出现5这个错误如下
错误使用 vl_compilenn>nvcc_compile (第 615 行)
Command "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.0binnvcc" -c -o "C:ApplicationsMATLAB
R2020btoolboxmatconvnet-1.0-beta25matlabmex.buildbitsdata.obj" "C:ApplicationsMATLAB R2020btoolboxmatconvnet-1.0-beta25matlabsrcbitsdata.cu"
-DENABLE_GPU -DENABLE_DOUBLE -O -DNDEBUG -D_FORCE_INLINES --std=c++11 -I"C:ApplicationsMATLAB R2020bexterninclude" -I"C:ApplicationsMATLAB
R2020btoolboxdistcompgpuexterninclude" -gencode=arch=compute_50,code="sm_50,compute_50" --compiler-options=/MD --compiler-bindir="C:Program Files
(x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.27.29110binHostx64" failed.
出错 vl_compilenn (第 487 行)
nvcc_compile(opts, srcs{i}, objfile, flags) ;
解决办法:https://blog.csdn.net/CsdnWujinming/article/details/89221565
说修改debug为:true
4. 按照3中描述修改,报错如下
错误使用 mex
'C:ApplicationsMATLAB R2020btoolboxmatconvnet-1.0-beta25matlabmexvl_nnconv.mexw64' 使用了 '-R2018a' 进行编译并与 '-R2017b' 链接在一起。 有关详细信息,请参阅 MEX 文件
使用了一个 API 进行编译并与另一个 API 链接在一起。
出错 vl_compilenn>mex_link (第 627 行)
mex(args{:}) ;
出错 vl_compilenn (第 500 行)
mex_link(opts, objs, flags.mex_dir, flags) ;
解决办法:在619行增添
flags.mexlink(1)=[]; % 源文件没有此行,连接错误通过提示将里面的第一个参数删去,可成功链接
之前成功过一次
使用matconvnet-1.0-beta25编译成功
5. 但是需要允许cuDnn编译,又出错,于是
170行opts.continue = true; 采用下方语句编译执行成功
vl_compilenn('enableGpu', true, 'cudaMethod', 'nvcc', 'cudaRoot', 'C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2', 'enableCudnn', true, 'cudnnRoot', 'C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.2')
乱七八糟的每个固定的解决方案,这次用上面的语句不行
vl_compilenn('enableGpu', true)成功编译
6. 尝试将 SCRIPT vl_nnconv 作为函数执行出错
找找此文提示:https://blog.csdn.net/Dandelion_2/article/details/102893100
重新运行:vl_setupnn
7. 今天运行又出现出错误删掉,重新编译
2020b 取消对 toolboxdir('distcomp') 的支持
sprintf('-I"%s"',fullfile(toolboxdir('distcomp'),'gpu','extern','include')), ...
替换为
sprintf('-I"%s"',fullfile(toolboxdir('parallel'),'gpu','extern','include')), ...
最后
以上就是健康大船为你收集整理的red-lesion-detection编译matconvnet问题记录MatconNet版本:https://github.com/vlfeat/matconvnet可编译版本vl_compilenn.m链接总结:1. 运行dr_setup.m2. 编译cuda不存在3. 1.25版本.1,2,错误后紧接着出现5这个错误如下4. 按照3中描述修改,报错如下5. 但是需要允许cuDnn编译,又出错,于是6. 尝试将 SCRIPT vl_nnconv 作为函数执行出错7. 今天运行又出现出错误删掉的全部内容,希望文章能够帮你解决red-lesion-detection编译matconvnet问题记录MatconNet版本:https://github.com/vlfeat/matconvnet可编译版本vl_compilenn.m链接总结:1. 运行dr_setup.m2. 编译cuda不存在3. 1.25版本.1,2,错误后紧接着出现5这个错误如下4. 按照3中描述修改,报错如下5. 但是需要允许cuDnn编译,又出错,于是6. 尝试将 SCRIPT vl_nnconv 作为函数执行出错7. 今天运行又出现出错误删掉所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复