在 Ubuntu 16.04 安裝 CUDA 8.0 和 TensorFlow 0.11 並使用內顯顯示畫面

By Shaform, Mon 31 October 2016, in category Notes

Caffe, CUDA, TensorFlow, Ubuntu

本文紀錄了使用內顯來顯示畫面,而透過 Nvidia 顯卡來進行 CUDA 計算的安裝步驟。

顯卡設定

基礎設定

首先在 BIOS 裡設定內顯為主要顯卡,並且將螢幕接到內顯輸出上。

安裝 CUDA

接著到 CUDA 下載頁面下載對應的 deb 檔案。緊接著,重開 Ubuntu,並在登入畫面時按下 Ctrl-Alt-F1 進入命令列界面。

執行以下指令關閉 lightdm,據這裡的講法,這樣就可以達成將內顯和顯卡功能分開的目的。筆者測試如果沒執行這個指令,則最後安裝完 CUDA 重開機就會無法進入圖形登入畫面。

sudo service lightdm stop

接著實際安裝 CUDA,並重新開機,確認可以登入:

sudo dpkg -i cuda-repo-<distro>_<version>_<architecture>.deb
sudo apt update
sudo apt install cuda
sudo reboot

安裝 cuDNN

接著到 cuDNN 下載頁面下載 cuDNN v5,然後按照 TensorFlow 文件指示,將檔案複製到指定位置:

tar xvzf cudnn-8.0-linux-x64-v5.1-ga.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

設定環境變數

接下來在 .bashrc 或者其他開機時會載入的啟動檔案中加入:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/usr/lib/nvidia-367
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:/usr/local/cuda/bin

其中 /usr/lib/nvidia-367 可指到你實際安裝的顯卡驅動程式版本。

最後重新開機即可。

開機完可執行 nvidia-smi 確定顯卡真的有裝好。

安裝 TensorFlow

由於這部份跟官方文件一模一樣,沒有特別更改什麼。所以詳細安裝步驟就直接參考官方文件即可。

安裝 Caffe

由於安裝 Caffe 的步驟跟官方有些不一樣,故順便紀錄。

首先安裝需要的套件:

sudo apt install build-essential libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt install --no-install-recommends libboost-all-dev

這裡我用 OpenBLAS。

sudo apt install libopenblas-dev

接著修改 Makefile.config

BLAS := open
USE_CUDNN := 1

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
WITH_PYTHON_LAYER := 1

並且修改 Makefile,加入 hdf5 相關程式庫:

LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

同時在想用的 Python 環境裡安裝必要套件,利用 Caffe 資料夾裡的 python/requirements.txt

pip install -r requirements.txt

最後就可以編譯了:

make all
make pycaffe