Nvidia, Cuda安裝
Posted on June 7, 2020 • 4 minutes • 1523 words
因為deep learning的套件更新速度很快,有時更新DL套件後相對應的cuda, nvidia driver也需要重新安裝,因此在這邊紀錄一下如何install, uninstall這些東西update at 2020 2/26 by JasonLuo test on Ubuntu 16.04 install Nvidia Driver 440.59, Cuda 10.1, Cudnn 7.6.5 compatible with tensorflow-gpu 2.1
Nvidia Driver
安裝之前
- 首先,檢查顯卡是否可用
lspci -nnk | grep -i nvidia
,應出現下面這些
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b82] (rev a1)
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10f0] (rev a1)
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b82] (rev a1)
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
02:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10f0] (rev a1)
-
檢查是否已有安裝driver,可使用nvidia-smi或是dpkg -l ‘nvidia*‘檢查
-
nvidia-smi
除了可以檢查是否有安裝,同時也可以看到一些資訊(使用數據量,driver版本等) -
dpkg -l nvidia*
-
-
下載Nvidia Driver,到官網下載
解安裝Nvidia Driver
- 解除安裝之前先進入command prompt然後stop running Graphics session (此步驟可省略)
- 按下
[Ctrl]+[Alt]+[F1~F6]
然後登入作業系統 - 關閉Graphics Session
sudo service lightdm stop
(For Ubuntu)
- 按下
- 卸載Nvidia Driver,下面三個步驟選其中一個
- sudo apt-get purge nvidia*
- sudo /usr/bin/nvidia-uninstall
- sudo NVIDIA-Linux-x86_64-418.43.run –uninstall
- 重新開機
reboot
安裝Nvidia Driver
-
安裝之前先進入command prompt然後stop running Graphics session
- 按下
[Ctrl]+[Alt]+[F1~F6]
然後登入作業系統 - 關閉Graphics Session
sudo service lightdm stop
(For Ubuntu)
- 按下
-
安裝Nvidia Driver
sudo chmod +x NVIDIA-Linux-x86_64-XXX.run
(在官網下載的檔案)sudo NVIDIA-Linux-x86_64-XXX.run
-
重新啟動電腦
reboot
-
確認套件是否已經安裝
dpkg -l nvidia*
nvidia-smi
Cuda
安裝之前
- 如何確認電腦上的Cuda版本
- cat /usr/local/cuda/version.txt
- nvcc -V
- 下載cuda,到官網下載cuda 10.1,選哪種下載都可以,我這邊是選擇runfile(local) or 用wget
移除Cuda
- 移除舊版cuda,下面選一種(確保沒有/usr/local/cuda-XX.X資料夾)
sudo apt-get --purge remove 'cuda*'
sudo apt-get autoremove --purge cuda
sudo /usr/local/cuda-10.2/bin/cuda-uninstaller
官網上寫的,cuda-10.2換成自己的版本
安裝Cuda
-
開始安裝Cuda (記得先用chmod +x讓檔案可以執行,前面兩種不適用跑_linux檔的)
sudo ./cuda_10.1.105_418.39_linux.run --driver --silent
sudo ./cuda_10.1.105_418.39_linux.run --toolkit --silent
sudo ./cuda_10.1.105_418.39_linux.run --samples --silent
-
注意!! 如果/tmp資料夾容量不夠時會不能安裝,需要給tmpdir=[YourDirectory]的參數,這邊我是給/home/tmp,所以上面的command會變成,同時/home/tmp要是chmod 777:
sudo ./cuda_10.1.105_418.39_linux.run --driver --silent --tmpdir=/home/tmp
sudo ./cuda_10.1.105_418.39_linux.run --toolkit --silent --tmpdir=/home/tmp
sudo ./cuda_10.1.105_418.39_linux.run --samples --silent --tmpdir=/home/tmp
-
安裝時若出現Missing recommended library:libGLU.so,則進行下面命令:
sudo apt-get install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev
-
安裝Cuda之後,需要將cuda路徑加入 ~/.bashrc 當中:
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/64:$LD_LIBRARY_PATH
-
然後,
source ~/.bashrc
-
使用
nvcc -V
檢查是否安裝成功
Cudnn (可以加速的套件)
安裝之前
- 檢查主機上是否有cudnn及版本多少
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
- 從官網下載Cudnn,要下載CuDNN需要登錄,登錄後找尋與已安裝好的cuda版本相容的CuDNN(e.g. cuDNN v7.3.1 Library for Linux)
tensorflow2.0需要v7.6以上的版本
刪除Cudnn
- 刪除相關檔案,通常會在
/usr/local/cuda/include/
和/usr/local/cuda/lib64/
資料夾中sudo rm -f /usr/local/cuda/include/*cudnn*
sudo rm -f /usr/local/cuda/lib64/*cudnn*
安裝cudnn
-
下載之後進行解打包、壓縮
tar -xvf cudnn-10.1-linux-x64-v7.6.5.32.tgz
-
解完打包壓縮之後可以發現有個cuda的文件夾,裡面會有
- cuda/include
- cuda/lib64
- cuda/NVIDIA_SLA_cuDNN_Support.txt
-
複製檔案到cuda資料夾中
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/lib* /usr/local/cuda/lib64/
-
檢測Cudnn - 到cudnn_samples_v7檢測
TensorRT (optional)
跟libnvinfer.so.6, libnvinfer_plugin.so.6的檔案有關
安裝
-
下載TensorRT,同樣也需要先登錄才能下載
-
下載tar文件,並選擇相對應的系統
-
解壓縮tar.gz檔案
tar xzvf TensorRT-XXXXXXXXXXXXXX.tar
-
將路徑加入
LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/TC184610137/TensorRT-4.0.2.6/lib
-
安裝TensorRT, uff, raphsurgeon
cd TensorRT-XXXX/python sudo pip install tensorrt-6.0.1.5-cp36-none-linux_x86_64.whl
## install uff cd TensorRT-XXXX/uff pip install uff-0.6.5-py2.py3-none-any.whl
## install graphsurgeon cd TensorRT-XXXX/graphsurgeon pip install graphsurgeon-0.4.1-py2.py3-none-any.whl
-
測試:
import tensorrt as trt import uff as uff
Ref:
comments powered by Disqus