ubuntu 16.04 + caffe + cudnn + cuda8.0 + nvidia驱动
一、首先安装各种依赖文件
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
二、安装nvidia驱动
安装过程中,首先要关闭掉x桌面,否则可能会出问题,命令是
sudo service lightdm stop
使用这个命令卸载原来的nvidia驱动
sudo apt-get remove --purge nvidia*
然后按ctrl + alt + f1进入tty1界面
给run文件赋予执行的权限
sudo chmod a+x NVIDIA-Linux-x86_64-375.20.run
然后执行这个命令安装驱动
sudo ./NVIDIA-linux-x86_64-375.20.run –no-x-check –no-nouveau-check –no-opengl-files
- –no-x-check 安装驱动时关闭X服务
-
- –no-nouveau-check 安装驱动时禁用nouveau
-
- –no-opengl-files 只安装驱动文件,不安装OpenGL文件
- 后面一定要加上这三天,否则可能会出现登录界面循环登陆的问题。
- 安装好之后使用命令nvidia-smi查看驱动是否安装好。
三、安装cuda8.0 - 首先关闭x桌面服务,然后进入tty1界面,注意cuda8.0下载的要是run包,不要用deb包。
- 通过下面命令安装
sudo sh cuda_8.0.61_375.26_linux.run --no-opengl-libs
-
- 执行此命令约1分钟后会出现 0%信息,此时长按回车键让此百分比增长,直到100%,然后按照提示操作即可,先输入 accept ,然后让选择是否安装 nvidia 驱动,这里的选择对应第5步开头,若未安装则输入 “y”,若确保已安装正确驱动则输入“n”。剩下的选择则都输入“y”确认安装或确认默认路径安装,开始安装,此时若出现安装失败提示则可能为未关闭桌面服务或在已安装 nvidia 驱动的情况下重复再次安装 nvidia 驱动。
- 安装完成之后sudo reboot重启电脑
- 然后 配置cuda环境变量
sudo gedit ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
-
- 验证cuda是否安装好
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
-
- 最后如果result=pass则成功
四、安装cudnn- 从https://developer.nvidia.com/cudnn上下载cudnn相应版本的压缩包,将压缩包解压得到cuda文件夹,里面有两个文件夹,一个include,另一个lib64。
- 将解压后的文件中的lib64文件夹关联到环境变量中
cd ~
sudo gedit .bashrc
export LD_LIBRARY_PATH=/your path to cudnn/lib64:$LD_LIBRARY_PATH //添加这条命令
source .bashrc //之后再source文件
-
- 配置cuDNN的最后一步就是将解压后的cuDNN文件夹(一般该文件名为cuda)中的include文件夹中的cudnn.h文件拷贝到/usr/local/cuda/include中,由于进入了系统路径,因此执行该操作时需要获取管理员权限。
- 配置cuDNN的最后一步就是将解压后的cuDNN文件夹(一般该文件名为cuda)中的include文件夹中的cudnn.h文件拷贝到/usr/local/cuda/include中,由于进入了系统路径,因此执行该操作时需要获取管理员权限。
cd cuda/include
sudo cp *.h /usr/local/cuda/include/
sudo chmod a+r /usr/local/cuda/include/cudnn.h //给cudnn.h文件添加读权限
-
- 五、安装caffe
- 从 https://github.com/BVLC/caffe.git 上将caffe下载下来
- 然后进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作
sudo cp Makefile.config.example Makefile.config
-
- 复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe
- 然后修改 Makefile.config 文件,在 caffe 目录下打开该文件
- 复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe
sudo gedit Makefile.config
-
- 修改一下内容:
- (1)应用cudnn
将
USE_CUDNN := 1
修改成:
USE_CUDNN := 1
-
- (2)修改python路径
将
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
-
- 然后修改Makefile文件内容
- (1)
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
(2)
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
-
- 然后修改 /usr/local/cuda/include/host_config.h 文件
- 然后修改 /usr/local/cuda/include/host_config.h 文件
将
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
-
- 修改完后就可以开始编译了
make all -j8
-
- 编译完后运行下面命令进行测试
sudo make runtest -j8
-
- sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
- sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig