CUDA、CUDNN安裝的心酸史
作者:elfin 資料來源: 文內
1、簡訴
基於ubuntu18.04,Driver Version 440.33.01;cuda10.2、cudnn8.0.3、GPU:1650的基礎環境安裝TensorRT7.2.2.3,安裝好之后,在使用過程中報錯,而項目在2080TI的另一環境中測試通過,通過代碼調試、錯誤定位,最后定位到libcublas有毛病,當時年輕,不懂時,查看cuda版本與Driver Version的對應情況,沒有什么問題,Driver Version滿足>=440.33.01
,一般使用它不會報錯;另一方面TensorRT較新,網上有出現這種情況,且有將TensorRT7.2轉換為TensorRT7.1解決的!
在這種背景下,我准備卸載TensorRT7.2.2.3,基於NVIDIA官網卸載命令,不小心刪除了全家桶!切記不要隨意使用sudo apt-get autoremove
。雖然按理說不應該刪除CUDA,但是我就遇到這么秀,看見cuda被刪除,直接傻眼。
既然被刪除了那就安裝吧……
首先選擇DEB安裝,結果網絡波動太大,導致安裝的cuda沒有include
文件夾,這我找誰去說理啊!那就刪除重安吧,結果這個直接刪CUDA文件夾的騷操作害苦了我,后面不管是DEB還是RUN文件都不能安裝,下面是解決問題的過程記錄!
2、ERROR
安裝報錯如下:
安裝cuda10.2時顯示/tmp/apt-dpkg-install-eBJpT5/25-libcublas-dev_10.2.2.89-1_amd64.deb沒有安裝,所以手動安裝,報錯為:
dpkg: 錯誤: 無法訪問歸檔 '/tmp/apt-dpkg-install-eBJpT5/25-libcublas-dev_10.2.2.89-1_amd64.deb': 沒有那個文件或目錄
cuda 已經是最新版 (10.2.89-1)。
您也許需要運行“apt --fix-broken install”來修正上面的錯誤。
下列軟件包有未滿足的依賴關系:
cuda-libraries-dev-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
依賴: cuda-misc-headers-10-2 (>= 10.2.89) 但是它將不會被安裝
cuda-nvcc-10-2 : 依賴: cuda-misc-headers-10-2 (>= 10.2.89) 但是它將不會被安裝
cuda-samples-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
cuda-visual-tools-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
E: 有未能滿足的依賴關系。請嘗試不指明軟件包的名字來運行“apt --fix-broken install”(也可以指定一個解決辦法)。
此時我的/usr/local
下是沒有cuda與cuda-10.2的,這里報錯依賴有問題。在網上找了很多方法,都不行,這里我建議你嘗試以下措施:
-
缺什么安裝什么
這個方法我沒有測試,你可以實驗將libcublas-dev這些包安裝一下在安裝cuda。
-
刪除未被刪除的指令
這里我首先查詢了我安裝的cuda包:
$ sudo dpkg -l | grep cuda
在查詢的列表中可以看到很多cuda相關的包,特別是很多版本為10.2.89-1,我選擇將這些10.2.89-1的包全部刪除:
$ sudo dpkg -P <要刪除的包>
在刪除的過程中,可能會遇到此包被xxx依賴,此時先刪除依賴它的包!直到刪除完全!
要注意不要誤刪除cuda-drivers等其他版本的包!
刪除完成之后,即可安裝CUDA10.2!
3、安裝CUDA10.2報錯libcublas為安裝
報錯信息如下:
ubuntu 18.04 Autoware 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
下列軟件包有未滿足的依賴關系:
cuda-libraries-dev-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
cuda-samples-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
cuda-visual-tools-10-2 : 依賴: libcublas-dev (>= 10.2.2.89) 但是它將不會被安裝
E: 有未能滿足的依賴關系。請嘗試不指明軟件包的名字來運行“apt --fix-broken install”(也可以指定一個解決辦法)。
ERROR: the following rosdeps failed to install
apt: command [sudo -H apt-get install -y ros-melodic-grid-map-visualization] failed
看到此信息,我首先想到使用apt-get安裝,為了保險,驗證合理性,我百度了一下,還真有遇到此問題的大佬。
(報錯信息復制於大佬博客,我的錯誤應該是一樣的!)
基於博客的方法展示步驟如下:
-
安裝包
$ sudo apt-get install libculas-dev
報錯:dpkg返回錯誤代碼:
E: Sub-process /usr/bin/dpkg returned an error code (1)
-
解決方法(來源於博客)
$ sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ $ udo mkdir /var/lib/dpkg/info/ $ sudo apt-get update # 下面這一步我報錯了,鏡像源有些沒有get到,可能是網絡的原因,不過不影響后面的操作 $ sudo apt-get ugrade
再安裝
$ sudo apt-get install libculas-dev
4、CUDA、CUDNN安裝
基於第二章、第三章,使用sudo apt-get -y install cuda
成功安裝,沒有包任何奇怪的東西!
使用nvidia-smi測試通過,使用nvcc -V報錯,進入cuda-10.2所在目錄查看,發現沒有cuda軟連接:
$ cd /usr/local/
$ sudo ln -s cuda-10.2/ cuda/
創建軟連接后,nvcc -V
命令可以正常使用,下面測試是否正常安裝!
$ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
正常應該在最后打印Result = PASS
實際我這里是未通過,這很難受了,刪掉重新安裝吧!發現在bin下沒有uninstall相關文件,裂開了!,使用如下命令刪除:
$ sudo apt-get autoremove --purge cuda
$ sudo dpkg -l | grep cuda
# 此命令顯示還有未卸載干凈的,繼續手動卸載!此時發現之前一直向保留的440.33.01那個包早沒了,好吧之前就不該保留!
$ sudo dpkg -P ···
完!