我是靠谱客的博主 称心外套,最近开发中收集的这篇文章主要介绍Win11配置Matconvnet错误使用 vl_compilenn>nvcc_compile和datacu.hpp undefined的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

初始配置环境:

        电脑:联想R9000K Win11

        显卡:3080

        Matlab 2021b

        Visual Studio 2017 Professional

        VS安装位置:D:VisualStudio2017

        CUDA:cuda_11.3.1_465.89_win10

        CUDA安装位置:D:CUDANVIDIA GPU Computing ToolKitv11.3

        Cudnn:cudnn-11.3-windows-x64-v8.2.1.32

        Matconvnet:matconvnet-1.0-beta25

配置过程中,关于mex设置问题均按照网上的方法解决了,但始终报如下错误:

警告: Setting the 'MW_NVCC_PATH' environment variable to 'D:CUDANVIDIA GPU Computing ToolKitv11.3binnvcc' 
> 位置:vl_compilenn>activate_nvcc (第 758 行)
位置: vl_compilenn (第 299 行) 
警告: CL.EXE not found in PATH. Trying to guess out of mex setup. 
> 位置:vl_compilenn>check_clpath (第 656 行)
位置: vl_compilenn (第 429 行) 
用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.16.27045 版 
版权所有(C) Microsoft Corporation。保留所有权利。 
 
用法: cl [ 选项... ] 文件名... [ /link 链接选项... ] 
Location of cl.exe (D:VisualStudio2017IDEVCToolsMSVC14.16.27023binHostx64x64) successfully added to your PATH.
错误使用 vl_compilenn>nvcc_compile (第 620 行)
Command "D:CUDANVIDIA GPU Computing ToolKitv11.3binnvcc" -c -o 
"E:Matlab Projects0 MatConvNetmatconvnet-1.0-beta25matlabmex.buildbitsdata.obj"
"E:Matlab Projects0 MatConvNetmatconvnet-1.0-beta25matlabsrcbitsdata.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -I".localcudnninclude" -g
-DDEBUG -D_FORCE_INLINES --std=c++11 
-I"D:Matlab 2021bexterninclude" 
-I"D:Matlab 2021btoolboxparallelgpuexterninclude"
-gencode=arch=compute_86,code="sm_86,compute_86"  
--compiler-options=/MD 
--compiler-bindir="D:VisualStudio2017IDEVCToolsMSVC14.16.27023binHostx64"
failed.

出错 vl_compilenn (第 490 行)
      nvcc_compile(opts, srcs{i}, objfile, flags) ;

网上找了很多参考资料均无法解决,后参考如下两篇文章,发现问题:

MatConvNet安装问题_White Jiang的博客-CSDN博客

另一篇由于从窗口太多关闭了,没找到,主要的参考价值为一条评论:Matconvnet最高支持的CUDA版本为10.2但这个信息我未能求证(有兴趣的可以求证后将信息分享一下),随后,我将CUDA和Cudnn的版本进行了更换,更新后的环境配置如下:

        电脑:联想R9000K Win11

        显卡:3080

        Matlab 2021b

        Visual Studio 2017 Professional

        VS安装位置:D:VisualStudio2017

        CUDA:cuda_10.1.243_426.00_win10

        CUDA安装位置:D:CUDAv10.1NVIDIA GPU Computing Toolkit

        Cudnn:cudnn-10.1-windows10-x64-v8.0.5.39

        Matconvnet:matconvnet-1.0-beta25

随后编译过程中出现如下问题:

错误使用 mex
'E:Matlab Projects0_MatConvNetmatconvnet-1.0-beta25matlabmexvl_nnconv.mexw64' 使用了
'-R2018a' 进行编译并与 '-R2017b' 链接在一起。 有关详细信息,请参阅 MEX 文件使用了一个 API 进行编译并与另一个
API 链接在一起。

出错 vl_compilenn>mex_link (第 632 行)
mex(args{:}) ;

