ubuntu安裝cuda驅動
為了跑pytorch,在本本上安裝ubuntu雙系統和cuda驅動,踩了很多的坑,前前後後遇到各種問題,參考了很多大神們的教程。因此打算總結一遍,也希望幫後來者減少麻煩。
剛開始屁啥也不懂,參考了部落格http://blog.csdn.net/masa_fish/article/details/51882183的教程。該部落格中提到的NVIDIA官方教程同樣非常重要。基本上是以官方教程為主(畢竟是官方給的說明書,再長還是耐著性子看了下去。。),部落格教程為輔,順順利利安裝成功。
主要分以下幾點需要注意的:
1、檢查是否有可使用cuda的GPU:$ lspci | grep -i nvidia。有返回則OK。
2、檢查Linux版本是否支援:$ uname -m && cat /etc/*release。
3、檢查gcc資訊:gcc --version,返回gcc資訊。
4、檢查是否安裝了kernel header和package development:uname -r指令可以檢視kernel版本資訊
sudo apt-get install linux-headers-$(uname -r)用於更新安裝對應版本的kernel header和package development。
5、禁用nouveau:在終端輸入指令lsmod | grep nouveau。如果有返回則需要禁用nouveau:
在/etc/modprobe.d中建立檔案blacklist-nouveau.conf,並在其中輸入:
blacklist nouveau
options nouveau modeset=0。
開啟終端,輸入指令sudo update-initramfs -u。
這時候再輸入lsmod | grep nouveau,如果沒有返回則表明已經禁用。我測試的時候,仍然有返回,這時重啟計算機後再次輸入,發現已經成功禁用。
以上步驟可以根據NVIDIA官方提供的教程CUDA 官方安裝文件下載 一一核對。
這時根據上面提到的部落格中提供的連結:CUDA 下載連結下載對應的runfile安裝檔案。
開始安裝,alt+ctrl+F1,進入text mode。
輸入sudo service lightdm stop,關閉圖形化介面。
進入到*.run的下載目錄,sudo sh *.run開始安裝。
其中需要注意的,openGL不安裝,其他根據預設項或是選yes。
安裝完成後,sudo service lightdm start。
alt+ctrl+F7,回到圖形化介面。輸入密碼登入。如果不出現迴圈登入的情況,基本上是安裝成功了。
檢查/dev目錄下有沒有nvidia*一系列檔案,如果沒有則按照官方文件上新增。我安裝的時候沒有發現,也不知道怎麼新增,不過似乎不影響使用。
新增環境變數:終端輸入sudo gedit /etc/profile。在最後輸入
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
在終端輸入env,檢查是否將環境變數新增進去。到此,cuda的安裝就告一段落。
安裝完畢後的檢查工作:
1、檢查NVIDIA Driver是否安裝成功。終端輸入cat /proc/driver/nvidia/version會輸出NVIDIA Driver版本號
2、檢查cuda toolkit是否安裝成功:終端輸入nvcc -V檢視cuda的版本資訊
3、嘗試編譯cuda提供的例子:切換到例子存放的路徑,預設路徑為~/NVIDIA_CUDA-*_Samples。然後在終端輸入make。
如果出現錯誤,則會提示。否則將會進行編譯。整個編譯時間很長,十幾分鍾也是要的,所以耐心等待。
上述參考部落格後面還有執行生成的二進位制檔案,太複雜了,我也沒管。也沒影響使用。
接下來開啟終端,輸入python,import torch, torch.cuda.is_available()。看到返回的True,內心無比激動
在第一次使用cuda執行Tensor時,需要編譯較長的一段時間:a=torch.Tensor([1]), a.cuda()。我一開始以為出bug了,這麼簡單的Tensor等了好幾分鐘。後來耐心等待後,可以正常使用。以後每次都挺快的。
============================
後來按照《深度學習入門之pytorch》上教程,安裝cudnn後,發現cuda驅動不能使用了。。按照原方法安裝,報錯為the driver installation is unable to locate the kernel source.根據一些教程和官方說明書,在後面使用'--kernel-source-path' flag來指定kernel source發現仍然不行。
最後採取瞭如下的方法:首先alt+ctrl+F1進入text mode,sudo service lightdm stop。
接下來解除安裝之前可能存在的驅動sudo apt-get --purge nvidia*。
接下來的安裝指令很關鍵,但是也只有短短一行:sudo apt-get install nvidia-(此處狂敲tap),尋找想安裝的版本
耐心等待之後,sudo service lightdm start,輸入密碼,成功登入,沒遇到任何問題。
原目錄下仍然有cuda9.1(我原先安裝的版本)的路徑,以及新的路徑。以防萬一對環境變數/etc/profile進行修改。cat /proc/driver/nvidia/version,也有返回值。似乎問題已經解決了!!
這時,見證奇蹟的時刻到了:
perfect!
可以愉快地學習pytorch了!