红联Linux门户
Linux帮助

caffe的MATLAB接口配置

发布时间:2017-09-25 09:29:30来源:linux网站作者:2013_2017
在运行SRCNN作者的代码的时候运行到saveFilters.m时候,程序总是在报错。经过一番折腾,才解决了这个问题。
机器环境:Ubuntu 16.04 服务器版, CUDA 8.0, gcc 4.7.0, Matlab R2015b.
由于服务器上最初安装的gcc是4.7版本,所以在后面配置接口时候总是有问题。必须将gcc升级到5.4.0版本才不会报错,所以本文第一部分先介绍gcc的升级,第二部分介绍caffe的MATLAB接口配置。
 
1.升级gcc
首先,我们要去下载gcc(http://mirrors-usa.go-parts.com/gcc/releases/gcc-5.4.0/),由于wget 下载时一直显示超时错误,所以我最终去用电脑下载了,然后用winSCP上传到服务器上的。上传后,就是解压文件。下载编译所需要的依赖项。
sudo tar -zxvf gcc-5.4.0.tar.gz  
cd gcc-5.4.0 //进入解包后的gcc文件夹  
sudo ./contrib/download_prerequisites  //下载依赖项  
cd ..  //返回上层目录
建立编译输出目录:
sudo mkdir gcc-build-5.4.0  
进入输出目录,执行以下命令,并生成makefile文件:
cd gcc-build-5.4.0  
sudo ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib  
编译:
sudo make -j4
接下来就是等待了,整个过程大约40分钟左右。PS:最好不要在编译过程中再去做别的什么事,整个过程CPU都是满载的,要是莫名终止了,后面麻烦事也不少。
安装:
make install
检查版本:
gcc -v
caffe的MATLAB接口配置
我在运行到这里的时候,还是显示是gcc 4.7。这并不是说gcc 5.4没有安装成功,而是因为gcc的默认版本并没有修改。所以我们通过下面的命令可以修改gcc的默认版本。
首先,看一下你的Ubuntu都装了哪些版本的gcc
ls /usr/bin/gcc* -l  
我的显示如下:
caffe的MATLAB接口配置
由上面显示可以看出默认安装的是gcc-4.7,现在来改成gcc-5.4
删除gcc-4.7的软连接文件/usr/bin/gcc。(只是删除软连接)
sudo rm /usr/bin/gcc
然后建一个软连接,指向gcc-5.4
sudo ln -s /usr/bin/gcc-5.4 /usr/bin/gcc
最后,再次查看gcc版本,结果如下:
caffe的MATLAB接口配置
 
2.caffe的MATLAB接口配置
修改caffe文件夹下的Makefile.config中Matlab的路径,即添加
CXXFLAGS += -std=c++11
MATLAB_DIR := /usr/local/R2015b 
上面显示的是我自己的Matlab安装路径,大家可以改成自己的。
打开.bashrc文件,添加相应文件,要根据自己的路径修改
sudo vim ~/.bashrc 
export PATH=$PATH:/usr/local/MATLAB/R2015b/bin
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64:/usr/local/MATLAB/R2015b/sys/os/glnxa64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6
最后保存退出,如果不进行上述过程,会报Error 255的错误。
caffe的MATLAB接口配置
紧接着执行如下命令(切换到caffe根目录下执行)
make matcaffe
caffe的MATLAB接口配置
不用管报了多少警告,只要最后显示mex成功即可。
然后运行命令
make mattest
报下面的错误
caffe的MATLAB接口配置
说缺少libcudart.so.8.0文件。执行下面的命令(注意自己CUDA的版本号!)
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig  
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
上面的文件,可以一条条的执行,他们会一条条的报错,也可以一次性都执行了再去执行make mattest
执行完这些后,终于显示成功了。
caffe的MATLAB接口配置
 
3.使用MATLAB
在正确的进行了上两步后,我们就可以使用caffe的MATLAB接口了,这里我就运行了SRCNN的saveFilters.m函数。
结果还是会报如下错误:
caffe的MATLAB接口配置
解决办法:在相应的saveFilters.m文件的首行添加如下代码即可
if exist('matlab/+caffe','dir')
addpath('matlab');
else
error('please run this demo from caffe/matlan/demo');
end
再次运行saveFilter.m函数,便可正常运行,输出.mat文件。
caffe的MATLAB接口配置
caffe的MATLAB接口配置
 
本文永久更新地址:http://www.linuxdiyf.com/linux/32664.html