首先吐个槽,ubuntu + nvidia的显卡驱动简直是反人类,害的我折腾了一天多。
寒假放假回家没事干,正好给家里电脑升级了显卡gtx1050可以跑跑CNN。我在实验室的显卡是560,比较老了,按着实验室的环境配置流程走下来居然不能用,症状就是在Python中不能成功的import caffe,然后重启后无限循环登录。
问题:
不能进入ubuntu的图形界面,在登录界面循环。
解决办法:
Nvidia显卡驱动的锅,卸载显卡驱动,按Ctrl+Alt+F1进入终端模式登录,输入命令
sudo apt-get remove --purge nvidia*
卸载显卡驱动,然后重启计算机,命令如下:
sudo reboot
现在就可以登录图形界面进行cuda + cudnn + caffe的环境配置了。
sudo apt-get install build-essential
sudo apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev
sudo apt-get install cmake
sudo apt-get install pkg-config
(3)把Opencv安装包解压,放到某目录下,这里我是放到了home目录下,在Opencv的目录下新建文件夹为release,在终端中进入Opencv的release目录,运行如下命令:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
(4)使用如下命令编译Opencv并安装:
make
sudo make install
至此Opencv已经安装完成,可以使用codeblocks建工程使用Opencv进行测试,方法见我的一篇博文 《Ubuntu下codeblocks安装配置方法及opencv配置方法》
sudo chmod a+x xxx.sh
运行该shell脚本
sh ./xxx.sh
shell脚本内容如下:
#!/bin/bash
# ATLAS
echo "===========atlas=============="
apt-get -y install libatlas-base-dev
# snappy
echo "===========snappy=============="
# apt-get -y install snappy
apt-get -y install libsnappy-dev
# boost
echo "===========boost=============="
apt-get -y install libboost-dev
apt-get -y install libboost-filesystem-dev
apt-get -y install libboost-system-dev
apt-get -y install libboost-thread-dev
apt-get -y install libboost-python-dev
# protobuf
echo "===========protobuf=============="
apt-get -y install libprotobuf-dev
apt-get -y install protobuf-compiler
apt-get -y install python-protobuf
# leveldb
echo "===========leveldb=============="
apt-get -y install libleveldb-dev
# lmdb
echo "===========lmdb=============="
apt-get -y install liblmdb-dev
# hdf5
echo "===========hdf5=============="
apt-get -y install libhdf5-dev
# glog
echo "===========glog=============="
apt-get -y install libgoogle-glog-dev
# gflag
echo "===========gflag=============="
apt-get -y install libgflags-dev
# cython
echo "===========cython=============="
apt-get -y install cython
# scipy
echo "===========scipy=============="
apt-get -y install python-scipy
# scikit-image
echo "===========scikit-image=============="
apt-get -y install python-skimage
# pyyaml
echo "===========pyyaml=============="
apt-get -y install python-yaml
# easydict
echo "===========easydict=============="
apt-get -y install python-pip
# 指定使用科大镜像源安装easydict
pip install easydict -i https://pypi.mirrors.ustc.edu.cn/simple
## 错误排查
# 修复一个比较奇怪的一定要检查这个目录是否存在的问题
mkdir -p /usr/lib64
# 修复cuda链接库找不到的问题
echo "/usr/local/cuda/lib64" > cuda.conf
cp cuda.conf /etc/ld.so.conf.d
ldconfig
这个shell脚本是我师兄写的,在这里鸣谢我师兄!
sudo apt-get install git
(2)拉取caffe源码
git clone https://github.com/BVLC/caffe.git
(3)设置Makefile.config文件
sudo ln libhdf5_serial.so.10.1.0 libhdf5.so
sudo ln libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so
sudo ldconfig
make all -j4
ii:执行以下命令,其中-j4是表示使用4个线程进行编译
make test -j4
make runtest -j4
make pycaffe -j4
make distribute
至此,caffe已经安装完成。
sudo chmod a+x NVIDIA-Linux-x86_64-375.26.run
(3)关闭Ubuntu图形界面
sudo service lightdm stop
sudo ./NVIDIA-Linux-x86_64-375.26.run --no-x-check --no-nouveau-check --no-opengl-files
sudo service lightdm start
按Ctrl + Alt + F7进入图形界面。
sh cuda_8.0.27_linux.run --override
首先会提醒你看一些它的使用协议,一直按空格直到出现是否同意,选择Accept
cd cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/
cd ../lib64
sudo cp lib* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h/usr/local/cuda/lib64/libcudnn*
接下来执行以下命令:
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5
sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
在终端中输入以下命令进行环境变量的配置:
sudo gedit /etc/profile
在出现的文件中进行编辑,在末尾加上并保存:
PATH=/usr/local/cuda/bin:$PATH
export PATH
创建链接文件
sudo gedit /etc/ld.so.conf.d/cuda.conf
在该文件中,插入/usr/local/cuda/lib64并保存,然后使用sudo ldconfig使之生效。
sudo make all -j4
此步可能会出错,出错处理见最下面的参考链接4,我这里没有出错。完成后继续输入
cd bin/x86_64/linux/release
./deviceQuery
出现下图则表示cuda安装完成
import caffe
print 'hello world'
若编译运行后没有错误,则环境已经配置好。
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include
修改为
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/local/lib/python2.7/dist-packages/numpy/core/include
即可