环境
- Ubuntu 15.04
- NVidia GeForce GTX 1080 显卡若干
安装CUDA
在Nvidia官网下载好CUDA 8.0 amd64 debian
版本,我没有下16.04
版本,下的是14.04
。
sudo dpkg -i cuda-repo-ubuntu1404-8-0-rc_8.0.27-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
安装CUDNN
在Nvidia官网下载好cudnn-8.0-linux-x64-v5.0-ga.tgz
,解压,将文件分别复制到CUDA的安装目录/usr/local/cuda
。
显卡驱动
先查看一下自己的驱动版本:
sudo dpkg -l | grep nvidia
如果想要更新到最新,可以继续以下步骤
下载最新Nvidia驱动
在Nvidia官网,找到我们使用的1080显卡驱动linux版本,是一个run文件,截止笔者写这篇文章,Nvidia-Linux-x86_64-367.27.run
。
卸载原生Nvidia驱动
sudo service lightdm stop
sudo apt-get remove --purge nvidia-*
Nvidia 的 Linux显卡驱动要求图形界面关闭,所以我们关闭lightdm
,在纯命令行下操作。完全卸载默认安装的较旧版本的驱动,有些版本在写卸载时会卸掉一些不必要的依赖库,其实就是ubuntu-desktop
。我的旧版本(361.xx)并没出现这样的问题。你可以在卸载完成后确认一下。
sudo apt-get install ubuntu-desktop
添加驱动黑名单
sudo vi /etc/modprobe.d/blacklist.conf
## add the following to the end of this file
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
安装驱动
sudo chmod a+x Nvidia-Linux-x86_64-367.27.run
./Nvidia-Linux-x86_64-367.27.run
进入安装界面里面有些选项还需注意,比如需要重新写入Kernel(否则会和lightdm
冲突导致最后无法进入图形化界面),不编译32位兼容的(在笔者的机器上编不过,提示libGL.so
的错误)。其他的选项选择同意或者是。
安装完成后,重启lightdm
。
sudo service lightdm restart
重启
sudo reboot
克隆MXnet项目
Github上有dmlc的原生版和其他衍生版本,因为dmlc的最新,有些cuda和gcc编译的兼容性错误。我们选取这个版本。
git clone --recursive https://github.com/tornadomeet/mxnet.git
MXnet 依赖
sudo apt-get install -y build-essential git libatlas-base-dev libopencv-dev
编译MXnet
该项目是可以多核编译的。默认的配置文件是不编译CUDA的。所以需要略作修改。
vi mxnet/make/config.mk
# 修改这几处
USE_CUDA = 1
USE_CUDA_PATH = /usr/local/cuda
USE_CUDNN = 1
笔者是物理6核虚拟12核CPU,编译时可以快一些。
make -j12
Python
笔者默认你的机器上已经安装了python及相关库,如果没有,请如下操作。
sudo apt-get install python
sudo apt-get install pip
pip install setuptools
然后在mxnet的python目录,将编译完成的python版mxnet库全局安装到python的package目录。
cd mxnet/python
python setup.py install
Troubleshooting
- 如果恰巧把361和367驱动同时装了,这时需要卸掉361,否则两个驱动不能同时工作。
modprobe: ERROR: could not insert ‘nvidia_361_uvm’: Invalid argument
sudo apt-get remove nvidia-361