Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢

文章目錄

  • Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢
    • 一、檢查NVIDIA驅動是否安裝成功
    • 二、檢查CUDA是否安裝成功
    • 三、安裝cuDNN
      • 1. 確定版本
      • 2. 下載安裝包
      • 3. 解壓安裝
      • 4. 安裝libcupti
    • 四、安裝Tensorflow
      • 1. 確定版本
      • 2. 安裝pip
      • 3. 安裝Tensorflow
      • 4. 檢查是否正常運行
    • 五、錯誤解決
      • 1. so文件找不到的錯誤
      • 2. 安裝Tensorflow時報錯
      • 3. error: invalid command 'bdist_wheel'

Ubuntu18.04安裝cuDNN和Tensorflow的正確姿勢

本文章主要講解 ubuntu 系統如何正確安裝 cuDNNTensorflow

需要提前準備:

  • 一個安裝好的Ubuntu 18.04
  • NVIDIA 驅動已經安裝成功
  • CUDA已經安裝成功

一、檢查NVIDIA驅動是否安裝成功

打開終端執行:

nvidia-smi
Wed Jul 10 11:49:26 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.26       Driver Version: 430.26       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce RTX 208...  Off  | 00000000:42:00.0  On |                  N/A |
|  0%   42C    P8    17W / 300W |    309MiB / 11011MiB |      0%      Default |
+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1520      G   /usr/lib/xorg/Xorg                            18MiB |
|    0      1626      G   /usr/bin/gnome-shell                          79MiB |
|    0      7641      G   /usr/lib/xorg/Xorg                            95MiB |
|    0      7772      G   /usr/bin/gnome-shell                         113MiB |
+----------------------------------------------------------------------------

如果出現上面的結果說明成功。如果沒有安裝請參考這篇文章Linux安裝NVIDIA顯卡驅動的正確姿勢或這篇文章Ubuntu 18.04安裝NVIDIA(英偉達) RTX2080Ti顯卡進行安裝。

二、檢查CUDA是否安裝成功

關于 CUDA 的安裝可以參考
Linux安裝CUDA的正確姿勢這篇文章。

打開終端執行:

nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Apr_24_19:10:27_PDT_2019
Cuda compilation tools, release 10.1, V10.1.168

說明CUDA的命令已經安裝成功。接下來測試案例是否能夠正常運行。

#編譯并測試設備 deviceQuery:
cd /usr/local/cuda-9.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery#編譯并測試帶寬 bandwidthTest:
cd ../bandwidthTest
sudo make
./bandwidthTest

如果這兩個測試的最后結果都是Result = PASS,說明 CUDA 安裝成功啦。

三、安裝cuDNN

1. 確定版本

在安裝之前需要參考與Tensorflow的支持關系,可以通過這個網址查看。

在這里插入圖片描述

因為目前本地安裝的環境如下:

  • Ubuntu 18.04
  • NVIDIA Driver 430.26
  • CUDA 10.1

所以推薦安裝 cuDNN 7.6.0 版本,并配合 Tensorflow 1.13.0/1.14.0 都可以。

2. 下載安裝包

下載地址可以在NVIDIA官網下載。要下載 cuDNN Library for Linux這項。

在這里插入圖片描述

3. 解壓安裝

打開終端執行:

tar -zxvf cudnn-10.1-linux-x64-v7.6.0.64.tgz
sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-10.1/lib64/
sudo cp  cuda/include/cudnn.h /usr/local/cuda-10.1/include/# 為所有用戶設置讀取權限
sudo chmod a+r /usr/local/cuda-10.1/include/cudnn.h sudo chmod a+r /usr/local/cuda-10.1/lib64/libcudnn*

4. 安裝libcupti

這是 NVIDIA CUDA 分析工具接口,此庫提供高級分析支持。

打開終端執行:

sudo apt-get install libcupti-dev

四、安裝Tensorflow

1. 確定版本

由于上一步我們選擇安裝了 cnDNN 7.6.0 并且是配合 CUDA 10.1,所以從這個網址我們可以得知,可以安裝最高版本 Tensorflow 1.13.0。

