文章目录
一、前言
最近在写某个项目时,需要利用 MATLAB
导入预先训练好的某个模型,这就需要用到 MatConvNet
,但是笔者自己之前没有接触过这方面,电脑上连 cuda
也没有安装,一路安装采坑走过来确实不容易😢😢😢。
- 系统:
Ubuntu21.10
- MATLAB版本:
R2019b
- MatConvNet版本:
matconvnet-1.0-beta24
二、安装配置NVIDIA driver
MatConvNet
需要用到 cuda
和 NVIDIA driver
来编译 GPU 支持,所以这里我们先安装配置 NVIDIA driver。
1. 添加PPA源
添加 PPA
源:
sudo add-apt-repository ppa:graphics-drivers/ppa
为系统安装依赖项以构建内核模块:
sudo apt-get install dkms build-essential
2. 查看显卡硬件型号
打开终端,输入如下命令
ubuntu-drivers devices
输出界面如下,可以看到这里我的硬件显卡型号为 GP108M [GeForce MX250]
,推荐安装的驱动版本号为:driver : nvidia-driver-470 - distro non-free recommended
3. 安装NVIDIA驱动
这里我们下载自己电脑推荐的驱动版本即可:
sudo ubuntu-drivers autoinstall
系统会自动安装推荐版本驱动,接着重启系统。
二、安装cuda
这里我用的 cuda
版本为 11.1,采用 .run
文件安装,最新的 11.6 版本试了有点问题,所以我换成了 11.1 版本。
1. 下载相关依赖
命令如下:
sudo apt-get install freeglut3 freeglut3-dev libxi-dev libxmu-dev
2. 下载安装文件
直接使用 wget
下载即可,这里我提供的是 11.1 版本的下载链接:
cd ~/Downloads
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda_11.1.0_455.23.05_linux.run
大概有 3 个多 G,注意网络连接。
3. 安装cuda-toolkit
这里我们只使用安装文件来安装 cuda-toolkit
,driver 的安装我们在上述操作中已经完成,所以命令如下:
sudo sh ./cuda_11.1.0*.run --toolkit --silent --override
4. 配置环境变量
修改 ~/.bashrc
文件:
vim ~/.bashrc
添加如下内容:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
使修改立即生效:
source ~/.bashrc
5. 检验安装
命令如下:
nvcc --version
三、安装低版本gcc、g++
这一步其实也可以跳过,若后续你的编译没报错的话,但是我在之前的搭建过程中是配置了 gcc6.3.0
、g++6.3.0
环境的,配置可参考此博客:Ubuntu安装低版本gcc详细教程(安装gcc6.3.0为例)
过程可能会需要一段时间,确定自己有一两个小时的空闲时间配置。
四、安装配置MatConvNet
1. 下载安装tar包
这里我建议下载 beta24
版本,官网下载链如下:https://www.vlfeat.org/matconvnet/download/,下载完成后,解压相关压缩包:
cd ~/Downloads
tar -zxf matconvnet-1.0-beta24.tar.gz
2. 修改Makefile并编译
进入解压后的文件目录:
cd matconvnet-1.0-beta24
参考此博客修改 Makefile
的内容:MatConvNet下载后make报错解决办法
vim Makefile
修改好 Makefile
后,使用 make
命令进行第一步编译:
make
编译成功是会在 matconvnet-1.0-beta24/matlab
目录下生成一个 mex 文件夹的。
3. 安装编译MatConvNet库
注意这里就要关掉终端了,打开你电脑上的 MATLAB,以下的所有命令都是在 MATLAB 终端中输入的!!!
(1)准备工作
设置 MATLAB 当前工作目录为你解压后的 MatConvNet
文件目录,这里我的 MatConvNet
解压目录在主目录下:
cd ~/matconvnet-1.0-beta24
addpath ./matlab
将 MatConvNet
添加到 MATLAB 的搜索路径中:
vl_setupnn
(2)为 mex 设置编译参数
mex -setup
mex -setup C++
(3)编译 MatConvNet
命令如下:
vl_compilenn
接着编译 GPU 支持:
vl_compilenn('enableGpu', true, 'cudaRoot', '/usr/local/cuda-11.1')
这里的 cudaRoot
值是你的 cuda
安装路径,过程中会有挺多报错的,我都在此专栏中解决了,应该都能找到:MatConvNet环境搭建
(4)测试 MatConvNet
GPU
测试:
vl_testnn('gpu', 'true')
过程中有步下载速度实在是。。。。。我也不知道当初怎么测试成功的,编译时没有 error
只有 warning
的话就直接用吧。