非常奇葩的问题。gpu是3090,cuda是正常的11.1,但是nvcc -V
输出的却是9.2。
本来很简单,重新安装一下,把两个版本对齐了就好了,但是我用的是实验室的服务器,我是没有权限去在系统上安装东西的,连apt-get都用不了。
最后终于解决了,其实不需要重新安装,你的nvidia-smi
显示正常,平常运行代码也正常,说明你的cuda本来就是正常的,只不过是系统文件识别的时候没有识别正确的版本。改一下文件,链接到正确的版本就好了。
原文是sudo gedit ~/.bashrc
,但是我没权限gedit,改用vim居然可以。
所以vim ~/.bashrc
,按 i 进入编辑模式,然后在末尾加上(注意去你路径里看看有没有这些目录)
export CUDA_HOME="/usr/local/cuda-11.1/"
export LD_LIBRARY_PATH="/usr/local/cuda-11.1/lib64/"
export PATH="/usr/local/cuda-11.1/bin:$PATH"
然后按 esc,输入 wq 回车,这样就保存了。
然后source ~/.bashrc
。
做完这一切之后,再回去apex文件夹,执行python setup.py install --cuda_ext --cpp_ext
。
这一部分是自录,跟本问题无关。上面这些做完之后,重启conda环境,使用
nvcc -V
应该是能看到cuda变成11.1的。但是现在去运行工程,还是会报错。我记得好像是什么kernal no image什么的,总之上网一查,全部都说是pytorch和gpu的版本不搭。但是我这个pytorch之前是用过的,实测没问题,而且跟cuda去查了也是搭的,跟gpu也是搭的。
最后还是重装了pytorch,去那个stable网页下载whl文件,安装后,再把apex、secen_graph_benchmark都重新编译一遍,然后重启终端。
终于可以了,重装重启解决90%的问题。