2. 安裝pip

大家可以根據實際情況進行選擇是安裝 pip 還是 pip3,本文以 pip3 為例子。

sudo apt-get install python3-dev python3-pip

此時 pip3 已經安裝成功。

3. 安裝Tensorflow

終端執行:

pip3 install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.12.0-cp36-cp36m-linux_x86_64.whl

關于下載的連接可以參考官方網址。

此步驟可能會很慢,如果有代理的可以提前設置好代理。

4. 檢查是否正常運行

以下兩個測試可以直接在終端內復制執行。

測試 1:

python3 -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

測試 2:

python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()"

如果以上兩條返回的內容中都沒有錯誤,代表Tensorflow安裝成功。

五、錯誤解決

1. so文件找不到的錯誤

錯誤例子如下:

2019-07-10 11:26:57.200271: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Could not dlopen library 'libcublas.so.10.0'; dlerror: libcublas.so.10.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64::/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib64{LD_LIBRARY_PATH:+:/usr/local/cuda-10.1/lib64{LD_LIBRARY_PATH:+:/usr/local/cuda-10.1/lib64}}:/usr/local/cuda-10.1/lib64:/usr/local/cuda-10.1/lib

主要錯誤信息為Could not dlopen library 'libcublas.so.10.0'。造成這樣的原因是鏈接文件不對造成的。

這種問題很好解決,下面我羅列一些常發生這樣錯誤的so文件解決辦法,首先大家要確定報錯的so文件名稱是什么,例如上面報錯的是libcublas.so.10.0這個文件,那么就找到對應的libcublas庫文件,然后在/usr/local/cuda-10.1/lib64/目錄下創建一個bcublas.so.10.0連接文件即可。

一般缺失的so文件都在/usr/local/cuda-10.1/lib64/目錄下,有一些特別的在/usr/lib/x86_64-linux-gnu/目錄下。

  • libcudart
    sudo ln -s /usr/local/cuda-10.1/lib64/libcudart.so.10.1 /usr/local/cuda-10.1/lib64/libcudart.so.10.0
    
  • libcufft
    sudo ln -s /usr/local/cuda-10.1/lib64/libcufft.so.10.1.168 /usr/local/cuda-10.1/lib64/libcufft.so.10.0
    
  • libcurand
    sudo ln -s /usr/local/cuda-10.1/lib64/libcurand.so.10.1.168 /usr/local/cuda-10.1/lib64/libcurand.so.10.0
    
  • libcusolver
    sudo ln -s /usr/local/cuda-10.1/lib64/libcusolver.so.10.1.168 /usr/local/cuda-10.1/lib64/libcusolver.so.10.0
    
  • libcusparse
    sudo ln -s /usr/local/cuda-10.1/lib64/libcusparse.so.10.1.168 /usr/local/cuda-10.1/lib64/libcusparse.so.10.0
    
  • libcublas
    sudo ln -s /usr/lib/x86_64-linux-gnu/libcublas.so.10.2.0.168 /usr/local/cuda-10.1/lib64/libcublas.so.10.0
    
    如果 /usr/lib/x86_64-linux-gnu/目錄下沒有libcublas庫,可以在/usr/local/cuda10.1/targets/x86_64-linux/lib/查找libcublas庫。

2. 安裝Tensorflow時報錯

python setup.py egg_info

如果錯誤如下:

    Complete output from command python setup.py egg_info:Traceback (most recent call last):File "<string>", line 1, in <module>ModuleNotFoundError: No module named 'setuptools'----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-szai5bvj/absl-py/

解決辦法為安裝setuptools

pip3 install --upgrade setuptools

然后重新安裝Tensorfow。

3. error: invalid command ‘bdist_wheel’

如果遇到此錯誤:

pip3 install wheel

然后重新安裝Tensorfow。


END

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535945.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535945.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HttpServletResponse應用 的 簡單介紹

