ubuntu從零開始搭建cuda環境(三)

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。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章