Dell服務器Ubuntu 18.04 雙顯卡(2080ti)搭建深度學習環境(CUDA 10.1/cuDNN 7.6/Tensorflow 1.14).md


1 安裝顯卡驅動


1.1 BIOS禁用Secure Boot

  • 打開服務器電源,按F2進入Bios設置
  • 在System BIOS ->System Security -> Secure Boot,選擇Disabled,保存退出

1.2 禁用第三方驅動Nouveau

  • 卸載之前安裝的NVIDIA驅動
$ sudo apt-get purge nvidia*
  • 將nouveau加入黑名單內
# 編輯blacklist.conf
$ sudo nano /etc/modprobe.d/blacklist.conf
# 在blacklist.conf的文件的最后手動添加:blacklist nouveau
# 更新內核
$ sudo update-initramfs -u
# 重啟
reboot
# 重啟后驗證nouveau是否被禁用,如果下列語句無輸出,表示禁用成功
lsmod | grep nouveau

1.3 官網下載驅動

1.4 安裝驅動

  • 重啟服務器,進入命令行界面進行安裝。服務器重啟進入到用戶登錄界面時,按CTRL+ALT+F2(F2~F6均可,對應不同的5個終端,F1是圖形界面)進入命令行界面
  • 進入驅動的下載目錄,開始安裝
# 安裝gcc make
$ sudo apt-get install gcc make g++
# 給文件增加可執行權限
$ sudo chmod a+x NVIDIA-Linux-x86_64-430.34.run
# 開始安裝,后面的那個參數表示不安裝OPENGL
$ sudo ./NVIDIA-Linux-x86_64-430.34.run --no-opengl-files
# 安裝完成后,重啟
$ reboot
# 驗證是否安裝成功
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.34       Driver Version: 430.34       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| 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:02:00.0 Off |                  N/A |
| 18%   61C    P0    67W / 250W |      0MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
|   1  GeForce RTX 208...  Off  | 00000000:04:00.0 Off |                  N/A |
| 27%   64C    P0     1W / 250W |      0MiB / 11019MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

2 安裝CUDA 10.1


2.1 下載CUDA安裝文件

  • 進入官網,選擇對應的操作系統版本,建議下載runfile(下載過deb,但是安裝失敗)

2.2 執行安裝

  • 進入下載目錄,執行命令
# 開始安裝
$ sudo sh cuda_10.1.168_418.67_linux.run
# 添加環境變量
$ sudo nano /etc/profile
# 添加以下文本到profile的最后
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
# 保存修改,然后更新環境變量
$ source /etc/profile

2.3 測試CUDA是否安裝成功

  • 編譯CUDA的Sample
cd ~
cp -r /usr/local/cuda-10.1/samples/ .
cd samples/
# make大概要10分鍾左右
make
  • 測試CUDA
cd ./1_Utilities/deviceQuery
./deviceQuery
# 出現如下類似結果,表示成功
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 2 CUDA Capable device(s)
Device 0: "GeForce RTX 2080 Ti"
  CUDA Driver Version / Runtime Version          10.1 / 10.1
  CUDA Capability Major/Minor version number:    7.5
  Total amount of global memory:                 11019 MBytes (11554717696 bytes)
  (68) Multiprocessors, ( 64) CUDA Cores/MP:     4352 CUDA Cores
  GPU Max Clock rate:                            1545 MHz (1.54 GHz)
  Memory Clock rate:                             7000 Mhz

3 安裝cuDNN 7.6


  • 進入官網下載文件,需要注冊后才能下載,https://developer.nvidia.com/cudnn

  • CUDA 10.1對應的cuDNN是7.6,選擇對應版本,下載文件。如下圖:

  • 安裝cuDNN

tar -zxvf cudnn-10.1-linux-x64-v7.6.1.34.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
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
  • 查看cuDNN的版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 輸出結果如下:
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 1
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

4 安裝Anaconda(Python 3.7 version)


$ sudo chmod +x Anaconda3-2019.03-Linux-x86_64.sh
$ sudo bash Anaconda3-2019.03-Linux-x86_64.sh

5 安裝TensorFlow 1.14(GPU版)


  • 安裝TF
# 建議先將conda的源設置為國內的,否則速度太慢
$ conda install tensorflow-gpu==1.14.0

如果出現anaconda3文件無寫入權限的問題(EnvironmentNotWritableError: The current user does not have write permissions to the target environment),可以使用命令對文件夾授權。
sudo chown -R user_name /path/to/anaconda3

  • 測試TF
python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM