ubuntu下cuda和cudnn的安装及mxnet-GPU版本配置

安装NVIDIA驱动

进入官网http://www.nvidia.com/Download/index.aspx?lang=en-us查看当前显卡的驱动,执行如下命令进行安装:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-367
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev

执行完重启:sudo reboot.
输入:nvidia-smi,可以获取如下gpu信息,包括gpu列表和gpu正在执行的进程:


另外也可以通过命令nvidia-settings查询详细的gpu信息:
.

安装CUDA

CUDA是nvidia推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。CUDA支持C、C++和FORTRAN,所编写出的程序可以在支持CUDA™的处理器上以超高性能运行。
进入官网直接下载相应版本的CUDA,并执行安装:

添加配置:

sudo gedit /etc/profile
打开‘profile’文件,在末尾添加(不要用空格)
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64$LD_LIBRARY_PATH.

重启电脑
执行测试样例:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

显示如下信息,cuda安装成功:
.

需要注意的问题

安装CUDA后启动不成功,原因是电脑bios开启了安全启动secure boot,关闭secure boot,CUDA启动成功。

安装cudnn

cudnn是Nvida专门针对Deep Learning框架设计的一套GPU计算加速方案,目前支持的DL库包括Caffe,ConvNet, Torch7和Mxnet等。cudnn可以从官网获取https://developer.nvidia.com/rdp/cudnn-download:

下载后解压将lib和include添加到cuda文件里:

tar -xzvf cudnn-8.0-linux-x64-v5.0-ga.tar
cd cudnn-8.0-linux-x64-v5.0-ga
sudo cp cuda/lib64/* /usr/local/cuda/lib64/
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

创建新的软链接:

cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo chmod u=rwx,g=rx,o=rx libcudnn.so.5.0.5
sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so.

执行后发现还是找不到库, 报错:

error while loading shared libraries: libcudnn.so.5: cannot open shared object file: No such file or directory

运行动态链接库管理命令:

sudo ldconfig -v

执行成功!

配置Mxnet GPU版本

修改mxnet/config.mk配置:

1
2
3
4
5
6
7
8
9
10
# whether use CUDA during compile
USE_CUDA = 1
# add the path to CUDA library to link and compile flag
# if you have already add them to environment variable, leave it as NONE
# USE_CUDA_PATH = /usr/local/cuda
USE_CUDA_PATH = /usr/local/cuda
# whether use CUDNN R3 library
USE_CUDNN = 1

重新编译mxnet库文件:

1
2
make clean //一定要先clean
make -j4

如果mxnet和cudnn版本冲突,如mxnet版本为0.8,安装的cudnn版本为v6,编译报错:

编译完成后,安装mxnet python库:

1
2
3
4
5
6
7
8
//更新替换python内的libmxnet.so
sudo cp mxnet/lib/libmxnet.so /mxnet/python/mxnet/
//卸载之前版本python库
sudo pip uninstall mxnet
cd mxnet/python
sudo python setup.py install
//一定要替换系统目录下的libmxnet.so
sudo cp mxnet/lib/libmxnet.so /usr/local/lib/python2.7/dist-packages/mxnet-0.9.4-py2.7-linux-x86_64.egg/mxnet/

GPU版本mxnet配置完成!

如果觉得我的文章对您有用,请随意赞赏