这次在ubuntu上安装Matcovnet,并想在GPU上也能运行。

一、安装Matlab与配套的CUDA

电脑已安装CUDA,安装教程网上都有,此处不赘述

终端输入  cat /usr/local/cuda/version.txt

查询得到  CUDA Version 8.0.61

根据官网信息

为了后续少出错,电脑需要下载matlab2017a,网上搜索到蓝色界域个人博客上提供了linux matlab2017a安装包和及安装破解教程。按照其方法安装matlab2017a成功。

二、 配置MatConvnet(CPU)

按照官网Quick Start进行安装。

打开matlab,命令行输入

mex -setup

 显示

暂时理解为matlab已经配置好了对应的gcc。

直接将matconvnet-1.0-beta25文件夹所在位置设置为当前文件夹,之后在matlab命令行输入

run matlab/vl_compilenn

 报错:

call to ‘__warn_memset_zero_len’ declared with attribute warning: memset used with constant zero length parameter; this could be due to transposed parameters
       __warn_memset_zero_len ();
  原因上网搜索仍一无所获。

想尝试是不是gcc版本为4.9,版本太高所致,于是按照此网页方法安装gcc4.8并将其设置成默认版本。

继续

run matlab/vl_compilenn

 报错:

 反复尝试两个版本也都会报上面的错误。后来ubuntu终端输入

sudo apt-get remove gcc-4.9

 删除了gcc4.9,再重新安装

sudo apt-get install gcc-4.9

发现下面有建议安装

 因此安装完成之后终端输入

sudo apt-get install gcc-4.9-locales gcc-4.9-muitilib gcc-4.9-doc libitm1-dbg libatomic1-dbg libasan1-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg libcilkrts5-dbg libguadmath0-dbg

 安装这些lib文件。之后通过

 gcc --version

 查看gcc默认版本是否为4.9,如果不是则通过之前网页教程 终端输入

sudo update-alternatives --config gcc

 选择默认版本。之后再按照Matconvnet安装教程输入

mex -setup

没问题,再输入

mex -setup C++

竟然报错说未找到支持的编译器或SDK!!出离愤怒了!

呼,惹不起惹不起,上网查了很多方法,后来以外知道利用mex -v 可以知道mex运行细节,于是输入

mex -v -setup

 显示

 

说明gcc已经链接好了,没问题,继续输入

mex -v -setup C++

显示

 

找不到g++,理论上安装gcc的时候会一起把g++安装上,终端输入

sudo apt-get install g++4.9

 老规矩,将他提示建议安装的也一并安装上吧,以防万一,但这时,输入g++ --version,仍然提示

已经安装了却还提示g++没有安装??那就是链接库的事情了,于是跟GCC一样输入

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 100

 之后输入 g++ --version,显示

bingo!胜利在望,搞定了,说明之前不断地卸载和重装使得系统的g++链接出现问题了,需要重新设置一下。接下来mex -setup C++就没有问题了