當前位置:編程學習大全網 - 源碼下載 - 求助tensorflow下遇到cuda compute capability問題

求助tensorflow下遇到cuda compute capability問題

首先需要看妳的PC配置是否夠,TF的GPU模式只支持N卡,然後計算能力高於3.0,具體可以查:

安裝教程可以參考:

Ubuntu16.04上gtx1080的cuda安裝

July 17 2016

目前tensorflow是壹個非常流行的深度學習計算框架,常規硬件及系統的安裝方法官方的doc已經說的很清楚了,但是 因為系統是ubuntu16.04,顯卡是GTX1080,所以不可避免的要折騰起來。在上壹篇已經在16.04上安裝好了驅動。接下來其實 重點安裝的是CUDA和cuDNN.

首先說為什麽要安裝CUDA和cuDNN,關於采用GPU計算比CPU有速度有多少提升的benchmark找找就有,這次重點是怎麽讓tensorflow充分用的 上GTX1080能力。具體的就是如何把支持GTX1080的CUDA和cuDNN裝起來,然後讓tensorflow認識我們新裝的CUDA和cuDNN。

首先總體說下安裝步驟:

1 首先要註冊NVIDIA developer的帳號,分別下載CUDA和cuDNN

2 確認準備gcc版本,安裝依賴庫sudo apt-get install freegl

3 安裝CUDA

4 解壓cuDNN

5 clone tensorflow源碼,configure配置

6 編譯安裝

7 最後壹哆嗦,測試!

準備工作

在正式開始前,需要做幾個準備工作,主要是大概先看下文檔

cuda FAQ

tensorflow 的安裝文檔

cuda-gpu的支持列表/計算能力/FAQ

cudnn 5.1有多牛

cuda tookit下載頁面

CUDA_Installation_Guide_Linux.pdf

cudnn User Guide

文檔看過之後接下來就是實際動手的過程:

1 註冊NVIDIA developer的帳號,分別下載CUDA和cuDNN

1.1 下載CUDA 打開cuda toolkit下載頁面,GTX1080 要用的是CUDA 8。先點擊JOIN,註冊帳號。 完了後,再回到cuda toolkit下載頁面。選擇 linux, x86-64, ubuntu, 16.04, runfile(local)

1.2 下載cuDNN 進入cudnn的下載頁,壹堆調查,日誌寫時下載的是[Download cuDNN v5 (May 27, 2016), for CUDA 8.0 RC],點開選linux,不出意外的話這個就是下載地址.

2 確認GCC版本,安裝依賴庫

確認本機gcc版本,16.04默認的是gcc 5,這裏安裝需要的最高是gcc 4.9。接下來就安裝配置gcc 4.9.

2.1 安裝gcc 4.9,並修改系統默認為4.9

sudo apt-get install gcc-4.9 gcc-4.9 g++-4.9 g++-4.9

gcc --version

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 10

sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30

sudo update-alternatives --set cc /usr/bin/gcc

sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30

sudo update-alternatives --set c++ /usr/bin/g++

gcc --version

2.2 壹個小依賴

sudo apt-get install freegl

3 安裝CUDA

需要註意的是這個地方有個選擇安裝低版本驅動的地方,選n 大致的安裝流程如下:

3.1 安裝CUDA

chmod ?+x /cuda_8.0.27_linux.run

./cuda_8.0.27_linux.run

....

Do you accept the previously read EULA?

accept/decline/quit: accept

Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?