HttpServletResponse是專門用于HTTP協議的ServletResponse接口&#xff0c;它用于封裝HTTP響應消息&#xff0c;允許操控HTTP協議相關數據&#xff0c;包括響應頭和狀態碼&#xff0c;支持Cookies和session跟蹤&#xff0c;HttpServletResponse也定義了一系列用于描述各種HTTP狀…

移動站應該嘗試百度MIP的五個原因

MIP 是什么&#xff1f;MIP 是百度在 2016 年提出的移動網頁加速器項目。 MIP 能做什么&#xff1f;MIP 能幫助站長和網站開發者快速搭建移動端頁面。 MIP 怎么加速&#xff1f;MIP 從前端渲染和頁面網絡傳輸兩方面進行優化&#xff0c;杜絕頁面渲染中的阻塞問題&#xff0c;…

Vim從理解到應用

1991 年&#xff0c;來自荷蘭的一名工程師 Bram Moolenaar 為了在他的Amiga計算機上復制Vi的功能&#xff0c;正式發布 了Vim的第一個版本。在當時無論誰也沒想到&#xff0c;這款軟件未來能在技術圈爆發出那么大的威力&#xff0c;為千千萬萬的工程師節省了無數時間&#xff0…

如何用百度MIP快速搭建體驗友好的移動頁面

在讀這篇文章之前&#xff0c;請確定你已經了解 MIP 定義及加速原理。如果不確定的話&#xff0c;可以到 MIP 官網了解。 改造前期準備和注意事項: 你可以選擇直接將原先的移動站點直接改成 MIP 站&#xff0c;也可以單獨再做一套 MIP 站點與移動站并存。 復雜的頁面暫不建議…

JAVA知識基礎(一):數據類型

在我們學習一門編程語言時&#xff0c;最先要了解的就是數據類型&#xff0c;而數據類型又都是抽象的概念&#xff0c;初學者理解起來比較困難&#xff0c;所以我們往往是先應用再理解&#xff0c;但是在本篇文章我決定用先理解再應用的方式嘗試一下&#xff0c;試試效果。 1、…

百度MIP移動頁面加速——不只是CDN

MIP 是用 CDN 做加速的么&#xff1f;準確答案是&#xff1a;是&#xff0c;但不只是。 MIP 全稱 Mobile Instant Pages&#xff0c;移動網頁加速器&#xff0c;是百度提出的頁面加速解決方案。MIP 從前端渲染和頁面網絡傳輸兩方面進行優化&#xff0c;杜絕頁面渲染中的阻塞問…

JAVA知識基礎(二):基本語法

本篇主要介紹JAVA的運算符、循環結構以及條件結構。 1、JAVA運算符 計算機的最基本用途之一就是執行數學運算&#xff0c;作為一門計算機語言的Java也提供了一套豐富的運算符來操縱變量。 JAVA運算符可以大致概括為幾類&#xff1a;算術運算符、關系運算符、位運算符、邏輯運…

JAVA知識基礎(三):修飾符

JAVA中根據修飾對象的不同可以分為類修飾符、方法修飾符、變量修飾符三類&#xff0c;其中每種修飾符又可以單獨分成兩類&#xff1a;訪問修飾符和非訪問修飾符。為了便于理解&#xff0c;本文以訪問和非訪問的角度展開。 1、訪問修飾符 訪問修飾符有四個&#xff1a;public、…

百度推出新技術 MIP,網頁加載更快,廣告呢?

MIP 項目在 2016 年年初正式發布&#xff0c;幫助移動頁面加速&#xff08;原理&#xff09;。內測數據表明&#xff0c;MIP 頁面在 1s 內加載完成。現在已經有十多家網站加入 MIP 項目&#xff0c;有更多的網站正在加入中。在MIP收到的反饋中&#xff0c;大部分都提到了廣告的…

JAVA知識基礎(四):深入理解static關鍵字

1、static存在的主要意義 static的主要意義是在于創建獨立于具體對象的域變量或者方法。以致于即使沒有創建對象&#xff0c;也能使用屬性和調用方法&#xff01; static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置于類中的任何地方…

MIP改造常見問題二十問

