也可以参考这个
https://blog.csdn.net/qq_38522168/article/details/111461856
1.安装CUDA
首先安装visual studio(看CUDA版本选)。本篇文章使用的环境是CUDA11.3、Matlab2021b、VS2019.
安装显卡驱动更新:可以进入NVIDIA官网,输入显卡型号选择最新驱动下载安装,爱好游戏的同学建议直接GeForce Experience更新。
安装CUDA toolkit,各种型号版本都可从NVIDIA官网上查找到。此处需要注意:到底该下载哪一种版本。主要考虑两个因素。第一:你的GPU算力(compute capability)支持哪一种版本,如下图1。第二:你现在的Matlab版本,如图二。ps:30系卡是安培(ampere)架构,20b可能会有问题。
图一
图二
比如3070显卡,使用的matlab版本号是2021b,安装CUDA时版本选择10.2(你猜我为什么知道)
根据第三步骤可进一步明确你应该安装哪一版本的matlab了,直接下载安装就行了。matlab安装后,它应该自动就可以与cuda搭建起交流渠道,命令窗口输入“gpuDevice”检测是否调用GPU成功。成功标志如下图:
至此Matlab与CUDA就握上手了,接下来配置cuDNN
2.安装cnDNN
!!!注意:cuDNN与CUDA版本严格匹配,不要装错版本
来到cuDNN下载界面,如图下载:
点击下载cuDNN Library for Windows (x86),注意不要下成Linux(要是用Linux当我没说)
将以下几个文件夹复制到CUDA安装目录中
验证cuDNN安装成功:
打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\版本号\include
文件夹,找到
cudnn_version.h
用记事本打开,如下所示,成功安装cuDNN,版本号为824
3.安装MatConvNet
3.1 介绍
MatConvNet是一个实现卷积神经网络(CNN)的MATLAB工具箱,用于计算机视觉应用。 用这个工具箱,能很方便地在MATLAB中用GPU来进行训练
安装matconvnet
下载地址:https://www.vlfeat.org/matconvnet/
3.2 安装
1.(本人)安装matlab2021b、Visual Studio 2019
2.官网Home - MatConvNet下载matconvnet工具包,我的名字是matconvnet-1.0-beta25,然后解压文件到 matconvnet-1.0-beta25中
3.CUDA + cudnn(这两个也可以没有,CPU only)
4.编译安装
编译前,Matlab应该已经绑定C++编译器了。否则,会出错。Windows下安装Visual Studio即可,Linux下有自带的GCC
先进行CPU版本的编译。在Matlab中打开Matconvnet工具包,使得当前目录窗口显示Matconvnet文件夹里面的子目录。
在Matlab中用mex -setup
指令绑定C++编译器
输入mex -setup C++
会得到下面的命令:
打开Matlab,将工作路径切换到…/matconvnet-1.0-beta25
在Matlab中执行命令: addpath matlab
。添加搜索路径。
在Matlab中执行命令:vl_compilenn
。编译工具箱。
在Matlab中执行命令:vl_setupnn
。设置工具箱。
至此,工具箱已经安装完毕。
5.测试
在matlab中执行命令:vl_testnn
。
由此完成CPU 下matconvnet的编译。
编译完之后会多了一个mex文件夹,在matlab文件夹下面。
编译完之后应该有除了cudnn64_4.dll
`外的mexw64文件,这些文件主要是
vl_conv,
vl_imreadjpeg等。这些文件是由
cuda C写的,并不是由MATLAB语言写的,格式是
xx.cu`。
3.3 在matconvnet中配置GPU
第一步:我们在上文中安装cuda、VS2019,cuda默认路径,注意cuda版本和GPU要匹配
第二步:下载cudnn,在matconvnet文件夹下建一个local
文件夹,然后把cudnn
放进去
第三步: 建一个local文件夹,然后把cudnn放进去,再复制到matconvnet目录下。
第四步:把bin下的cudnn64_4.dll
再复制到mex的文件夹下。这一点很重要,否则vl_compilenn
即使编译成功,运行时却会出现Invalid 的vl_nnconv.mexw64
,可是你一看明明有这个文件啊,并且cpu编译时这个文件也是可以用的,为啥现在就不能了,就是你没有做第二步。
第五步:先看看vl_compilenn
写了啥,打开vl_compilenn.m
,运行,等待编译结束
如上图所示在vl_compilenn
中已经对opts
的enableGpu
等属性进行了初始化。
这是稍微修改后的,与我不一样也没关系,因为下面有vl_argparse(opts,varargin)
,这个就是把外面的传入的参数再对opts进行赋值。
第六步:复制以下code到matlab命令窗,更改相应路径和文件夹名称,运行,等待编译结束。
vl_compilenn('enableGpu',true,'cudaRoot','C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/(你的cuda版本)','cudaMethod' ,'nvcc','enableCudnn','true','cudnnRoot','local/cudnn')
第七步:找到cnn_cifar
后,然后修改opts.gpus
。更改选项,opts.train.gpus= [1]
; 表示用GPU,[ ] 表示用CPU,记得填上1.
最后的最后,报错信息等建议自行Google(一般是GPU报错,CPU一遍过)
原文作者:Hernandez
原文地址:https://hernandez-hkp.github.io/2022/10/01/matlab-matconvnet/