**
Ubuntu16.04 LTS 安裝NVIDIA驅動的辛酸史!
**
筆者小白經歷了從入門到放棄,堅持到成功的大起大落,決定寫一些東西記錄一下這一路爬過的坑!
廢話不多說,直奔主題,
在跑代碼的程序中發現無法呼叫GPU,于是輸入 nvidia-smi命令查看GPU資訊,結果報錯!
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
于是憨憨的打開Ubuntu附加驅動,如圖:


選擇了nvidia-430(開源),應用更改,結果回圈登陸!(果然最簡單的方法最不靠譜!千萬別點應用更改),
第一次遇到這種問題可把筆者嚇壞了,到處搜解決方案,找師兄幫忙- -
其實回圈登陸不要慌,刪掉之前安裝的NVIDIA驅動就OK了!
ALT+CTRL+F2進入命令列模式:
這里會關閉圖形界面進入命令列如圖:

輸入用戶名和密碼,注意大小寫,鍵盤可能不顯示大寫!
卸載英偉達驅動并重啟
1 | sudo apt-get remove --purge nvidia-*
這里有個坑:sudo命令后會讓輸入密碼,當時有四個菱形的東西一直閃,我就一直在等,其實是讓你輸密碼呢!
1 | sudo apt-get autoremove #重要,洗掉安裝的nvidia相關一切程式,并不保留組態檔
1 | sudo apt-get install -f #重要,把安裝時添加的相關依賴包全刪了
1 | sudo reboot
重啟后可以順利登入,回圈登陸解決!
但現在只是從一個坑里爬出來,顯卡驅動依舊沒有安裝,
安裝驅動
首先在 官網下載你自己顯卡對應的驅動NVIDIA-Linux-x86_64-xxx.xx.run,拷貝到Linux的/home/目錄后可以先改個簡單點的名字如:NVIDIA-Linux-450.run,然后再更改權限:
1 | sudo chomod 777 NVIDIA-Linux-450.run
禁用nouveau驅動
#修改blackilist.conf檔案
sudo vim /etc/modprobe.d/blacklist.conf
#增加內容
blacklist nouveau
options nouveau modeset=0
#使其生效
sudo update-initramfs -u
#重啟機器
sudo reboot
#驗證是否禁用nouveau
lsmod| grep nouveau #如沒有輸出,說明禁用成功
臨時關閉顯示服務
1 | sudo service lightdm stop
運行安裝程式
1 | sudo ./NVIDIA-Linux-450.run --no-x-check --no-nouveau-check --no-opengl-files
–no-x-check 非必須引數,表示安裝驅動時不檢查X服務
–no-nouveau-check 非必須引數,表示安裝驅動時不檢查nouveau
–no-opengl-files 必須引數,表示僅安裝驅動檔案,不安裝OpenGL檔案
這里改為自己的.run檔案名字即可
安裝程序中的選項:
The distribution-provided pre-install script failed! Are you sure you want to continue? 選擇 yes 繼續,
Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 選擇 No 繼續,
問題大概是:Nvidia’s 32-bit compatibility libraries? 選擇 No 繼續,
Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 選擇 Yes 繼續
這些選項如果選擇錯誤可能會導致安裝失敗,沒關系,只要前面不出錯,多嘗試幾次就好,
安裝后再重啟顯示
1 | sudo service lightdm start
檢查驅動是否安裝成功:
1 | nvidia-smi
出現下圖表示驅動安裝成功!

接下來是我一直糾結的東西…
終端輸入nvidia-settings不能正常輸出!如圖:

圖形界面也無法顯示顯卡資訊:

可是nvidia-smi可以正常顯示顯卡資訊啊! 于是我開始瘋狂的重裝NVIDIA驅動,嘗試各個版本,都是一樣的錯誤,最后沒辦法向老師求助- - 老師去聯系廠家,請求專家來幫忙解決問題,碰巧的是一個學長給我推過來一個專門安裝服務器的專家,加上vx聊了以后發現和老師聯系的是一個專家!
專家話不多說上來遠程連接一頓操作,四塊gpu發動起來了,風扇聲很大!
專家說nvidia-settings 一般是接獨顯,還要組態檔是獨顯的才能顯示,而且圖形界面不顯示顯卡資訊也是正常的!
驅動沒問題!gpu可以呼叫!
不用管nvidia-settings報錯和圖形界面顯示不顯示,只要nvidia-smi可以正常輸出就可以!
知道gpu可以呼叫,但我的代碼還是不呼叫gpu - -
一番搜索后發現原來是CUDA和cuDNN有問題!
根據下面這篇博文選擇CUDA以及cuDNN版本
tensorflow各個版本的CUDA以及Cudnn版本對應關系
根據下面這篇博文修改組態檔
ubuntu18.04 tensorflow-gpu1.13+cuda10.0+cudnn7.5安裝配置
最后通過終端輸入nvidia-smi查看顯卡資訊,nvcc -V查看CUDA資訊,cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 查看cuDNN資訊,
筆者最終安裝的版本資訊:
Driver Version: 450.57
CUDA-10.0
cuDNN-7.5.0
tensorflow-gpu==1.13.1
在pycharm下運行代碼成功呼叫gpu!

終于!!
雖然這次安裝驅動配置環境道路曲折,但筆者也確實積累了一些知識,努力了還是有結果的,堅持還是很重要的,遇到問題多想多問,問題總會解決,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225455.html
標籤:其他
