Windows 下安装 CUDA 和 cuDNN 并解决 ONNXRuntime Error 126 问题

引言

在 Windows 环境下进行深度学习开发时,安装 NVIDIA 的 CUDA 和 cuDNN 是不可或缺的步骤。然而,安装完成后,使用 ONNXRuntime 时可能会遇到一些问题,比如常见的 Error 126。本文将详细介绍在 Windows 系统上安装 CUDA 和 cuDNN 的完整流程,并提供解决 ONNXRuntime Error 126 的具体方法,主要通过将 cuDNN 的 bin 文件夹中的文件拷贝到 CUDA 的对应目录来解决。


1. 安装 CUDA

CUDA 是 NVIDIA 提供的并行计算平台和编程模型,能够显著提升深度学习任务的性能。以下是安装步骤:

1.1 下载 CUDA 安装包

  • 访问 NVIDIA CUDA Toolkit 下载页面
  • 根据你的系统选择合适的版本,例如:
    • 操作系统:Windows 10 或 Windows 11
    • 架构:x86_64
  • 点击下载,获取一个 .exe 可执行安装文件。

1.2 安装 CUDA

  • 双击运行下载的 .exe 文件。
  • 在安装界面中选择 自定义安装(Custom Installation),以便只安装必要的组件。
  • 在组件选择界面:
    • 勾选 CUDA Toolkit(核心组件)。
    • 可选:勾选 CUDA Samples(用于测试安装是否成功)。
  • 安装路径建议保留默认(例如 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X),点击“下一步”完成安装。

1.3 验证 CUDA 安装

  • 安装完成后,打开命令提示符(按 Win + R,输入 cmd,回车)。
  • 输入以下命令:
    nvcc --version
    
  • 如果命令返回类似以下输出,说明安装成功:
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2023 NVIDIA Corporation
    Built on ...
    Cuda compilation tools, release X.X, VX.X.X
    
  • 如果没有返回版本信息,请检查安装路径是否正确,或重新安装。

2. 安装 cuDNN

cuDNN 是 NVIDIA 提供的深度神经网络库,优化了深度学习计算性能。以下是安装步骤:

2.1 下载 cuDNN

  • 访问 NVIDIA cuDNN 下载页面
  • 需要注册或登录 NVIDIA 开发者账号。
  • 选择与你安装的 CUDA 版本匹配的 cuDNN 版本(例如 CUDA 11.x 对应 cuDNN 8.x)。
  • 下载完成后,你将得到一个 .zip 压缩包。

2.2 安装 cuDNN

  • 解压下载的 .zip 文件,得到一个包含 binincludelib 文件夹的目录。
  • 将这些文件拷贝到 CUDA 的安装目录中:
    • bin 文件夹中的内容拷贝到:
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\bin
      
    • include 文件夹中的内容拷贝到:
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\include
      
    • lib 文件夹中的内容拷贝到:
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\lib\x64
      
  • 确保文件拷贝完成后,目标目录中包含了 cuDNN 的 .dll 文件(如 cudnn64_X.dll)。

3. 解决 ONNXRuntime Error 126 问题

在使用 ONNXRuntime 时,有时会遇到 Error 126,提示无法加载某些 DLL 文件。这通常是因为系统无法找到 cuDNN 的动态链接库文件。以下是解决方法:

3.1 问题描述

  • 在运行 ONNXRuntime 的程序时,可能会出现类似以下错误:
    Error 126: The specified module could not be found.
    
  • 这表明系统缺少某些依赖的 DLL 文件,通常是 cuDNN 相关的文件。

3.2 解决方法

  • 步骤 1:检查 cuDNN 文件是否正确拷贝
    • 确保 cuDNN 的 bin 文件夹中的 .dll 文件已正确拷贝到:
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\bin
      
    • 如果未拷贝,请按照第 2.2 节的步骤重新操作。
  • 步骤 2:检查环境变量
    • 右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
    • 在“系统变量”中找到 Path,确保其中包含 CUDA 的 bin 路径:
      C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.X\bin
      
    • 如果没有,手动添加并保存。
  • 步骤 3:备用方案
    • 如果问题仍未解决,将 cuDNN 的 bin 文件夹中的 .dll 文件直接拷贝到 ONNXRuntime 的安装目录(例如 Python 的 site-packages\onnxruntime\capi 文件夹)。

3.3 验证解决方法

  • 重新运行你的 ONNXRuntime 程序。
  • 如果 Error 126 不再出现,说明问题已解决。

4. 总结

通过本文的指导,你可以在 Windows 系统上成功安装 CUDA 和 cuDNN,并解决在使用 ONNXRuntime 时遇到的 Error 126 问题。核心解决方法是将 cuDNN 的 bin 文件夹中的 DLL 文件拷贝到 CUDA 的 bin 目录中,同时确保环境变量配置正确。希望这篇博客能帮助你在深度学习开发中少走弯路!


5. 参考资料

ffmpeg已安装,将自动为视频添加音频 ================================================== 环境检查: CUDA 版本: CUDA 6.5 cuDNN 版本: cuDNN 9.10.2 ONNX Runtime GPU 支持: 支持GPU: True, 但初始化失败: [ONNXRuntimeError] : 1 : FAIL : Load model from D:\Personal\Temp\tmpa584yr5l.onnx failed:system error number 13 ================================================== 尝试使用 CUDAExecutionProvider 进行GPU加速 2025-06-11 23:48:37.7860629 [E:onnxruntime:Default, provider_bridge_ort.cc:1992 onnxruntime::TryGetProviderInfo_CUDA] D:\a\_work\1\s\onnxruntime\core\session\provider_bridge_ort.cc:1637 onnxruntime::ProviderLibrary::Get [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 "" when trying to load "D:\Program Files\python39\lib\site-packages\onnxruntime\capi\onnxruntime_providers_cuda.dll" 2025-06-11 23:48:37.7967453 [W:onnxruntime:Default, onnxruntime_pybind_state.cc:965 onnxruntime::python::CreateExecutionProviderInstance] Failed to create CUDAExecutionProvider. Require cuDNN 9.* and CUDA 12.*, and the latest MSVC runtime. Please install all dependencies as mentioned in the GPU requirements page (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements), make sure they're in the PATH, and that your GPU is supported. ONNX Runtime 使用的提供程序: ['CPUExecutionProvider'] 模型输入信息: Name: AnimeGANv3_input:0, Shape: [1, 'unk__1822', 'unk__1823', 3], Type: tensor(float) 模型输出信息: Name: generator_1/main/out_layer:0, Shape: ['unk__1824', 'unk__1825', 'unk__1826', 3], Type: tensor(float) 处理视频: 切片法区测试.mp4 使用FFmpeg进行视频编码
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值