在MIP推出后&#xff0c;我們收到了很多站長的疑問和顧慮。我們將所有疑問和顧慮歸納為以下二十個問題&#xff0c;希望對大家理解 MIP 有幫助。 1、MIP 化后對其他搜索引擎抓取收錄以及 SEO 的影響如何&#xff1f; 答&#xff1a;在原頁面 MIP 化&#xff0c;不會影響其它搜…

Nginx(零):背景

我們今天開始對Nginx的學習&#xff0c;本來是打算第一篇就是基礎知識介紹的&#xff0c;但是我感覺在學習一個新知識之前總應該知道&#xff0c;我們為什么要學習它&#xff0c;學習它的意義何在吧&#xff01;所以我加了背景這一篇作為Nginx開始學習的標志。 1、Nginx的誕生…

Nginx(一):概念基礎

上一篇我們介紹了Nginx的背景&#xff0c;現在我們就要開始正式對Nginx的學習了。本篇我們將對Nginx的基本定義進行介紹&#xff0c;了解Nginx到底是什么。然后我們會介紹Nginx最基本的三個概念&#xff1a;反向代理、負載均衡、動靜分離。 1、Nginx是什么 Nginx(“engine x”…

MIP 官方發布 v1穩定版本

近期&#xff0c;MIP 官方發布了 MIP 系列文件的全新 v1 版本&#xff0c;建議開發者盡快完成升級。 一、 我是開發者&#xff0c;如何升級版本&#xff1f; 對于 MIP 頁面開發者來說&#xff0c;* 只需替換線上引用的 MIP 文件為 v1 版本 *&#xff0c;就可以完成升級。所有…

百度MIP頁規范詳解 —— canonical標簽

百度 MIP 的規范要求必須添加強制性標簽 canonical&#xff0c;不然 MIP 校驗工具 會報錯&#xff1a; 強制性標簽 <link rel"/^(canonical)$/"> 缺失或錯誤 這個標簽怎么寫&#xff1f;又是干什么用的呢&#xff1f; ** 簡單來說&#xff0c;canonical 標簽…

Nginx(二):安裝、配置、常用命令

1、Nginx在Linux操作系統中的安裝 這里簡單介紹一下nginx的安裝了 1.1、前期準備 在安裝nginx之前我們要提前準擺好它的編譯工具以及庫文件&#xff1a;zlib、poenssl。 還有有讓Nginx支持Rewrite功能的PCRE. 安裝的途徑有很多可以參考&#xff1a;https://www.runoob.com/lin…

JAVA知識基礎(五):深入理解final關鍵字

1.final 關鍵字 final關鍵字主要用在三個地方&#xff1a;變量、方法、類。 final修飾變量&#xff1a;final修飾一個類時&#xff0c;表明這個類不能被繼承。final修飾方法&#xff1a;final修飾方法&#xff0c;方法不可以重寫&#xff0c;但是可以被子類訪問 【前提&#…

CMS模板應用調研問卷

截止目前&#xff0c;已經有數十家網站與我們合作&#xff0c;進行了MIP化改造&#xff0c;在搜索結果頁也能看到“閃電標”的出現。除了改造方面的問題&#xff0c;MIP項目組被問到最多的就是&#xff1a;我用了wordpress&#xff0c;我用了織夢cms&#xff0c;怎么改MIP呢&am…

Nginx(三):反向代理

我們本篇將通過兩個實例進行對Nginx反向代理的學習。 1、概念基礎 反向代理&#xff0c;其實客戶端對代理是無感知的&#xff0c;因為客戶端不需要任何配置就是可以訪問。我們只需要將請求發送到反向代理服務器上&#xff0c;有反向代理服務器去選擇目標服務器獲取數據后&…

VIP站長大會(北京站)常見問題解答

功能支持問題 1. react 能否和 MIP 結合使用&#xff0c;如果暫時不能以后是否有考慮&#xff1f;是否會和其他 JavaScript 框架 (比如 Angular ) 結合 ? 目前暫無計劃支持。 2. MIP 頁是否支持自定義 cookie? 實現 登錄、統計、廣告等功能 ? <mip-cookie>組件正在…