天天看點

[TensorFlow筆記] GPU環境搭建

系統:Ubuntu 16.04

安裝

首先要下載下傳NVIDIA公司提供的兩個檔案:CUDA(下載下傳位址)和cuDNN(下載下傳位址),下載下傳需要新增賬號,有點坑爹。

CUDA建議下載下傳runfile(local)檔案類型,cuDNN要同時下載下傳Runtime和Development兩個deb包。

注意一定要下載下傳比對TensorFlow的版本,如下:

TensorFlow版本 CUDA 版本 cuDNN版本
1.1 or 1.2 v8.0 v5.1
1.3 or 1.4 or 1.5 v8.0 v6.0
1.6 or 1.7 v9.0 v7.0

安裝CUDA:

sudo sh cuda_9.0.176_384.81_linux.run

這裡安裝時會有很多東西要你選擇,這裡千萬别選擇再安裝顯示卡驅動和配置X Configuration,否則你在登入界面會一直登入不進去。

安裝cuDNN:

sudo dpkg -i libcudnn7_7.1.1.5-1+cuda9.0_amd64.deb

CUDA一般會安裝在

/usr/local/

目錄下:

ls /usr/local/ -lh
total K
drwxr-xr-x   root root K 月    : bin
lrwxrwxrwx   root root     月    : cuda -> cuda-
drwxr-xr-x  root root K 月    : cuda-
drwxr-xr-x   root root K 月      etc
drwxr-xr-x   root root K 月      games
drwxr-xr-x   root root K 月     include
drwxr-xr-x   root root K 月   : lib
lrwxrwxrwx   root root     月     man -> share/man
drwxr-xr-x   root root K 月      sbin
drwxr-xr-x   root root K 月   : share
drwxr-xr-x   root root K 月      src
           

會看到有一個cuda目錄指向cuda-9.0目錄。

環境變量設定:

最重要的不要忘了設定環境變量,在

/etc/bash.bashrc

檔案後面添加:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
           

搞定!

檢查CUDA和cuDNN的版本

CUDA版本

cat /usr/local/cuda/version.txt

輸出

cuDNN版本

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

輸出

#define CUDNN_MAJOR 7
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 3
--
#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

#include "driver_types.h"
           

CUDA Compilation Tools版本(這個看自己需要了)

sudo apt install nvidia-cuda-toolkit

nvcc -V

輸出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
           

驗證TensorFlow中GPU是否可用

from tensorflow.python.client import device_lib
device_lib.list_local_devices()
           

輸出:

[name: "/device:CPU:0"
 device_type: "CPU"
 memory_limit: 
 locality {
 }
 incarnation: , name: "/device:GPU:0"
 device_type: "GPU"
 memory_limit: 
 locality {
   bus_id: 
   links {
   }
 }
 incarnation: 
 physical_device_desc: "device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0, compute capability: 6.1"]
           

故障排除

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

先看CUDA和cuDNN的版本對不對,然後再看環境變量有沒有設對。

繼續閱讀