基于C++语言的Onnx CUDA加速部署推理

ONNX Runtime (ORT) 利用 NVIDIA GPU 加速,核心在于将模型的计算任务交给GPU处理。把它理可解为 "配置硬件驱动" 的过程:通过指定

CUDAExecutionProvider 或 TensorrtExecutionProvider,让 ORT 知道应该调用 NVIDIA 的 CUDA/cuDNN 库来执行计算,从而实现并行加速。

1.核心依赖:必须安装 CUDA Toolkit 和 cuDNN

|--------------|-------------------------|------------|
| 组件 | 版本要求 (示例) | 作用 |
| CUDA Toolkit | 11.x 或 12.x (需与 ORT 匹配) | GPU 计算的核心库 |
| cuDNN | 8.x (需与 CUDA 匹配) | 深度神经网络加速库 |
| C++ 编译器 | 支持 C++17 标准 | 编译你的项目代码 |

首先查看自己的计算机安装的cuda版本和cudnn版本

1)通过指令nvcc -V查看cuda版本如下图所示

注意:用命令 nvidia-smi 看到 的版本是驱动支持的 最高上限。

****2)****查看 GPU 型号列表的指令如下图所示

3)在cuda安装目录下cudnn相关文件上点击右键查看详细信息,可看到对应的cudnn版本为8.9,如下图所示。

2. 获取onnx的运行库获取ONNX Runtime GPU库

方式一:下载预编译的二进制包(推荐)

这是最简单快捷的方式。访问 ONNX Runtime 的 页面地址:

https://github.com/microsoft/onnxruntime/releases?page=2,

找到与你环境匹配的版本。对于 GPU 加速,你需要下载名称中包含 gpu 或 cuda 字样的包,例如 onnxruntime-win-x64-gpu-1.17.3.zip 。下载后解压到你的项目目录即可。

官网上有两个关于gpu的onnxruntime运行库,如下图所示

两者的差别如下图所示:

我目前采用的CUDA12.1支持的版本,要求最好用最新的cudnn9.x版本,如下图所示。

问题:cuda12.1 cudnn8.9.可以运行Onnxruntime1.22吗?

答:ORT 1.22 需要 CUDA 12.x 和 cuDNN 9.x。官方特别强调:cuDNN 8.x 与 9.x 互不兼容 。所以既然 cuDNN 8.9 不符合 ORT 1.22 的要求,建议采用 ONNX Runtime 1.17.x。它对 CUDA 12.x 支持良好,且正好需要 cuDNN 8.x ,与当前环境完美匹配。

方式二:从源码编译(高级)(不推荐)

如果你需要特定的构建选项或针对特定硬件优化,可以选择从源码编译。你需要克隆官方仓库,并使用 CMake 配置,关键是要开启 onnxruntime_USE_CUDA 选项。

相关推荐
暗夜猎手-大魔王几秒前
转载--AI Agent 架构设计:错误处理与容错设计(OpenClaw、Claude Code、Hermes Agent 对比)
人工智能
码农的神经元5 分钟前
Claude Code 如何接入 DeepSeek V4 模型:从安装配置到实战验证
人工智能
北山有鸟12 分钟前
编译香橙派内核
linux·运维·服务器
W.A委员会13 分钟前
Docker基本使用流程
运维·docker·容器
波动几何14 分钟前
通用行业业务技能体系技能universal-business-skill-system
人工智能
Robot_Nav16 分钟前
AI 编程助手 Skill 完全指南:VS Code · Trae CN · Claude Code
人工智能·vscode·skill·trae·claude code
直奔標竿18 分钟前
Java开发者AI转型第二十五课!Spring AI 个人知识库实战(四)——RAG来源追溯落地,拒绝AI幻觉
java·开发语言·人工智能·spring boot·后端·spring
段一凡-华北理工大学19 分钟前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章06:智能决策:从经验驱动到数据驱动
网络·人工智能·数据挖掘·高炉炼铁·工业智能体·高炉炉温
小此方19 分钟前
Re:Linux系统篇(八)权限篇 ·三:深度解析从 umask 位运算到粘滞位的“权力锁”
linux·运维·服务器
rainbow72424421 分钟前
企业级AI人才培养方案:如何设计“训战结合”的学习项目
人工智能