基于Windows Visual Studio2022的cuda加速版onnxruntime配置

前言

首先,写这篇博客的初衷是希望后续有需求人员不再像博主一样在这上面踩很多的坑,耗很长的时间,其次是为了大家都能够成功配置好开发环境,最后,感谢下面这篇博客对博主的帮助。好的,废话不多说,进入正题。

https://blog.youkuaiyun.com/futureflsl/article/details/143117942?spm=1001.2014.3001.5506

一、CUDA环境准备

在安装c++开发所需的cuda加速版onnxruntime之前,需配置好CUDA环境,并下载好Visual Studio2022。

1、安装CUDA

(1)、打开命令行,输入指令,查看驱动支持的CUDA版本

nvidia-smi 

(2)、打开CUDA官网

官网链接:https://developer.nvidia.com/cuda-downloads

(3)、找到自己驱动支持版本CUDA(最好比自己驱动版本稍微低一点,这里博主选择的是12.4),点击进去

(4)、下载好后双击exe,等待一会儿,出现下图。图中路径为临时安装路径,下载后自动删除,所以直接点ok。

(5)、进度条跑完出现下图,点击“确定”,点击“同意并继续”

(6)选择“自定义”,点击“下一步”

(7)关闭Visual Studio2022,选择好安装位置后,点击“下一步”。即完成CUDA安装。

(8)打开命令行,输入指令,出现CUDA版本证明CUDA安装成功

nvcc -V

2、安装cudnn

(1)进入官网:https://developer.nvidia.com/cudnn-downloads

(2)选择与所安装CUDA相匹配的cudnn,这里博主选择的8.9.7,点击下载

(3)下载后解压缩

(4)打开CUDA安装路径,图中所示文件夹

(5)将cudnn文件夹下include的所有文件复制粘贴到CUDA的include文件夹下,cudnn中的lib文件夹中文件和bin文件夹中文件同理,至此CUDA环境准备完成。

二、CUDA加速版OnnxRuntime配置

(1)打开OnnxRunTime官网,查看与安装CUDA和cudnn版本所匹配的onnxruntime版本

官网链接:https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#install

(2)打开onnxruntime下载页面,选择匹配的版本下载,这里作者选择1.17.1的cuda版本的onnxruntime下载(需要使用cuda加速的就一定要下带cuda的zip包,反之下载gpu或cpu版本则可)

官方下载页面链接:https://github.com/microsoft/onnxruntime/releases?page=1

(3)解压缩,至此onnxruntime配置完成。

三、Visual Studio2022中配置cuda加速版onnxruntime

(1)打开VS2022,创建新项目,勾选“将解决方案和项目放在同以目录中”

(2)选择“release模式”,并创建一个源文件。

(3)在状态栏中点击“项目”,选择“属性”,点击C++,选择“常规”,出现如下界面

(4)点击“附加包含目录”,点击右侧下拉符号,选择“编辑”

(5)按图中所示步骤点击,选择onnxruntime文件下include文件夹

(6)添加好路径后点击“确定”,因为博主代码中需使用opencv,故还配置了opencv路径。

(7)接下来配置库目录,如图

(8)选择onnxruntime文件夹下lib文件夹,选择好后,点击“确定”

(9)配置附加依赖项

(10)写入onnx三个lib文件,点击“确定”

(11)跑一下代码,点击“本地调试器”(没代码或者报错都没关系,这一步是为了让他生成release文件夹而已)

(12)右击项目,选择“在文件资源管理器中打开文件夹”,出现“x64”文件夹,点击并打开release文件夹

(13)打开CUDA安装文件夹,在NVIDIA GPU Computing Toolkit\CUDA\v12.4\bin路径下找到图中三个文件,复制到项目的release文件夹下

(14)打开onnx安装文件夹,在onnxruntime-win-x64-cuda-1.17.1\lib路径下找到图中所示三个文件,复制到项目的release文件夹下

四、测试

(1)写入代码进行环境配置安装测试

#include <onnxruntime_cxx_api.h>
#include <iostream>

int main() {
    try {
        Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test");
        Ort::SessionOptions session_options;
        Ort::ThrowOnError(OrtSessionOptionsAppendExecutionProvider_CUDA(session_options, 0));
        std::cout << "CUDA provider loaded successfully!" << std::endl;
    } catch (const Ort::Exception& e) {
        std::cerr << "Error: " << e.what() << std::endl;
    }
    return 0;
}

(2)配置成功

