Linux修改Pytorch的CUDA版本
原理
详细原理参见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重装