服務器上安裝了多個版本的cuda,安裝某個python庫時,需要切換一下cuda的版本。而關於切換cuda版本的文章,csdn上已經給出了 很多教程(雖然都是抄來抄去),這里貼出一條,僅供參考:
https://blog.csdn.net/Maple2014/article/details/78574275
而這些教程可能有個問題,就是一旦更改cuda版本,會對所有人的cuda都生效,因為修改了軟鏈接,比較保險的辦法是,修改自己的~/.bashrc
文件,在自己的文件中,指定cuda的路徑和鏈接庫的目錄。
具體方法如下,在自己的~/.bashrc
文件中寫如下內容:
export PATH="$PATH:/usr/local/cuda-10.1/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda-10.1/lib64"
之后執行source ~/.bashrc
,使配置生效。
但是按照上面的方法操作后,又出現了一個問題:
nvcc -V # 查看cudnn的版本仍為9.1
# 但是使用nvidia-smi時,查看cuda版本已經切換為了10.1
nvidia-smi
對此,網上很少有解釋,自己也挺困惑的,命名已經在配置文件中進行了修改了,為什么兩個地方查看的cuda版本不同呢?
參考了文章https://www.jianshu.com/p/eb5335708f2a,得到了答案:
-
nvcc屬於時CUDA的編譯器,將程序編譯成可執行的二進制文件
-
nvidia-smi全稱是NVIDIA System Management Interface,是一種命令行實用工具,用來幫助管理和監控NVIDIA GPU設備的。
-
當我們安裝一個版本的cuda時,實際上會同時安裝runtime api和driver api,前者對應nvcc后者對應nvidia-smi查看到的。個人理解是,第一次安裝cuda時,nvcc關聯了第一次安裝的版本,並放在了環境變量中的
/usr/bin
目錄下。
而我們前面添加環境變量的方式,是把目標版本的cuda路徑放在了$PATH變量的最后面,查找程序的時候會先查找/usr/bin
目錄,所以就無法找到我們修改后的版本了。所以,正確的做法是:
export PATH="/usr/local/cuda-10.1/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-10.1/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda-10.1/lib64"
添加我們的cuda路徑在$PATH變量的最前面,這樣就會優先在我們設置的路徑下進行尋找了。