Ubuntu18.04LTS下cuda10.0+cudnn7.5+TensorFlow1.13環境搭建

目錄

  • 前言
  • 開發環境一覽
  • 顯卡驅動安裝
  • 下載驅動
  • 禁用nouveau
  • 安裝驅動
  • 安裝CUDA10.0
  • 第一個CUDA程序
  • 安裝cudnn7.5
  • 安裝TensorFlow1.13
  • 最後

前言

以前寫過cuda環境的搭建文章, 此次乾脆補全整個深度學習環境的搭建.python


開發環境一覽

  • CPU: Intel core i7 4700MQ
  • GPU: NVIDIA GT 750M
  • OS: UBUNTU 18.04.1LTS 64位

用指令看下英偉達顯卡:linux

lspci | grep -I nvidia
複製代碼

NVIDIA GT 750M

當你搭建完成環境以後, 能夠用代碼查看硬件信息, 本身寫或者官方的例子, 個人NVIDIA GT 750M信息顯示以下圖, 固然能夠直接到英偉達官網查看顯卡信息. 這張信息表目前看來就是些參數, 可是後續的並行算法不少時候是依據這些參數來設計的:算法

顯卡信息

官方例子顯卡信息


顯卡驅動安裝

千萬不要用UBUNTU附加驅動裏提供的顯卡驅動!!! 千萬不要用UBUNTU附加驅動裏提供的顯卡驅動!!! 千萬不要用UBUNTU附加驅動裏提供的顯卡驅動!!! 通常來講, 你會遇到一些奇怪的問題, 固然, 錦鯉是不會出問題的(手動滑稽). 這是第一個坑點, 大致有三種展示方式:ubuntu

  • 裝完重啓進不去系統, 卡住ubuntu加載頁面;
  • 無限登陸;
  • 裝好了, 進入了系統, 而後輸入nvidia-smi指令沒有任何反應. 正常狀況會彈出一張表, 以下所示:

nvidia-smi


下載驅動

行了, 來講說個人實操: 首先到官網下載顯卡驅動, 比方說我是GT 750M, 操做系統是64位Linux, 我就找對應的版本進行下載.vim

下載驅動

下載驅動

刪掉以往的驅動. 注意, 就算你啥都沒裝, 這步也是無害的.bash

sudo apt-get remove --purge nvidia*
複製代碼

更新並安裝一些須要的庫, 先裝這麼多, 以後裝CUDA還有一波.ionic

sudo apt-get update
sudo apt-get install dkms build-essential linux-headers-generic
複製代碼

禁用nouveau

打開blacklist.conf, 在最後加入禁用nouveau的設置, 這是一個開源驅動, 如圖所示:學習

sudo vim /etc/modprobe.d/blacklist.conf
複製代碼
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
複製代碼

禁用nouveau

禁用nouveau內核模塊測試

echo options nouveau modeset=0
sudo update-initramfs -u
複製代碼

重啓. 若是運行以下指令沒用打印出任何內容, 恭喜你, 禁用nouveau成功了.ui

lsmod | grep nouveau
複製代碼

安裝驅動

~~來到tty1(快捷鍵ctrl + alt + f1,若是沒反應就f1-f7一個個試, 不一樣Linux, 按鍵會略有不一樣). 運行以下指令關閉圖形界面.~~我在ubuntu18.04.1LTS是ctrl + alt + f3-f6. 而後注意, 如下指令適用於16.04及之前.

sudo service lightdm stop
複製代碼

這不適用於18.04. 18.04能夠以下操做:

  • 關閉用戶圖形界面
sudo systemctl set-default multi-user.target
sudo reboot
複製代碼
  • 開啓用戶圖形界面
sudo systemctl set-default graphical.target
sudo reboot
複製代碼

安裝驅動, 注意有坑, 必定要加**-no-opengl-files**, 不加這個就算安裝成功, 也會出現無限登陸問題. 可是在最近幾回安裝環境的時候, 例如系統是18.04, 驅動是418.43, 這個參數變得無效. 因此若是不能開啓安裝頁面, 能夠去掉此參數.

sudo chmod u+x NVIDIA-Linux-x86_64-390.87.run 
sudo ./NVIDIA-Linux-x86_64-390.87.run –no-opengl-files
複製代碼

安裝驅動

安裝驅動

若是你已經裝了, 可是沒有加**-no-opengl-files**, 按照以下操做能夠救一下. 或者你安裝失敗了, 有些庫缺乏了之類的, 能夠用如下命令卸載乾淨重來.

sudo ./NVIDIA-Linux-x86_64-390.87.run –uninstall
複製代碼

順帶一提, 可能會彈出Unable to find a suitable destination to install 32-bit compatibility libraries on Ubuntu 18.04 Bionic Beaver Linux的bug, 而後你須要下面三條指令:

