1. 程式人生 > >ubuntu16.04下安裝CUDA,cuDNN及tensorflow-gpu版本過程

ubuntu16.04下安裝CUDA,cuDNN及tensorflow-gpu版本過程

這篇文章主要依據兩篇文章:
深度學習主機環境配置: Ubuntu16.04+Nvidia GTX 1080+CUDA8.0
深度學習主機環境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow
不過在實際執行的過程中,有一定的不同之處,隨著時間的推移,一些元件已經可以更方便的安裝,不再需要自己編譯了。一些流程也有所更改。因此我在這裡把自己在ubuntu16.04下安裝cuda,cudnn和gpu版tensorflow的流程寫下來,供人蔘考。

安裝顯示卡驅動

首先安裝顯示卡驅動。首先看自己顯示卡

lspci | grep -i vga
lspci | grep -i nvidia

然後看顯示卡驅動

lsmod | grep -i nvidia

在ubuntu16.04中,更換驅動非常方便,去
系統設定->軟體更新->附加驅動->切換到最新的NVIDIA驅動即可。應用更改->重啟

選區_052.png-132.8kB

再執行nvidia-smi來看看

選區_053.png-55.8kB

安裝CUDA

sudo ./cuda_8.0.44_linux.run --tmpdir=/tmp

開始安裝。後面引數 tmpdir好像是為了放日誌,具體是什麼日誌忘了=。= 安裝開始以後,首先是一個協議,一直按回車到底以後,輸入accept。其他的操作如下所示

Do you accept the previously read
EULA? accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48? (y)es/(n)o/(q)uit: n Install the CUDA 8.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y Install the CUDA 8.0
Samples? (y)es/(n)o/(q)uit: y

下面是安裝時的輸出資訊:

Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
Installing the CUDA Samples in /home/textminer …
Copying samples to /home/textminer/NVIDIA_CUDA-8.0_Samples now…
Finished copying samples.

===========
= Summary =
===========

Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/textminer

Please make sure that
– PATH includes /usr/local/cuda-8.0/bin
– LD_LIBRARY_PATH includes /usr/local/cuda-8.0/lib64, or, add /usr/local/cuda-8.0/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-8.0/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-8.0/doc/pdf for detailed information on setting up CUDA.

***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 361.00 is required for CUDA 8.0 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver

Logfile is /tmp/cuda_install_6583.log

安裝完畢後,再宣告一下環境變數,並將其寫入到 ~/.bashrc 的尾部:

export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

儲存退出,執行source ~/.bashrc
測試是否安裝成功

// 如果怕把samples搞壞了那就先搞一個備份,在備份裡搞
cd /usr/local/cuda/samples/1_Utilities/deviceQuery 
sudo make
./deviceQuery

結果如下

選區_054.png-169.8kB

之前有看到說要把gcc改成4.9的。不過我現在用5.4的也可以編譯,就是有幾個警告,不知道會不會有什麼大的影響。

cuDNN安裝

如果要使用gpu來對tensorflow進行加速,除了安裝CUDA以外,cuDNN也是必須要安裝的。跟cuda一樣,去nvidia的官網下載cuDNN的安裝包。不過這次沒法直接下載,需要先註冊,然後還要做個調查問卷什麼的,稍微有點麻煩。我下的是cuDNN v5.1 Library for Linux這個版本。不要下cuDNN v5.1 Developer Library for Ubuntu16.04 Power8 (Deb)這個版本,因為是給powe8處理器用的,不是amd64.

下載下來以後,發現是一個tgz的壓縮包,使用tar進行解壓

tar -xvf cudnn-8.0-linux-x64-v5.1.tgz

安裝cuDNN比較簡單,解壓後把相應的檔案拷貝到對應的CUDA目錄下即可

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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

tensorflow安裝

我之前已經安裝了cpu-only版的tensorflow,所以現在要先把原先的tf解除安裝

sudo pip uninstall tensorflow
sudo pip install tensorflow_gpu-0.12.0rc1-cp35-cp35m-linux_x86_64.whl

來測試一下

$ipython
import tensorflow as tf

結果如下

選區_055.png-81.5kB

沒有報錯,說明已經安裝成功了。

在idea中呼叫tensorflow

之前在命令列中已經呼叫tensorflow成功了,沒想到在idea中寫程式時呼叫tensorflow又出現了錯誤:

ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

Error importing tensorflow.  Unless you are using bazel,
you should not try to import tensorflow from its source directory;
please exit the tensorflow source tree, and relaunch your python interpreter
from there.

選區_056.png-10kB

但是我並沒有在tf的根目錄下執行呀?而且同一個檔案用命令列是可以執行的呀?為什麼換idea來就不行了捏?
後來經過嘗試發現,問題還是出在環境變數LD_LIBRARY_PATH中。光把環境變數寫在~/.bashrc中是不行的,還需要寫在/etc/profile下。因此,可以在/etc/profile的結尾處加上

## cuda
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

登出後重新登陸,再開啟idea,就可以在idea中呼叫tf啦

選區_057.png-25.9kB