我是靠谱客的博主 踏实睫毛膏,最近开发中收集的这篇文章主要介绍MATLAB配置matconvnet下载Matconvnet安装和编译Matconvnet下载CUDA和cudnn的安装包安装CUDA和cudnn编译vl_compilenn,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 一文解决matlab配置和matconvnet可能遇到的所有问题

目录

下载Matconvnet

安装和编译Matconvnet

下载CUDA和cudnn的安装包

安装CUDA和cudnn

编译vl_compilenn


  1. 下载Matconvnet

    https://www.vlfeat.org/matconvnet/download/

    在上述网址选择Matconvnet进行安装

  2. 安装和编译Matconvnet

    https://www.vlfeat.org/matconvnet/install/

    参照官网的步骤进行

    首先解压安装到自定义的目录下;接着调用到matconvnet的目录下

            在Matlab命令行依次输入指令:

    run <Matconvnet>/matlab/vl_setupnn

    mex -setup

    选择mex -setup C++

    配置完语言后,添加路径 

    编译时需要注意将cl.exe的路径是在VSVCToolsMSVC14.16.27023binHostx64x64 

    所以第一种方法是将 vl_compilenn.m文件的647行修改成图上的路径;

    第二种是将cl.exe复制到647行的文件夹下即可

    (最终的原因是因为VS2017与VS2015的路径设置不同,matlab认准的是VCbinamd64)

     

     

  3. 下载CUDA和cudnn的安装包

    接下来是对CUDA和cudnn进行下载

    这里需要注意MATLAB与CUDA对应的版本

    我使用的是R2019b所以安装CUDA10.1

    再查询显卡支持的版本

    得知显卡最高支持11.0,所以完全可以安装CUDA10.1版本

    安装路径不建议去官网下载,在这里下载的网上寻找的资源

    链接:https://pan.baidu.com/s/1hREGDO9oA7A65s3iu6uXGg

    提取码:ntbn

    来自 <https://blog.csdn.net/zhangxiao123qqq/article/details/108273006?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control>

     

     

  4. 安装CUDA和cudnn

    CUDA下载完成后,直接双击exe安装,然后一步步操作即可,选择精简安装,安装完成后,打开cmd输入:nvcc -v 查看CUDA是否安装成功,如果成功的话会返回CUDA的版本号

    接下来安装cudnn

    将cudnn的三个文件夹直接复制到如图所示的CUDA文件夹下即可

    检查是否安装成功:

    桌面处按住Shift键,鼠标右键,选择“在此处打开Powershell窗口”。然后输入:“nvidia-smi”

    恭喜已经成功安装! 

     

  5. 编译vl_compilenn

     1.接下来编译matconvnet,但是会出错,报错信息提示如下

       >> vl_compilenn('enableGpu', true)

       使用 'nvcc' 编译。

    错误使用 mex

    nvcc fatal   : '-DNDEBUG': expected a number

    出错 mexcuda (line 157)

        [varargout{1:nargout}] = mex(mexArguments{:});

    出错 vl_compilenn>mexcuda_compile (line 603)

    mexcuda(args{:}) ;

    出错 vl_compilenn (line 489)

          mexcuda_compile(opts, srcs{i}, objfile, flags) ;

 出现该问题使用DEBUG模式解决,牺牲部分性能

第179行:opts.debug            = true;

使用debug模式解决

2.接下来还会遇到如下问题:

d:matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatamex.hpp(19): fatal error C1083: 无法打开包括文件: “gpu/mxGPUArray.h”: No such file or directory

nvcc warning : The -std=c++11 flag is not supported with the configured host compiler. Flag will be ignored.

datamex.cu

错误使用 vl_compilenn>nvcc_compile (line 615)

Command "C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1binnvcc" -c -o "D:Matconvnetmatconvnet-1.0-beta25matlabmex.buildbitsdatamex.obj"

"D:Matconvnetmatconvnet-1.0-beta25matlabsrcbitsdatamex.cu" -DENABLE_GPU -DENABLE_DOUBLE -DENABLE_CUDNN -I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAinclude" -g -DDEBUG -D_FORCE_INLINES

--std=c++11 -I"D:Matlabexterninclude" -I"D:Matlabtoolboxdistcompgpuexterninclude" -gencode=arch=compute_75,code="sm_75,compute_75"  --compiler-options=/MD

--compiler-bindir="D:VisualStudioVCToolsMSVC14.16.27023binHostx64"  failed.

出错 vl_compilenn (line 487)

      nvcc_compile(opts, srcs{i}, objfile, flags) ;

 

问题原因:matlab版本太高的缘故,(MatlabDir)externinclude,此路径下不存在“gpu/mxGPUArray.h”,这个文件被移动到了 (MatlabDir)toolboxdistcompgpuexterninclude 路径下

解决方法:在 (MatlabDir)externinclude 路径下建一个“gpu”文件夹然后把(MatlabDir)toolboxdistcompgpuexternincludegpu下的mxGPUArray.h文件拷到所建gpu里即可

3.错误使用 mex

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

出错 vl_compilenn>mex_link (line 627)

mex(args{:}) ;

出错 vl_compilenn (line 500)

  mex_link(opts, objs, flags.mex_dir, flags) ;

解决方法

解决方案:修改vl_compilenn.m中第359行

原代码:

flags.mexlink = {'-largeArrayDims','-lmwblas'} ;

改成:

flags.mexlink = {'-lmwblas'} ;

即可。

4.|| 和 && 运算符的操作数必须能够转换为逻辑标量值。

出错 vl_compilenn (line 507)

if strcmp(arch, 'win64') && opts.enableCudnn

解决方法

直接将上述代码行的“&&”修改成“&”

5.错误使用 copyfile

未找到匹配的文件。

出错 vl_compilenn (line 509)

  copyfile(fullfile(opts.cudnnRoot, 'bin', '*.dll'), flags.mex_dir);

解决方法:

 vl_compilenn('enableGpu',true,'cudaRoot','C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1','cudaMethod' ,'nvcc','enableCudnn','true','cudnnRoot','C:Program FilesNVIDIA GPU Computing ToolkitCUDAv10.1')

全部使用绝对路径,写到文件夹下

vl_compilenn('enableGpu', true, ...

      'cudaRoot', ' D:Program FilesMATLABCUDA9.1(你的CUDA路径)', ...

      'cudaMethod', 'nvcc',...

      'enableCudnn', true, ...

      'cudnnRoot', ' D:Program FilesMATLABmatconvnetlocalcudnn-9.1(你的CUDNN全路径)');

接下来就运行成功了!

最后

以上就是踏实睫毛膏为你收集整理的MATLAB配置matconvnet下载Matconvnet安装和编译Matconvnet下载CUDA和cudnn的安装包安装CUDA和cudnn编译vl_compilenn的全部内容,希望文章能够帮你解决MATLAB配置matconvnet下载Matconvnet安装和编译Matconvnet下载CUDA和cudnn的安装包安装CUDA和cudnn编译vl_compilenn所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部