MATLAB工具MatConvNet的安装(超详细的踩坑经历)

1. 环境:

Visual Studio 2017
MATLAB2019a
cuda 10.0
cudnn-10.0-windows10-x64-v7.6.5.32
matconvnet-1.0-beta20
NVIDIA GeForce RTX 2080 Ti


2. 准备工作

2.1 Cuda版本:

 

 这里查询到我们驱动的版本CUDA 12.1,下载CUDA时版本不能高于你的显卡驱动的版本号,比如我的就不能高于12.1,所以这里我选择了10.0版本。

2.2 CUDA与Matlab版本对应

 通过此表与2.1内容最终确认matlab与cuda版本,在此我选用matlab2019a与cuda10.0。

2.3 matlab与VS版本对应

       先安装matlab后安装Visual Studio,或者VS版本比matlab高等原因,很可能mex -setup命令无法找到安装好的Visual Studio编译器,强烈建议先安装VS再安装matlab,并且VS版本比matlab略低!!!会省掉超多麻烦(具体版本对应我也不太确定)

以下可以检测matlab支持的VS版本序列,输入路径D:\Matlab2019a\bin\win64\mexopts

文件夹内容如下:

文件夹里的vsxxx.xml文件表明支持相应版本的VS。如果下载后,版本不匹配出现问题,将在下边细说。

2.4 cuda与cudnn版本对应

cudnn下载地址:cuDNN Archive | NVIDIA Developer    点击进去即可看见与cuda的版本对应关系

3.matlab与vs混合编程

3.1 安装示例(公众号:软件管家):先VS,再matlab!可以省很多麻烦。

Visual Studio2017安装教程

MATLAB R2019a​安装教程

VS与matlab安装成功后,打开matlab,在命令行窗口中输入:

mex -setup -V

成功页面:

3.2 出现以下问题

错误使用 mex

可以看博客:(18条消息) 低版本Matlab(2020b)与高版本Visual Studio(VS2022)实现M、C/C++混合编程(调试)_读书人不偷东西的噢!的博客-CSDN博客 但是当时的我懒得动脑子,但也试了很多方法也没成功,最后重新安装不同版本的VS和matlab就好了

 这个我用了很多方法都不行,最后把D:\Microsoft Visual Studio\Visual Studio2017\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64文件下的cl.exe复制粘贴在D:\Matlab2019a\toolbox\matconvnet\matlab,其他办法:快速解决MatConvNet中‘cl.exe‘ 不是内部或外部命令_matlab cl.exe_angleboy8的博客-CSDN博客

(18条消息) 解决VS2022版出现“‘cl‘ 不是内部或外部命令”的问题_vs不是内部或外部命令也不是可运行_王铁柱子哟-的博客-CSDN博客

4.cuda与cudnn安装教程

安装示例:(18条消息) Cuda和cuDNN安装教程(超级详细)_cuda安装_jhsignal的博客-CSDN博客免注册cudnn下载:(18条消息) Cuda和cuDNN安装教程(超级详细)_cuda安装_jhsignal的博客-CSDN博客

5.matconvnet安装

其实现在才是真正的开始。。。

5.1下载工具箱

 首先官网Home - MatConvNet下载工具包,然后解压放在D:\Matlab2019a\toolbox(这是我放的路径,我把文件夹的名字直接改为matconvnet了)

 

5.2 CPU编译

复制粘贴以下代码到命令行窗口即可(这是看了好多教程后总结的比较简单的方法):

mex -setup C++    %MEX 配置为使用VS以进行 C++ 语言编译
cd D:\Matlab2019a\toolbox\matconvnet   %打开matconvnet文件夹
addpath matlab        %添加路径
vl_compilenn          %编译工具箱
vl_setupnn            %设置工具箱

出现一下页面即成功: 

 在MATLAB命令行输入如下命令可以测试:

vl_testnn

5.3 GPU编译

在matconvnet文件夹下建立一个新的文件夹local,并将cudnn文件整体放入。复制粘贴以下代码到命令行窗口即可:

vl_compilenn('enableGpu', true,'cudaRoot', 'C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0', 'cudaMethod', 'nvcc','enableCudnn', true,'cudnnRoot', ' D:\R2019a\toolbox\matconvnet\local\cudnn');

第一位置为cuda的安装位置,第二个为cudnn的位置,就是刚才local的那个位置。

出现问题:

错误使用 vl_compilenn>nvcc_compile (line 521)
Command "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin\nvcc" -c "D:\R2019a\toolbox\matconvnet\matlab\src\bits\impl\pooling_gpu.cu" -DNDEBUG -DENABLE_GPU -DENABLE_CUDNN
-ID:\R2019a\toolbox\matconvnet\local\cudnn\include -DENABLE_DOUBLE -D__SSSE3__ -gencode=arch=compute_75,code=\"sm_75,compute_75\"  -I"D:\R2019a\extern\include"
-I"D:\R2019a\toolbox\distcomp\gpu\extern\include"  -gencode=arch=compute_75,code=\"sm_75,compute_75\"  -Xcompiler /MD -o
"D:\R2019a\toolbox\matconvnet\matlab\mex\.build\bits\impl\pooling_gpu.obj" failed.

出错 vl_compilenn (line 466)
      nvcc_compile(opts, srcs{i}, objfile, flags.nvcc) ;
1 error detected in the compilation of "C:/Users/Justin/AppData/Local/Temp/tmpxft_00001afc_00000000-8_pooling_gpu.cpp1.ii".
pooling_gpu.cu
Error using vl_compilenn>nvcc_compile (line 521)
Command "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc" -c
"C:\Users\Justin\Documents\MATLAB\matconvnet-1.0-beta20\matlab\src\bits\impl\pooling_gpu.cu" -DNDEBUG -DENABLE_GPU -DENABLE_DOUBLE -D__SSSE3__
-gencode=arch=compute_61,code="sm_61,compute_61" -I"C:\Program Files\MATLAB\R2016a\extern\include" -I"C:\Program
Files\MATLAB\R2016a\toolbox\distcomp\gpu\extern\include" -gencode=arch=compute_61,code="sm_61,compute_61" -Xcompiler /MD -o
"C:\Users\Justin\Documents\MATLAB\matconvnet-1.0-beta20\matlab\mex.build\bits\impl\pooling_gpu.obj" failed.

Error in vl_compilenn (line 466)
nvcc_compile(opts, srcs{i}, objfile, flags.nvcc) ;

其实出现的很多问题都看不懂了,按照别人的教程给了很多次都没用,最后发现换了cudnn版本才解决。

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值