其實可直接看第 4 步的總結......
實驗室服務器 Ubuntu 16.04 系統下原本安裝的 cuda 版本是 9.0,硬件條件是一張 1080 Ti 的 GPU,在使用 PyTorch 的過程中想要把 cuda 版本換成 10.2,嘗試了網上各種教程,無奈網絡博客的質量實在是魚目混珠,現在總結一下自己的踩坑記錄,盡量詳細地照顧到從頭至尾的各個細節。
1. 走官網教程
首先想的當然是走官網的 cuda 安裝教程啦,嘗試了官網頁面里的runfile(local)
、deb(local)
安裝方式選項均失敗,失敗過程的詳細說明如下:
1.1. 使用deb(local)
方法(不推薦)
官網給的安裝方式為:
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
$ sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda
雖然服務器上已經有安裝的 cuda 9.0,但此方法不需要先卸載老版本(大概是因為用的 apt-get 安裝會自動覆蓋吧),一路執行下來都沒有報錯,暢快地安裝完成。然而,后又經過各種嘗試后發現,在執行到最后一句sudo apt-get -y install cuda
時,安裝好的版本總是當前 NVIDIA 最新的 cuda 版本——截止到 2020.06.21 是 cuda 11.0,而我要安裝的是 cuda 10.2(因為當前 PyTorch 只支持到 cuda 10.2)!
事實上,如果你要安裝最新的 cuda 版本的話,這個方法非常好,安裝流程到這里就可以結束了。
至於為什么總是安裝的最新的 cuda 版本,而不是你以為的你指定的版本,大抵是因為最后那一句命令本質上還是用 apt 從軟件源里下載 cuda,而軟件源里的是最新版本所以你安裝的也只能是最新版本吧。
1.2. 使用runfile(local)
方法(推薦)
對於runfile(local)
,官網給的安裝方式為:
$ wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
$ sudo sh cuda_10.2.89_440.33.01_linux.run
這個看上去靠譜多了,畢竟是下載到本地你指定的安裝包然后直接在本地安裝,但是在執行sudo sh cuda_10.2.89_440.33.01_linux.run
發現依然報錯,按其提示,用 cat 或 vim 查看相應的日志記錄如下:
[INFO]: Driver not installed.
[INFO]: Checking compiler version...
[INFO]: gcc location: /usr/bin/gcc
[INFO]: gcc version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
[INFO]: Initializing menu
[INFO]: Setup complete
[INFO]: Components to install:
[INFO]: Driver
[INFO]: 440.33.01
[INFO]: Executing NVIDIA-Linux-x86_64-440.33.01.run --ui=none --no-questions --accept-license --disable-nouveau --no-cc-version-check --install-libglvnd 2>&1
[INFO]: Finished with code: 256
[ERROR]: Install of driver component failed.
[ERROR]: Install of 440.33.01 failed, quitting
注意最后的[ERROR]: Install of driver component failed.
,意思是驅動安裝失敗,我簡直莫名奇妙。
找了找查看驅動相關的命令,使用sudo dpkg --list | grep nvidia-*
命令查看了驅動版本號,發現竟然裝了兩個驅動版本!啥意思呢?就是原來我服務器上裝的那個驅動,加上在上一步嘗試deb(local)
方法安裝 cuda 時自動裝的一個驅動,兩個同時存在了。
為啥 cuda 覆蓋了而 nvidia 驅動沒覆蓋,難道是我記錯了 w(゚ Д ゚)w ?不過這其實並不重要,反正無論一個/兩個都要卸載。
2. 解決驅動問題
為了這個專門寫了篇博客,移步這里。
3. 安裝
配置好 nvidia 驅動后,可以安裝 cuda 了,先刪除原有的 cuda,再對 1.2 節里下載的文件運行安裝就可以了。
sudo apt autoremove cuda
# 若上一步刪不干凈,接着使用:
sudo apt --purge remove "*cublas*" "cuda*"
# 在 1.2 節之前下載的文件目錄下運行:
sudo sh cuda_10.2.89_440.33.01_linux.run
按照安裝過程中的提示一步步走下來即可,會讓你選擇安裝的組件等等,像 nvidia samples 后面那幾個組件我就沒有裝。
4. 總結
簡而言之,總的流程其實是:
- 適配好你需要的 NVIDIA Driver(英偉達驅動),參考這里;
- 使用 1.2 節的
runfile(local)
方法先下載好相應的 cuda 版本; - 按照第 3 節進行安裝。