nvidia顯卡驅動安裝和cuda,cudnn配置安裝參考先前的教程
多版本cuda共存
cuda的卸載
卸載原有cuda,兩種方式(.deb和.run兩種方式安裝,卸載方法不同):
.run方法卸載,
sudo /usr/local/cuda-6.5/bin/uninstall_cuda-6.5.pl
(有這個文件就說明是之前用.run文件安裝的,沒有則是用deb文件安裝的),需要根據自己的cuda版本找到卸載腳本
.deb方法卸載,
sudo apt-get autoremove --purge cuda
配置多個cuda版本共同使用
統一下載 .run(local)文件格式比較方便
安裝,sudo sh cuda_xxxxxxxxxx.run
安裝時的選擇需要注意,驅動不需再安裝,toolkit必須安裝,軟連接可以yes,samples不需要。
對多個cuda版本同樣操作安裝(安裝順序不知是否有影響)
安裝好後,可以在 /usr/local/目錄下看到不同cuda的多個目錄(有可能還有一個cuda軟鏈接,可以用命令stat cuda看一下鏈接到哪個目錄)
環境配置
一、
環境配置。這裏在系統環境配置文件 /etc/profile裏配置(也可以在~/.bashrc文件下設置,這兩個文件區別參見https://www.jianshu.com/p/9d95e5e736da,如果你是用圖形界面的服務器,然後還用了IDE,如spyder或者pycharm,一定要在/etc/profile配置,因爲~/.bashrc配置只對shell生效)保存後。source /etc/profile 使得其立即生效。
如果想要切換cuda環境的話,更改PATH和LD_LIBRARY_PATH到相應的cuda文件夾就可以了。
二、(推薦這個)
/etc/profile
sudo gedit /etc/profile
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda/lib64:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/usr/local/cuda/lib64:$LIBRARY_PATH"
然後重新加載環境變量
source /etc/profile
/.bashrc
配置CUDA相關環境變量
修改~/.bashrc文件(或~/.zhsrc) 在文件末尾添加環境變量
Tensorflow官方安裝歷程要求注意的是:配置PATH和LD_LIBRARY_PATH和CUDA_HOME環境變量.
vim ~/.bashrc #修改配置文件(如果你用的是zsh,則需要修改 ~/.zshrc文件)
#在文件結尾處添加
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
source ~/.bashrc
利用同樣的方法下載你想安裝的另一個版本的cuda工具包(注意是runfile類型),在安裝過程中,注意cuda symbol link的選擇(首次安裝,選y,安裝額外的版本,選n)
cuda多個版本的切換
在安裝了多個cuda版本後,可以在/usr/local/目錄下查看自己安裝的cuda版本,如下圖所示:
這裏,cuda-10.0和cuda-10.1就是我們安裝的兩個cuda版本了,而cuda是一個軟鏈接,它指向我們指定的cuda版本(上面在設置環境變量時,使用的是cuda,而不是cuda-10.0和cuda-10.1,這就是爲了方便我們切換cuda版本,不需要每次都去改變環境變量的值)
可以使用stat命令查看當前cuda軟鏈接指向的哪個cuda版本,如下所示:
可以看到,文件類型是符號鏈接(symbolic link),指向的目錄是/usr/local/-10.1,當我們想使用cuda-10.0版本時,只需要刪除當前的cuda軟鏈接,然後重新建立指向cuda-10.0版本的軟鏈接即可(注意名稱還是cuda,因爲要與bashrc文件裏設置的保持一致)
sudo rm -rf cuda
sudo ln -s /usr/local/cuda-10.0 /usr/local/cuda
這樣子想切換其他版本的cuda,只需要改動建立軟鏈接時cdua的路徑即可
一個問題:
cuda版本,nvidia-smi和nvcc -V查詢、cat查詢、stat cuda查詢(後三者一致),的查詢結果不一致
參考:https://blog.csdn.net/ljp1919/article/details/102640512解釋:
其實是因爲CUDA 有兩種API,分別是 運行時 API 和 驅動API,即所謂的 Runtime API 與 Driver API。
nvidia-smi 的結果除了有 GPU 驅動版本型號,還有 CUDA Driver API的型號,這裏是 10.0。
而nvcc的結果是對應 CUDA Runtime API。