ubuntu16.04+nvidia gt740m+cuda7.5+caffe安裝、測試經歷
首先說明,這是在筆記本上的安裝測試經歷,首先安裝的win10,然後安裝ubuntu16.04雙系統,顯示卡為nvidia gt740m
win10上沒有裝nvidia gt740m驅動,也就是用的集顯,測試發現若裝了nvidia gt740m驅動會無法進去ubuntu,重灌無數次的經驗
廢話不多說,上車吧,少年
一、安裝nvidia顯示卡驅動
-
更新Ubuntu16.04源
終端輸入
cd /etc/apt/
sudo cp sources.list sources.list.bak
sudo vi sources.list
把下面的這些源新增到source.list中:deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
最後更新源和更新已安裝的包:
終端輸入sudo apt-get update
sudo apt-get upgrade
-
進入ubuntu系統設定-軟體與更新-附加驅動中選擇下圖所示選項進行驅動安裝
-
gt740m驅動測試
終端輸入
nvidia-smi
顯示效果如下圖表示安裝成功
二、cuda安裝
-
下載cuda_7.5.18_linux.run和cudnn-7.5-linux-x64-v5.1.tgz
這裡我提供了百度網盤,這兩個檔案我先在win10下下載好,並用u盤拷貝到ubuntu的下載目錄下
-
安裝cuda7.5
終端輸入
cd 下載/
sh cuda_7.5.18_linux.run --override
啟動安裝程式,一直按空格到最後,輸入accept接受條款
輸入n不安裝nvidia影象驅動,之前已經安裝過了
輸入y安裝cuda 7.5工具
回車確認cuda預設安裝路徑:/usr/local/cuda-7.5
輸入y用sudo許可權執行安裝,輸入密碼
輸入y或者n安裝或者不安裝指向/usr/local/cuda的符號連結
輸入y安裝CUDA 7.5 Samples,以便後面測試
回車確認CUDA 7.5 Samples預設安裝路徑:/home/pawn(pawn是我的使用者名稱),該安裝路徑測試完可以刪除 -
安裝cudnn v5.1
終端輸入
cd 下載/
tar zxvf cudnn-7.5-linux-x64-v5.1.tgz
解壓在下載目錄下產生一個cuda目錄cd cuda/include/
sudo cp cudnn.h /usr/local/cuda/include/
複製標頭檔案cd ../lib64
開啟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.3 libcudnn.so.5
sudo ln -s libcudnn.so.5 libcudnn.so
設定環境變數,終端輸入sudo gedit /etc/profile
在末尾加入PATH=/usr/local/cuda/bin:$PATH
export PATH
儲存後,建立連結檔案sudo vim /etc/ld.so.conf.d/cuda.conf
按a進入插入模式,增加下面一行/usr/local/cuda/lib64
按esc退出插入模式,按:wq儲存退出
最後在終端輸入sudo ldconfig
使連結生效 -
cuda Samples測試
開啟CUDA 7.5 Samples預設安裝路徑,終端輸入
cd /home/pawn/NVIDIA_CUDA-7.5_Samples
(pawn是我的使用者名稱)sudo make all -j4
(4核)
出現“unsupported GNU version! gcc versions later than 4.9 are not supported!”
的錯誤,這是由於GCC版本過高,在終端輸入cd /usr/local/cuda-7.5/include
sudo cp host_config.h host_config.h.bak
sudo gedit host_config.h
ctrl+f尋找有“4.9”的地方,只有一處,如下# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)
#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!
將兩個4改成5,即# if __GNUC__ > 5 || (__GNUC__ == 5 && __GNUC_MINOR__ > 9)
儲存退出,繼續在終端輸入cd /home/pawn/NVIDIA_CUDA-7.5_Samples
(pawn是我的使用者名稱)sudo make all -j4
(4核)
完成後繼續向終端輸入cd bin/x86_64/linux/release
./deviceQuery
完成之後出現如下圖所示,表示成功安裝cuda
三、依賴包安裝
-
sudo apt-get install build-essential
#必要的編譯工具依賴 -
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 libatlas-base-dev
-
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
四
-
安裝python的pip和easy_install,方便安裝軟體包
終端輸入
cd
wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
sudo python ez_setup.py --insecure
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
五
-
安裝科學計算和python所需的部分庫
終端輸入
sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran python-numpy
六
-
安裝git,拉取原始碼
終端輸入
sudo apt-get install git
git clone https://github.com/BVLC/caffe.git
七
-
安裝python依賴
終端輸入
sudo apt-get install python-pip
安裝pipsudo su
for req in $(cat "requirements.txt"); do pip install -i https://pypi.tuna.tsinghua.edu.cn/simple $req; done
按Ctrl+D退出sudo su模式
八、編譯caffe(暫不對matlab說明)
-
終端輸入
cd /home/pawn/caffe
cp Makefile.config.example Makefile.config
gedit Makefile.config
①將
USE_CUDNN := 1
取消註釋,②
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
後面打上一個空格 然後新增/usr/include/hdf5/serial
如果沒有這一句可能會報一個找不到hdf5.h的錯誤 -
終端輸入
make all -j4
make過程中出現string.h ‘memcy’ was not declared in this scope
的錯誤是由於gcc編譯器版本太新,如下圖
解決方法如下:
終端輸入cd /home/pawn/caffe
vim Makefile
鍵盤輸入/NVCCFLAGS += -c
回車,定位到409行
按a進入插入模式,修改NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
為NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
按esc退出插入模式,按:wq儲存退出終端中輸入
make clean
清除第一次編譯結果
再次輸入make all -j4
重新編譯
make過程中又出現找不到lhdf5_hl和lhdf5的錯誤,
解決方案:
在計算機中搜索libhdf5_serial.so.10.1.0
,找到後右鍵點選開啟專案位置
該目錄下空白處右鍵點選在終端開啟,開啟新終端輸入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 clean
清除第一次編譯結果
再次輸入make all -j4
重新編譯 -
終端輸入
make test -j4
make runtest -j4
make pycaffe -j4
make distribute
生成釋出安裝包 -
測試python,終端輸入
cd /home/pawn/caffe/python
python
import caffe
如果不報錯就說明編譯成功
九、mnist測試
-
下載mnist資料集,終端輸入
cd /home/pawn/caffe/data/mnist/
./get_mnist.sh
獲取mnist資料集
在/home/pawn/caffe/data/mnist/
目錄下會多出訓練集圖片、訓練集標籤、測試集圖片和測試集標籤等4個檔案 -
mnist資料格式轉換,終端輸入
cd /home/pawn/caffe/
./examples/mnist/create_mnist.sh
必須要在第一行之後執行第二行,即必須要在caffe根目錄下執行create_mnist.sh
此時在/caffe/examples/mnist/
目錄下生成mnist_test_lmdb和mnist_train_lmdb兩個LMDB格式的訓練集和測試集 -
LeNet-5模型描述在
/caffe/examples/mnist/lenet_train_test.prototxt
-
Solver配置檔案在
/caffe/examples/mnist/lenet_solver.prototxt
-
訓練mnist,執行檔案在
/caffe/examples/mnist/train_lenet.sh
終端輸入cd /home/pawn/caffe/
./examples/mnist/train_lenet.sh
測試結果如下