from https://i-blog.csdnimg.cn/blog_migrate/dc3f7760196d5e40aa24248ae766f425.png
ps:个人实验,仅供参考
硬件:
1、Intel(R) Xeon(R) E5-2620v2 2.10GHz 12core
2、NVIDIA Quadro K2000 显卡compute capability 2.0及以上可使用matconvnet GPU加速
3、RAM 16GB
环境:
1、fedora17 x86_64
2、cuda 7.5
3、matlab2015a
4、matconvnet 1.0 beta16
5、cudnn 6.5 v2
一、安装fedora17
试过很多linux版本,Fedora17配置起来比较简单。主要原因是matconvnet在编译时需要使用gcc4.7,其他版本可能导致编译失败。
Fedora17 x86_64下载地址:http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Fedora/x86_64/iso/
安装过程中注意选择software development
二、安装cuda和Nvidia显卡驱动
1、安装所需依赖项(如果在安装Fedora17时选择的是software development这些依赖是安装好的)
sudo rpm -q gcc kernel-headers kernel-devel 查看是否安装gcc、kernel-headers、kernel-devel
sudo yum install gcc kernel-headers kernel-devel联网情况下可以使用yum命令安装依赖
sudo rpm -ivh xxx.rpm 使用下载好的rpm安装包安装依赖
2、禁用nvidia第三方驱动nouveau,启用nvidia驱动
sudo vi /etc/modprobe.d/blacklist.conf 修改blacklist
添加blacklist nouveau 禁用nouveau
找到blacklist nvidia这一行删除或注释掉(在前面添加#)
vi编辑器的一些操作:底行模式下按i进行输入,esc返回底行模式,:wq写入文件并退出。不懂的找度娘。
3、重建initramfs
sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak备份initramfs文件
sudo dracut /boot/initramfs-$(uname -r).img $(uname -r)创建initramfs文件
操作错误可能会导致系统无法启动,可以放入系统盘进入终端模式通过备份还原initramfs文件,再重复步骤3
4、文本模式开机
ln -sf /lib/systemd/system/multi_user.target /etc/systemd/system/default.target
不同发布版的linux设置文本模式开机的方法不同,这个命令在Fedora17下可用。
5、重启电脑
lsmod|grep nouveau 确保nouveau没有加载(没有任何输出信息)
6、安装nvidia驱动和cuda
安装cuda时会提示你是否安装兼容驱动,不过cuda自带的兼容驱动可能会导致电脑重启无法进入图形界面,建议下载最新的nvidia驱动。
可以先安装cuda在安装nvidia驱动,这样可以避免安装cuda自带的兼容驱动。
具体安装执行nvidia官网下载的.run 文件即可,例如:sudo XXX.run
cuda7.5下载地址:https://developer.nvidia.com/cuda-downloads
nvidia驱动下载地址:http://www.nvidia.cn/Download/index.aspx?lang=cn
7、添加系统变量
sudo vi ~/.bashrc 修改bashrc文件
添加export PATH=$PATH:/usr/local/cuda-7.5/bin
添加export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-7.5/lib64
source ~/.bashrc 使修改立即生效
具体添加内容在cuda安装完成后会有提示,修改bashrc文件要谨慎,操作错误会导致系统命令不能使用。
8、图形模式开机
ln -sf /lib/systemd/system/graphic.target /etc/systemd/system/default.target
9、重启电脑
nvcc -V 查看nvcc编译器信息
如果操作成功则cuda安装成功,如果不成功可查看/usr/local路径下是否安装上cuda,确认cuda已经安装后检查系统变量是否添加正确。
10、测试cuda sample
如果在安装过程中选择安装了cuda sample,默认会在安装cuda的用户的用户文件夹(~/ 目录)下生成NVIDIA_CUDA-7.5_Sample。
进入目录执行make命令进行编译。编译过程中可能会提示缺少lib,需要安装相应lib。大部分缺少的lib可在安装盘的package目录下找到,比如:缺少lglut可以找到free-glut的rpm安装包。
编译成功后会生成bin目录。
三、安装matlab
下载matlab的安装包进行安装就可以,不多做介绍了。
安装matlab后创建启动器的方法:
sudo gedit /usr/share/applications/matlab.desktop
[Desktop Entry]
Name=Matlab2015a
Comment=Matlab2015a
Exec=/usr/local/MATLAB/MATLAB_Production_Server/R2015a/bin/matlab -desktop添加matlab的执行路径,-desktop不能缺少。
Icon=
Terminal=false
Type=Application
Categories=Application
四、安装matconvnet
下载matconvnet:http://www.vlfeat.org/matconvnet/
安装过程参考:http://www.vlfeat.org/matconvnet/install/
1)添加路径
解压matconvnet,打开matlab进入matconvnet目录下执行:run matlab/vl_setupnn
2)编译matconvnet
vl_compilenn('verbose',1)
3)编译GPU支持
matlab与建议使用的cuda toolkit
如果使用的是上表中对应matlab版本的cuda可直接执行:vl_compilenn('enableGpu',true)
否则在编译GPU支持时需要在参数中写入cuda路径。
比如我使用过的是matlab2015a+cuda7.5,编译命令为:
vl_compilenn('enableGpu',true,...
'cudaRoot','/usr/local/cuda-7.5',...
'cudaMethod','nvcc')
五、安装cudnn
下载cudnn:https://developer.nvidia.com/cudnn
需要先申请注册,通常会在4小时内收到邮件回复,最多不超过两天。
安装时解压cudnn并在系统环境中添加LD_LIBRARY_PATH即可。
比如:
重新编译matconvnet把cudnn拷贝到cuda同一目录下命名为cudnn-6.5,即/usr/local/cudnn-6.5
编辑bashrc:sudo vi ~/.bashrc
修改LD_LIBRARY_PATH:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cudnn-6.5
使修改生效:source ~/.bashrc
以我的实验环境为例,在matlab下执行命令:
vl_compilenn('enableGpu',true,...
'cudaRoot','/usr/local/cuda-7.5',...
'cudaMethod','nvcc',...
'enableCudnn','true',...
'cudnnRoot','/usr/local/cudnn-6.5')
编译过程中若报错提示找不到libcudnn,可能原因是cudnn的librarypath没有添加生效。
六、测试
执行vl_testnn('gpu',true)进行测试。
如果是64位系统可能会报错,参考https://github.com/vlfeat/matconvnet/issues/246和https://github.com/vlfeat/matconvnet/commit/dc9b5755a0d9335f8814e9a878bc3ab0f8fe09ee
修改vl_test_nnlayers.m文件。