(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

Enter CUDA Samples Location

[ default is /home/h ]: /home/h/Documents/cuda_samples

....

3.2 寫入環境變量

vim ~/.bashrc

#添加下面變量

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

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

3.3 安裝好後簡單驗證

a. 進入剛配置時指定的cuda sample所在文件夾,NVIDIA_CUDA-8.0_Samples/

b. cd 0_Simple/asyncAPI;sudo make

c. NVIDIA_CUDA-8.0_Samples/0_Simple/asyncAPI$ ./asyncAPI [./asyncAPI] - Starting… GPU Device 0: “GeForce GTX 1080” with compute capability 6.1 CUDA device [GeForce GTX 1080] time spent executing by the GPU: 10.94 time spent by CPU in CUDA calls: 0.19 CPU executed 50591 iterations while waiting for GPU to finish

4 安裝cuDNN

h@h:~/Downloads$ tar xvzf cudnn-8.0-linux-x64-v5.0-ga.tgz

cuda/include/cudnn.h

cuda/lib64/libcudnn.so

cuda/lib64/libcudnn.so.5

cuda/lib64/libcudnn.so.5.0.5

cuda/lib64/libcudnn_static.a

h@h:~/Downloads$ sudo cp -R cuda/lib64 /usr/local/cuda/lib64

h@h:~/Downloads$ sudo mkdir -p /usr/local/cuda/include

h@h:~/Downloads/cuda$ sudo cp include/cudnn.h /usr/local/cuda/include/

sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

5 clone, configure tensorflow

5.1 clone源碼

$ git clone

5.2 configure配置

整個配置流程應該跟下面的基本壹樣的

h@h:~/Downloads/tensorflow$ cd ./tensorflow/

h@h:~/Downloads/tensorflow$ ./configure

Please specify the location of python. [Default is /usr/bin/python]:

***Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N***

No Google Cloud Platform support will be enabled for TensorFlow

***Do you wish to build TensorFlow with GPU support? [y/N] y***

GPU support will be enabled for TensorFlow

Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:

**Please specify the location where CUDA ?toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-8.0 **

**Please specify the Cudnn version you want to use. [Leave empty to use system default]: 5.0.5**

**Please specify the location where cuDNN 5.0.5 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-8.0]: /usr/local/cuda**

Please specify a list of comma-separated Cuda compute capabilities you want to build with.

You can find the compute capability of your device at:

**Please note that each additional compute capability significantly increases your build time and binary size.

[Default is: "3.5,5.2"]: 6.1**

Setting up Cuda include

Setting up Cuda lib64

Setting up Cuda bin

Setting up Cuda nvvm

Setting up CUPTI include

Setting up CUPTI lib64

Configuration finished

6 編譯安裝

6.1 編譯工具Bazel安裝配置?

先看壹眼文檔?然後就執行下面的流程:

#安裝java 1.8

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java8-installer

#安裝好後車參考下

java -version

#添加源

echo "deb [arch=amd64] stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list

curl | sudo apt-key add -

#下載

sudo apt-get update && sudo apt-get install bazel

#升級

sudo apt-get upgrade bazel

6.2 編譯tensorflow的pip版本並安裝

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

# To build with GPU support:

$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

# The name of the .whl file will depend on your platform.

#註意編譯完成後生成的文件名字和官方doc裏面的是不壹定壹致的

$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.*-linux_x86_64.whl

i6700k 32g編譯時間:

只編譯代碼不帶pip INFO: Elapsed time: 967.271s, Critical Path: 538.38s

bazel-bin/tensorflow/tools/pip_package/build_pip_package INFO: Elapsed time: 65.183s, Critical Path: 48.58

7 最後測試

前面都整完了,現在該測試了,註意前面有兩個動態鏈接庫的位置,cuDNN在/usr/local/cuda/lib64, 而cuda在/usr/local/cuda-8.0/lib64,所以這個時候的bashrc應該這麽寫:

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

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

寫完後,

source ~/.bashrc

cd tensorflow/tensorflow/models/image/mnist

python convolutional.py

成功的話會出現流暢的跑動:

h@h:~/Downloads/tensorflow/tensorflow/models/image/mnist$ python convolutional.py

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.so locally

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.so.5.0.5 locally

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.so locally

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcuda.so.1 locally

I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcurand.so locally

Extracting data/train-images-idx3-ubyte.gz

Extracting data/train-labels-idx1-ubyte.gz

Extracting data/t10k-images-idx3-ubyte.gz

Extracting data/t10k-labels-idx1-ubyte.gz

I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero

I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:

name: GeForce GTX 1080

major: 6 minor: 1 memoryClockRate (GHz) 1.8475

pciBusID 0000:01:00.0

Total memory: 7.92GiB

Free memory: 7.41GiB

I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0

I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: ? Y

I tensorflow/core/common_runtime/gpu/gpu_device.cc:838] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)

Initialized!

Step 0 (epoch 0.00), 8.4 ms

Minibatch loss: 12.054, learning rate: 0.010000

Minibatch error: 90.6%

Validation error: 84.6%

......

Minibatch error: 0.0%

Validation error: 0.7%

Step 8500 (epoch 9.89), 4.7 ms

Minibatch loss: 1.601, learning rate: 0.006302

Minibatch error: 0.0%

Validation error: 0.9%

Test error: 0.8%

  • 上一篇:什麽是ETL調度系統?
  • 下一篇:如何在網上查詢兒童核酸檢測結果?
  • copyright 2024編程學習大全網