原理
詳細原理參見https://www.cnblogs.com/yhjoker/p/10972795.html
簡單原理就是通過修改$PATH
環境變量,pytorch會以最前面的CUDA版本為准
例如,你可能裝過2個版本的cuda
/usr/local/cuda-11.1
/usr/local/cuda-11.0
查看以下兩個環境變量
echo $PATH
echo $LD_LIBRARY_PATH
可以看到我的此shell下,cuda11.0在cuda11.1前面,那么pytorch實際運行的就是11.0版本的cuda
修改方法
永久修改當前用戶下的環境變量
- 修改
~/.bashrc
文件
vim ~/.bashrc
- 添加
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.0/bin:$PATH
- 在當前shell下重新運行
~/.bashrc
文件
source ~/.bashrc
這樣每次打開新shell的時候會自動運行~/.bashrc
文件,以達到永久性修改。(不過最新的chrome ssh安全外殼有毒,需要手動運行一下。。)
不用擔心來回修改版本,source了太多次~/.bashrc
文件添加了很多環境變量,你新開一個shell就是了
臨時修改
不多說了,直接運行加的那兩行代碼即可
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.0/bin:$PATH
檢驗效果
老方法,使用pytorch的方法查看
torch.version.cuda
你突然發現,納尼,怎么還是老版本cuda沒變?
假如你頭鐵繼續運行代碼,突然會產生如下的報錯——
NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation
最可能的情況:你的pytorch和cudatoolkit分別用pip和conda安裝的。
詳情見這里
例如:你的pytorch用pip安裝的,但是cudatoolkit用conda安裝的,pytorch會檢索pip使用的cudatoolkit版本,而不會查看conda里面的cudatoolkit
解決方法:重裝,去官網要么都用conda、要么都用pip重裝