记录一下onnxruntime的一个bug修复过程。
代码报错
FAIL : LoadLibrary failed with error 126 “” when trying to load “***\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll”
表现为代码仍然能跑,但是调用不了cuda,只能在cpu上跑。
解决办法
- 检查onnxruntime-gpu的版本是否正确,需要和cuda和cudnn版本对应上,具体参考https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html
- 若onnxruntime-gpu的版本没有问题,继续检查cuda是否正确安装。
nvcc -V
若没有版本信息输出,需要重新安装cuda。参考https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Windows&target_arch=x86_64&target_version=11&target_type=exe_network
- 检查cudnn是否正确安装。
进入cuda安装路径,一般在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA。在include中查看是否存在cudnn相关的头文件,若没有,就去看看环境变量path中是否有关于cudnn相关的其他路径。如果还没有,则说明cudnn没有正确安装。
如果确定已经安装了cudnn,找到cudnn的安装路径,将bin、include、和lib文件夹路径全部添加到path中。
如果没有安装cudnn,则重新装一下,将bin、include、和lib文件夹路径全部添加到path中。
我的bug是因为cudnn没有正确安装造成的,上述方法可以解决。