安装流程
前言
注:这是我按照自己的版本需求进行安装的
不保证其他版本一定可行
本文不再介绍各个软件的功能及用途,可自行查阅
安装的版本(流程)是:
Visual Studio 2017社区版
:提供MatConvNet的C++编译支持CUDA 11.0
:提供GPU加速cudNN 7.6.5.32
:提供GPU计算加速MATLAB2022b
:使用MatConvNet
一、确定CUDA驱动版本
CUDA只能安装在比CUDA驱动版本低的系统上,查看自己电脑CUDA驱动:
通过NVIDIA的控制面板(系统信息),查看到NVCUDA64.DLL的版本为11.7.102,表示只能安装比11.7更低版本的CUDA
,例如CUDA11.2,CUDA11.0等
二、安装VS2017社区版
可以自行搜索资源安装,社区版很好装,只要确认安装的时候选择了使用C++的桌面开发
我的安装路径:D:\Microsoft Visual Studio\2017\Community
三、安装CUDA 11.0
1.CUDA与Matlab版本对应
CUDA版本要和所使用的Matlab的版本一致,CUDA与Matlab的版本对应关系为
- 下表来源于:
https://ww2.mathworks.cn/help/releases/R2021b/parallel-computing/gpu-support-by-release.html
表头的cc表示GPU的算力
- 下图来源于:
https://ww2.mathworks.cn/help/releases/R2022b/parallel-computing/gpu-computing-requirements.html
\quad
可以看出,CUDA版本与MATLAB版本正相关,且R2022b支持算力为3.5到8.x,故使用CUDA 11.0+Matlab 2022b
CUDA的下载地址为:https://developer.nvidia.com/cuda-11-0-2-download-archive.
选择CUDA11.0版本,local 模式,总共约2.xGB下载完成后默认安装路径,默认全选,安装。我的对应版本:cuda_11.0.2_451.48_win10
2. CUDA算力测试
安装完成后,在cmd中,输入如下命令,运行deviceQuery.exe程序,查看电脑算力(这个exe是安装CUDA成功后自身创建的,可以在资源管理器中找到):
cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite\deviceQuery.exe
可以看出我的电脑是7.5的算力,算力要和对应的MATLAB匹配才可以安装MATLAB。
四、安装Matlab 2022b
Matlab有很多种安装方法:
- 如果学校购买了Matlab账号的话,可以直接在Matlab的官网,Mathworks使用学校的邮箱注册账号,然后安装正版Matlab
- 其他的话可以使用微信公众号搜索公众号,进行安装,多余的不说了…
安装时可以选择自己想要的工具包,没必要全部安装
五、安装cudNN
1.cudNN版本问题
在VS 2017,CUDA 11.0,MATLAB 2022b安装好之后,先进行 VS与MATALAB的适配 测试:
在Matlab命令行中输入
mex -setup
出现如下结果即表示VS与Matlab配适成功:
在测试好 VS 2017 与MATLAB 2022b 适配没问题后,着手CUDA与CUDNN模块的安装:CUDNN为CUDA平台下的转为神经网络设计的加速模块,这里要注意,CUDA与CUDNN是存在着版本对应关系的,
关系(CUDNN下载地址)如下:https://developer.nvidia.com/rdp/cudnn-archive
但是我在实践中,发现这种关系不可靠,按照给的建议安装,没有成功过如果安装了适配于 for CUDA 11.0 版本的CUDNN的话,会导致matconvnet一直报出如下错误,即使在后面改代码步骤中全部改好,也会报错。都是CUDNN的问题,不要使用推荐的for cudnn !!
如果要验证的话,可以在安装matconvnet GPU版本的时候,不使用‘enablecudnn’仅为:
vl_compilenn('enableGpu',true,'cudaRoot','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0','cudaMethod' ,'nvcc' ,'debug',true)
若不使用cudnn,不报错即为CUDNN的问题导致的报错!!!
2.推荐cudNN
\quad
看不懂上面写的也没关系,只要记住,VS2017社区版+CUDA11.0+MATALB2022b,最好使用cudnn7.6.5.32版本
,不要看系统的推荐版本。
\quad
按照所述,安装好了CUDA11.0 、MATLAB2022b 、VS2017社区版,下载好了(下载地址见上)cudnn7.6.5.32之后,需要将cudnn配置到CUDA上,CUDA和cudnn的配置很简单,只需要将解压后的cudnn中的对应文件夹的文件,拷贝到CUDA目录下对应文件夹的文件中即可。
注意看文件夹的路径,左侧是cudnn7.6.5.32的东西,拷贝到右侧NVIDIA GPU Computing Toolkit(默认路径下的对应文件夹)即可。
拷贝完成后,即将CUDNN安装到了CUDA上。测试CUDNN是否可以运行:
\quad
与第三步查看算力的步骤相同,只需将执行的deviceQuery.exe换成bandwidthTest.exe即可,若deviceQuery.exe和bandwidthTest.exe结果都是PASS则CUDA与CUDNN安装成功,但并不代表可以成功安装matconvnet。
六、安装matconvnet
1.包含文件夹
在确认如文章所述,安装了CUDA11.0、MATLAB2022b、VS2017社区版和 cudnn7.6.5.32后,最后一步是安装matconvnet。
下载地址:https://www.vlfeat.org/matconvnet/
我下载的是:matconvnet-1.0-beta25.tar,这个版本高低不影响其他的。
将 matconvnet-1.0-beta25.tar 解压后,得到的文件夹只要内部的文件夹即可:
上截图中的蓝色框选的文件夹暂且称为 【matconvnet】
- 在【matconvnet】中创建一个【local】文件夹,与其内部【matlab】文件夹同级
- 将【cudnn7.6.5.32】文件(解压的cudnn文件,下有lib,include,bin三个文件夹)放在【local】文件夹中
- 将【matconvnet】文件夹放到【D:\Program Files\MATLAB\R2022b\toolbox】下
得到的最终结果逐级展示如下:
2.编译
1.用Matlab,CD到刚刚放到toolbox的【matconvnet】文件中
2.使用matlab中的设置路径,将【matconvnet】文件中的【matlab】文件夹添加并包含子文件夹
2.1 CPU版本
\quad 在matlab中,直接打开【matconvnet】文件中的【matlab】文件夹里的 vl_compilenn.m 点击运行(会自动使用VS2017 C++编译) \quad 不知道位置的看我编辑器的路径
\quad
运行出错(嘿嘿),改正的地方:
- 647行cl_path改为你自己的VS里面的cl.exe,我的路径如下
- 将359行注释掉,改成图中360行
- 其他的问题忘记了,都好改,CPU版本的好装,遇到其他的自行查找
再点击运行一次,成功编译CPU版本
成功编译完CPU版本后,在【matconvnet\matlab\】文件下,会出现一个【mex】文件,这就是编译生成的文件
把【toolbox\matconvnet\local\cudnn\bin】下的cudnn64_7.dll文件,拷贝到生成的【mex】中
2.2 GPU版本
需要先编译CPU版本的才行。接2.1,在命令行中输入:
vl_compilenn('enableGpu',true, %支持CUDA
'cudaRoot','C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0', %你的CUDA路径
'cudaMethod' ,'nvcc',
'enableCudnn',true, %支持cudnn
'cudnnRoot','D:\Program Files\MATLAB\R2022b\toolbox\matconvnet-cudnn7.6.5.32\local\cudnn7.6.5.32', %你的cudnn路径
'debug',true) %要在debug模式下,不然会报错
ENTER等待即可成功运行
测试,本文采用的是论文中的例子代码,尝试运行
>>vl_setupnn %在【matconvnet\matlab\】下,运行,以免会无法识别 vl_nncon函数
>>Main_demo %我的一个论文中下载的例子
结果
成功!!!!!!
PS:试验品(呜~~)