onnx2paddle将onnx转成paddle文件时遇到了cuda版本不兼容问题
运行指令: x2paddle --framework=onnx --model=model.onnx --save_dir=pd_model
错误描述:
error code is /usr/local/cuda/lib64/libcudnn.so: cannot open shared object file: No such file or directory
…
RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
[Hint: cudnn_dso_handle should not be null.] (at /paddle/paddle/phi/backends/dynload/cudnn.cc:64)
原因: 我现在的cuda版本时11.3,与paddlepaddle-gpu 0.0.0.post111、x2paddle1.4.0版本不匹配,通过查询,paddlepaddle的每个版本都会要求相应的cuda版本,对于我来说可以换成cuda11.1。
解决办法:
- 安装多个版本cuda,进行版本切换。(注:尽量不要直接删掉自己的cuda,可以在同一台电脑上安装多个不同版本的cuda)
- 多版本cuda安装,安装教程很多,我看的这两个:教程1、教程2
- 重中之重是利用软连接进行版本的切换
# 建立软连接
# 1.先将原来的软连接删掉
sudo rm -rf /usr/local/cuda
sudo ln -s /usr/local/cuda-11.* /usr/local/cuda #将想要切换的版本11.*链接到/usr/local/cuda
#检测版本
nvcc -V
#查看cudnn版本是否变换成功
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
至此,问题解决。