出错 vl_compilenn (第 503 行)
  mex_link(opts, objs, flags.mex_dir, flags) ;

参考如下文章:MatConvNet compiled with '-R2018a' and linked with '-R2017b'_u014292102的博客-CSDN博客

随后编译:

编译指令: vl_compilenn('enableGpu',true);

成功编译通过。

接下来使用Cudnn编译,即设置opts.enableCudnn = true,完整设置如下:

opts.continue         = false; % false
opts.enableGpu        = true; % false
opts.enableImreadJpeg = true;
opts.enableCudnn      = true; % false
opts.enableDouble     = true;
opts.imageLibrary = [] ;
opts.imageLibraryCompileFlags = {} ;
opts.imageLibraryLinkFlags = [] ;
opts.verbose          = 0;
opts.debug            = false;
opts.cudaMethod       = []; % []
opts.cudaRoot         = 'D:CUDAv10.1NVIDIA GPU Computing Toolkit' ;
opts.cudaArch         = [] ;
opts.defCudaArch      = [...
  '-gencode=arch=compute_86,code="sm_86,compute_86" '];
opts.mexConfig        = '' ;
opts.mexCudaConfig    = '' ;
opts.cudnnRoot        = 'D:CUDAv10.1NVIDIA GPU Computing Toolkit' ;
opts.preCompileFn       = [] ;
opts = vl_argparse(opts, varargin);

报错:

e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(89): error: identifier "cudnnConvolutionFwdPreference_t" is undefined 
 
e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(94): error: identifier "cudnnConvolutionBwdFilterPreference_t" is undefined 
 
e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(99): error: identifier "cudnnConvolutionBwdDataPreference_t" is undefined 
 
e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(141): error: identifier "cudnnConvolutionFwdPreference_t" is undefined 
 
e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(147): error: identifier "cudnnConvolutionBwdFilterPreference_t" is undefined 
 
e:matlab projects0_matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatacu.hpp(153): error: identifier "cudnnConvolutionBwdDataPreference_t" is undefined 
 
6 errors detected in the compilation of "C:/Users/张小祥/AppData/Local/Temp/tmpxft_00004a84_00000000-10_data.cpp1.ii". 
nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored. 
data.cu 
错误使用 vl_compilenn>nvcc_compile (第 620 行)
Command "D:CUDAv10.1NVIDIA GPU Computing Toolkitbinnvcc" -c -o "E:Matlab
Projects0_MatConvNetmatconvnet-1.0-beta25matlabmex.buildbitsdata.obj" "E:Matlab
Projects0_MatConvNetmatconvnet-1.0-beta25matlabsrcbitsdata.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -O3 -DNDEBUG
-D_FORCE_INLINES --std=c++11 -I"D:Matlab2021bexterninclude" -I"D:Matlab2021btoolboxparallelgpuexterninclude"
-gencode=arch=compute_75,code="sm_75,compute_75"  --compiler-options=/MD
--compiler-bindir="D:VisualStudio2017IDEVCToolsMSVC14.16.27023binHostx64x64"  failed.

出错 vl_compilenn (第 490 行)
      nvcc_compile(opts, srcs{i}, objfile, flags) ;

参考如下链接:https://ww2.mathworks.cn/matlabcentral/answers/602116-matconvnet-error-on-vl_compilenn-on-gpu

主要问题是cudnn版本的问题:

 随后参考链接:Windows 10系统下MATLAB2018b调用CUDA 10.1和NVCC_博博有个大大大的Dream-CSDN博客将cudnn的版本更换为7版本,随后问题解决,编译顺利通过。

最后

以上就是称心外套为你收集整理的Win11配置Matconvnet错误使用 vl_compilenn>nvcc_compile和datacu.hpp undefined的问题的全部内容,希望文章能够帮你解决Win11配置Matconvnet错误使用 vl_compilenn>nvcc_compile和datacu.hpp undefined的问题所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部