事情是这样的,从pytorch=3.0.0
换了个版本到pytorch=3.0.1
的时候,conda update完就报这个运行时错误了。
原因是PyTorch用cudnn=7.0.5
编译的,但是在这个环境中只找到了版本为7.1.3
的cudnn
,版本错误改了好久,大部分是说把7.1.3的环境从$PATH
变量中删除就好了,可服务器上好几个环境怎么都没找到7.0.5的,不知道删了之后该链接到哪儿。问题截图如下:
安装cudnn=7.0.5
,并将libcudnn.so
链接到7.0.5版本上。
cat /usr/local/cuda/version.txt
, 这里我的cuda是9.0.176。
路径:https://developer.nvidia.com/rdp/cudnn-archive ,这里我在服务器上配置的,所以下载的Linux版本的。
下载完是后缀为solitairetheme8
的文件~
cp cudnn-9.0-linux-x64-v7.solitairetheme8 cudnn-9.0-linux-x64-v7.0.5.tgz
tar -zxvf cudnn-9.0-linux-x64-v7.0.5.tgz
这里建议查一下当前版本7103在什么位置,看到网上好多是放在/usr/local/cuda/lib64
下,刚开始我也放在这个底下了,可还是没有用。后来通过find ./ -name *cudnn*
在当前用户根目录下查了下包含cudnn的都有哪些,才发现在anaconda3/envs/sanra123/lib
下包含了cudnn=7.1.3
的版本(这里sanra123
是自己的conda下的环境名哦),实际工作时会在这个目录下去找。所以下一步把cudnn=7.0.5
的版本复制到这个目录下,配置一下环境变量。
sudo cp cuda/include/cudnn.h /home/root/anaconda3/envs/sanra123/include
sudo cp cuda/lib64/libcudnn* /home/root/anaconda3/envs/sanra123/lib
sudo chmod a+r /home/root/anaconda3/envs/sanra123/include/cudnn.h /home/root/anaconda3/envs/sanra123/lib/libcudnn*
设置环境变量有两个位置,/etc/profile
和自己用户名下的~/.bashrc
。服务器上就在自己的用户名下进行了配置。这段我其实忘了有没有用了(大概率是没用的),因为之前其实在/etc/profile下已经找到这个环境变量了,也是指到lib64下。后面是自己改了下.bashrc
设错了,就又设了下。不过,记一下备忘吧,其实是不需要这步了的。
export PATH=/usr/local/cuda-9.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
export PATH=/home/root/anaconda3/bin:$PATH
进入/home/root/anaconda3/envs/sanra123/lib
目录(即刚刚找到的工作目录),查看有关cudnn的文件,可以看到,虽然将7.0.5移动到了这里,但实际链接到的还是7.1.3,所以这里需要改一下软链接指向啦。
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so
sudo ln -sf libcudnn.so.7.0.5 libcudnn.so.7
改好了,到python中测一下。输出为7005的cudnn版本证明我们终于改好这个问题啦!真棒,夸夸~
import torch
print(torch.backends.cudnn.version())
参考:
cudnn官方(5-6页)
cudnn安装步骤看的这里啦,不过配置那步感觉要改一下的
谢谢这里的链接提示