使用ONNXRuntime GPU推理时SessionOptionsAppendExecutionProvider_CUDA报错求助
解决ONNXRuntime CUDA执行提供者加载失败(错误126)的方案
以下是针对Windows 10 + VS2022 + CUDA 12.1环境下的具体解决步骤:
检查DLL依赖项
使用Visual Studio自带的dumpbin工具(打开VS命令提示符),执行命令:dumpbin /dependents D:\Work\SystemVue\6G\AL\ONNX\c_cxx\cudabuild\fns_candy_style_transfer\Debug\onnxruntime_providers_cuda.dll查看输出中标记为"找不到"的依赖库,通常是CUDA或cuDNN相关的DLL(如
cudart64_12.dll、cudnn64_8.dll等)。确保依赖库可被找到
- 将CUDA Toolkit的
bin目录(默认路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin)添加到系统PATH环境变量的最前端,避免其他版本的CUDA库干扰。 - 将cuDNN解压后的
bin目录添加到PATH,或直接将cuDNN的cudnn64_8.dll复制到项目的Debug运行目录。 - 确认ONNXRuntime的
lib目录也在PATH中,或把onnxruntime.dll、onnxruntime_providers_cuda.dll复制到项目运行目录。
- 将CUDA Toolkit的
验证ONNXRuntime与CUDA版本匹配
- 如果使用预编译的ONNXRuntime库,必须下载支持CUDA 12.1的版本;如果是自行编译ONNXRuntime,要确保编译时指定的CUDA版本为12.1,且链接的cuDNN版本与安装的一致。
检查VS项目配置
- 确认项目的目标平台为
x64(CUDA不支持32位程序),在VS项目属性 -> 配置属性 -> 常规中设置。 - 确认项目的平台工具集为
v143(VS2022默认版本),CUDA 12.1兼容该工具集,避免因工具集不匹配导致的库加载问题。
- 确认项目的目标平台为
手动复制核心库到运行目录
直接将以下文件复制到你的项目Debug/Release输出目录:- CUDA的
cudart64_12.dll、cublas64_12.dll、cublasLt64_12.dll - cuDNN的
cudnn64_8.dll - ONNXRuntime的
onnxruntime.dll、onnxruntime_providers_cuda.dll
- CUDA的
内容的提问来源于stack exchange,提问作者Yanhua Cui
相关产品推荐
相关产品推荐

