我是靠谱客的博主 健康大船,最近开发中收集的这篇文章主要介绍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. 今天运行又出现出错误删掉,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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. 今天运行又出现出错误删掉所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部