这次在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++就没有问题了
浙公网安备 33010602011771号