<think>嗯,用户想了解如何在VisualStudio配置ONNXRuntime-GPU。用户的开发环境应该是CUDA11.8配合VS2022,但引用[1]提到这个组合可能不被官方完全支持,需要特别注意兼容性问题。用户引用中提到了一些关键信息:引用[3]说明ONNXRuntime与其他运行时的区别,特别是GPU加速方面不如TensorRT精细;引用[4]则详细描述了旧ONNXRuntime在Win7上的应用场景和特点。用户的核心需求很明确——在VS环境下启用GPU加速。准备详细说明配置步骤,考虑分四个部分:基础环境准备、安装配置、代码集成、调试建议。需要特别注意提醒用户可能遇到的VS2022CUDA11.8的兼容性警告。考虑将建议放在显眼位置。考虑到用户可能正在进行AI模型部署,准备增加一些实际应用中的优化提示,比如同步推理和异步推理的选择、动态形状支持等。用户的问题很专业,说明用户应该有一定开发经验,所以不用解释太基础的概念。</think> 以下是在 Visual Studio配置 ONNX Runtime-GPU 的详细指南,结合兼容性和最佳实践: --- ### **配置步骤** #### **1. 环境准备** - **硬件要求**: 确保 NVIDIA GPU 支持 CUDA 11.x([ONNX Runtime v1.14.0 官方要求](https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html))。 - **软件安装**: - **CUDA Toolkit 11.x**(需与 ONNX Runtime 本匹配,例如 CUDA 11.8) - **cuDNN 8.x**(需与 CUDA 本一致) - **Visual Studio 2022**(安装时勾选「C++桌面开发」和「Windows 10 SDK」) > ⚠️ 若遇 CUDA 与 VS2022 兼容警告,需在项目中手动设置 CUDA 头文件路径[^1]。 #### **2. 安装 ONNX Runtime-GPU** - **NuGet 安装**(推荐): 在 VS 项目中右键「管理 NuGet 包」 → 搜索 `Microsoft.ML.OnnxRuntime.Gpu` → 选择 GPU 本安装。 - **手动部署**(适用于特殊本如 v1.14.0): 1. 下载 [预编译的 ONNX Runtime-GPU v1.14.0](https://github.com/microsoft/onnxruntime/releases/tag/v1.14.0) 2. 将 `onnxruntime.dll`、`onnxruntime_providers_cuda.dll` 等文件复制到项目输出目录(如 `x64\Debug`) 3. 添加头文件路径:`右键项目 → 属性 → C/C++ → 附加包含目录 → 添加 include 路径` #### **3. 项目配置** ```properties # 项目属性设置示例(关键项) 1. 链接器 → 输入 → 附加依赖项: onnxruntime.lib 2. C/C++ → 预处理器 → 预处理器定义: USE_CUDA 3. 生成事件 → 生成后事件: copy "$(SolutionDir)libs\onnxruntime*.dll" "$(OutDir)" ``` #### **4. 代码验证** ```cpp #include <onnxruntime_cxx_api.h> Ort::SessionOptions session_options; Ort::ThrowOnError(OrtSessionOptionsAppendExecutionProvider_CUDA(session_options, 0)); // 启用 GPU Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test"); Ort::Session session(env, "model.onnx", session_options); // 加载模型 // 后续使用 Tensor 输入数据并推理 ``` #### **5. 调试与优化** - **常见错误**: - **LNK2019**: 检查 `onnxruntime.lib` 是否正确链接 - **DLL 缺失**: 确认所有依赖 DLL 在输出目录 - **性能调优**: 启用 Tensor Core 加速:在 `session_options` 中设置 `EnableCudaGraph()` 和 `gpu_mem_limit`。 --- ### **关键注意事项** 1. **本兼容性**: - ONNX Runtime-GPU 必须严格匹配 **CUDA 本**(如 v1.14.0 需 CUDA 11.4-11.8) - 若需在旧平台(如 Win7)运行,优先选择 [v1.14.0](https://onnxruntime.ai/docs/) 等兼容本[^4]。 2. **动态输入支持**: 当模型含动态维度时,需显式设置输入形状: ```cpp Ort::MemoryInfo memory_info = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU); std::vector<int64_t> input_shape = {1, 3, 224, 224}; // 示例尺寸 Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, input_data, data_size, input_shape.data(), 4); ``` --- ### **备选方案** 若需更深度的 GPU 优化(如低延迟推理),可组合使用: 1. **TensorRT 集成**: 通过 `onnxruntime_extensions` 将 ONNX 模型转为 TensorRT 引擎。 2. **DirectML 后端**(支持 AMD GPU): 调用 `OrtSessionOptionsAppendExecutionProvider_DML`。 --- **
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值