天天看点

[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的版本对不对,然后再看环境变量有没有设对。

继续阅读