sudo dpkg --add-architecture i386
sudo apt update
sudo apt install libc6:i386
複製代碼

而且中途的選項都選no比較好, 指不定卡死在安裝哪一個奇怪的東西上.

重啓. 用nvidia-smi指令試一下, 若是看到相似下圖, 恭喜你, 驅動安裝成功. 或者看到附加驅動顯示繼續使用手動安裝的驅動.

nvidia-smi

安裝以後在軟件和更新當中會顯示以下圖:

附加驅動


安裝CUDA10.0

先來補庫.

sudo apt-get install freeglut3-dev libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
複製代碼

官網下載要的CUDA版本, 我這裏是10.0, 下載runfile(local)版本, 以下圖所示:

安裝CUDA10.0

md5檢測一下, 不合格要從新下載. 下圖是個人檢測結果:

md5sum cuda_10.0.130_410.48_linux.run
複製代碼

md5

再次關閉圖形界面

sudo service lightdm stop
複製代碼

這不適用於18.04. 18.04能夠以下操做:

  • 關閉用戶圖形界面
sudo systemctl set-default multi-user.target
sudo reboot
複製代碼
  • 開啓用戶圖形界面
sudo systemctl set-default graphical.target
sudo reboot
複製代碼

安裝時候依舊要加**-no-opengl-files**參數, 以後一路默認就好. 最好不要安裝與OpenGL相關的.

sudo sh cuda_10.0.130_410.48_linux.run –no-opengl-files
複製代碼

安裝過程

而後會看到三個installed.

安裝成功

添加環境變量

vim ~/.bashrc
複製代碼

最後寫入:

export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
複製代碼

保存退出, 並其生效.

source ~/.bashrc
複製代碼

運行一些檢測命令, 若是和我顯示的相似, 恭喜你, 環境配置完成.

cat /proc/driver/nvidia/version
複製代碼
nvcc -V
複製代碼

環境檢測

能夠跑一下英偉達提供的學習案例:

deviceQuery


第一個CUDA程序

以前在開發環境部分展現過一個小栗子, 來看看具體代碼吧~

vim Device.cu
複製代碼
#include <stdio.h>
int main() {
        int nDevices;

        cudaGetDeviceCount(&nDevices);
        for (int i = 0; i < nDevices; i++) {
                cudaDeviceProp prop;
                cudaGetDeviceProperties(&prop, i);
                printf("Device Num: %d\n", i);
                printf("Device name: %s\n", prop.name);
                printf("Device SM Num: %d\n", prop.multiProcessorCount);
                printf("Share Mem Per Block: %.2fKB\n", prop.sharedMemPerBlock / 1024.0);
                printf("Max Thread Per Block: %d\n", prop.maxThreadsPerBlock);
                printf("Memory Clock Rate (KHz): %d\n",
                   prop.memoryClockRate);
                printf("Memory Bus Width (bits): %d\n",
                   prop.memoryBusWidth);
                printf("Peak Memory Bandwidth (GB/s): %.2f\n\n",
                   2.0 * prop.memoryClockRate * (prop.memoryBusWidth / 8) / 1.0e6);
        }
        return 0;
}
複製代碼
nvcc Device.cu -o Device.o
複製代碼
./Device.o
複製代碼

第一個CUDA程序


安裝cudnn7.5

首先到官網去下載勾選的4個:

cudnn7.5

而後解壓tgz包, 複製文件到cuda環境, 接着安裝deb包.

tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz
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 /usr/local/cuda/lib64/libcudnn*

sudo dpkg -i libcudnn7_7.5.0.56-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.5.0.56-1+cuda10.0_amd64.deb
複製代碼

這樣就完成安裝了, 用個小栗子來測試下吧, 結果如圖示:

cp -r /usr/src/cudnn_samples_v7/ ~
cd ~/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
複製代碼

結果


安裝TensorFlow1.13

很遺憾個人GPU算力只有3.0, 最低要求是3.5, 不過這裏仍是安裝一下tf, 當作練手了.

sudo apt-get install python-pip python3-pip python-dev
sudo pip3 install tensorflow-gpu
複製代碼

安裝圖示

能夠用以下python代碼查詢版本號和路徑:

#!/usr/bin/python3
import tensorflow as tf

print (tf.__version__)
print (tf.__path__)
複製代碼

image.png

最後我給出一個測試例子, 可是很遺憾, 我是沒法運行的.

#!/usr/bin/python3

import tensorflow as tf
# Just disables the warning, doesn't enable AVX/FMA
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

hello = tf.constant("Hello, tf!")
sess = tf.Session()
printf (sess.run(hello))
複製代碼

效果圖


最後

喜歡記得點贊哦, 有意見或者建議評論區見~

相關文章
相關標籤/搜索