本文主要是介绍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 mainpipeline.run_multithreads()File "/PaddleDetection/deploy/pipeline/pipeline.py", line 170, in run_multithreadsself.predictor.run(self.input)File "/PaddleDetection/deploy/pipeline/pipeline.py", line 488, in runself.predict_video(input, thread_idx=thread_idx)File "/PaddleDetection/deploy/pipeline/pipeline.py", line 668, in predict_videores = self.mot_predictor.predict_image(File "/PaddleDetection/deploy/pptracking/python/mot_sde_infer.py", line 478, in predict_imageinputs = self.preprocess(batch_image_list)File "/PaddleDetection/deploy/pptracking/python/det_infer.py", line 140, in preprocessinput_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_cpuself.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
,那么您就不会再遇到此问题。
这篇关于Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!