初始配置环境:
? ? ? ? 电脑:联想R9000K Win11
? ? ? ? 显卡:3080
? ? ? ? Matlab 2021b
? ? ? ? Visual Studio 2017 Professional
? ? ? ? VS安装位置:D:\VisualStudio2017
? ? ? ? CUDA:cuda_11.3.1_465.89_win10
? ? ? ? CUDA安装位置:D:\CUDA\NVIDIA GPU Computing ToolKit\v11.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:\CUDA\NVIDIA GPU Computing ToolKit\v11.3\bin\nvcc'
> 位置: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:\VisualStudio2017\IDE\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64) successfully added to your PATH.
错误使用 vl_compilenn>nvcc_compile (第 620 行)
Command "D:\CUDA\NVIDIA GPU Computing ToolKit\v11.3\bin\nvcc" -c -o
"E:\Matlab Projects\00 MatConvNet\matconvnet-1.0-beta25\matlab\mex\.build\bits\data.obj"
"E:\Matlab Projects\00 MatConvNet\matconvnet-1.0-beta25\matlab\src\bits\data.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -I".local\cudnn\include" -g
-DDEBUG -D_FORCE_INLINES --std=c++11
-I"D:\Matlab 2021b\extern\include"
-I"D:\Matlab 2021b\toolbox\parallel\gpu\extern\include"
-gencode=arch=compute_86,code=\"sm_86,compute_86\"
--compiler-options=/MD
--compiler-bindir="D:\VisualStudio2017\IDE\VC\Tools\MSVC\14.16.27023\bin\Hostx64"
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:\CUDA\v10.1\NVIDIA GPU Computing Toolkit
? ? ? ? Cudnn:cudnn-10.1-windows10-x64-v8.0.5.39
? ? ? ? Matconvnet:matconvnet-1.0-beta25
随后编译过程中出现如下问题:
错误使用 mex
'E:\Matlab Projects\00_MatConvNet\matconvnet-1.0-beta25\matlab\mex\vl_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:\CUDA\v10.1\NVIDIA GPU Computing Toolkit' ;
opts.cudaArch = [] ;
opts.defCudaArch = [...
'-gencode=arch=compute_86,code=\"sm_86,compute_86\" '];
opts.mexConfig = '' ;
opts.mexCudaConfig = '' ;
opts.cudnnRoot = 'D:\CUDA\v10.1\NVIDIA GPU Computing Toolkit' ;
opts.preCompileFn = [] ;
opts = vl_argparse(opts, varargin);
报错:
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(89): error: identifier "cudnnConvolutionFwdPreference_t" is undefined
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(94): error: identifier "cudnnConvolutionBwdFilterPreference_t" is undefined
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(99): error: identifier "cudnnConvolutionBwdDataPreference_t" is undefined
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(141): error: identifier "cudnnConvolutionFwdPreference_t" is undefined
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(147): error: identifier "cudnnConvolutionBwdFilterPreference_t" is undefined
e:\matlab projects\00_matconvnet\matconvnet-1.0-beta25\matlab\src\bits\datacu.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:\CUDA\v10.1\NVIDIA GPU Computing Toolkit\bin\nvcc" -c -o "E:\Matlab
Projects\00_MatConvNet\matconvnet-1.0-beta25\matlab\mex\.build\bits\data.obj" "E:\Matlab
Projects\00_MatConvNet\matconvnet-1.0-beta25\matlab\src\bits\data.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -O3 -DNDEBUG
-D_FORCE_INLINES --std=c++11 -I"D:\Matlab2021b\extern\include" -I"D:\Matlab2021b\toolbox\parallel\gpu\extern\include"
-gencode=arch=compute_75,code=\"sm_75,compute_75\" --compiler-options=/MD
--compiler-bindir="D:\VisualStudio2017\IDE\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64" 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版本,随后问题解决,编译顺利通过。
|