Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
·
PaddleDetection 运行时报错解决方案
报错信息
Traceback (most recent call last):
File "/PaddleDetection/deploy/pipeline/pipeline.py", line 1103, in <module>
main()
File "/PaddleDetection/deploy/pipeline/pipeline.py", line 1090, in main
pipeline.run_multithreads()
File "/PaddleDetection/deploy/pipeline/pipeline.py", line 170, in run_multithreads
self.predictor.run(self.input)
File "/PaddleDetection/deploy/pipeline/pipeline.py", line 488, in run
self.predict_video(input, thread_idx=thread_idx)
File "/PaddleDetection/deploy/pipeline/pipeline.py", line 668, in predict_video
res = self.mot_predictor.predict_image(
File "/PaddleDetection/deploy/pptracking/python/mot_sde_infer.py", line 478, in predict_image
inputs = self.preprocess(batch_image_list)
File "/PaddleDetection/deploy/pptracking/python/det_infer.py", line 140, in preprocess
input_tensor.copy_from_cpu(inputs[input_names[i]])
File "/root/.pyenv/versions/3.9.16/lib/python3.9/site-packages/paddle/fluid/inference/wrapper.py", line 38, in tensor_copy_from_cpu
self.copy_from_cpu_bind(data)
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:60)
可能的原因
在 Nvidia 驱动正常安装,nvidia-smi 正常显示的情况下,在 Anaconda 环境下跑常规的深度学习框架(如 TensorFlow, PyTorch, PaddlePaddle 等)时,一般不需要额外安装 CUDA 或 cuDNN 工具,而是直接通过 conda 安装 cudatoolkit 即可。具体的 cudatoolkit 版本选择,一般按照 nvidia-smi 的显示,选择与其一致的 cudatoolkit 版本即可。有些时候特殊的包需要特殊版本的 cudatoolkit(比如 PaddlePaddle),那么按包的要求来即可。
解决方法
第一步:检查共享库中是否有 libcudnn.so 和 libcublas.so
在终端中输入以下命令:
ls /usr/lib | grep lib
如果没有 libcudnn.so 和 libcublas.so 文件,您需要通过以下命令找到它们的位置:
locate libcudnn.so
locate libcublas.so
在我的例子中,libcudnn.so 位于 /usr/local/cuda-12.1/targets/x86_64-linux/include/libcudnn.so.8.9.1,而 libcublas.so 位于 /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcublas.so.12.1.3.1。
第二步:将它们添加到共享库中
-
进入
/usr/lib文件夹:cd /usr/lib -
创建
libcudnn.so和libcublas.so的符号链接:sudo ln -s /usr/local/cuda-12.1/targets/x86_64-linux/include/libcudnn.so.8.9.1 libcudnn.so sudo ln -s /usr/local/cuda-12.1/targets/x86_64-linux/lib/libcublas.so.12.1.3.1 libcublas.so -
检查它们是否已添加到共享库中:
ls /usr/lib | grep lib
如果可以使用上述命令找到 libcudnn.so 和 libcublas.so,那么您就不会再遇到此问题。
更多推荐



所有评论(0)