基于onnxruntime的C++版本CPU/GPU源码编译

基于onnxruntime的C++版本CPU/GPU源码编译

提示:基于onnxruntime的CPU/GPU源码编译,C++版本



前言

一、ONNX Runtime是什么?

ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎.

二、为什么要用ONNX Runtime?

微软在开源中提供了大量框架和引擎。第一个是开放式神经网络交换(ONNX)运行时 https://github.com/microsoft/onnxruntime,这是一种用于ONNX格式的机器学习模型的高性能推理引擎。它从今天开始在GitHub上提供,可以自定义并直接集成到现有代码库中,或者从源代码编译,在Windows 10,Linux和各种其他操作系统上运行。

对于不熟悉的人来说,ONNX是一种与平台无关的深度学习模型,可以实现开源AI框架之间的互操作性,例如Google的TensorFlow,Microsoft的Cognitive Toolkit,Facebook的Caffe2和Apache的MXNet。微软,AWS和Facebook在大约于2017年9月联合宣布,它正在由亚马逊,Nvidia,英特尔和AMD等公司进行积极的开发。

也许更重要的是,它得到了更广泛的ONNX社区的支持。英特尔和微软正在合作将nGraph编译器集成为ONNX Runtime的执行提供程序。Nvidia正在帮助整合TensorRT; 高通公司表示支持。它可以在嵌入式设备,Windows和Linux上运行…它极大地简化了开发人员的生活。随着微软开发Azure机器学习服务 - 一个允许开发人员构建,培训和部署AI模型的云平台 - 一般可用并发布Azure认知服务语言理解API的容器化支持,ONNX的推出也随之而来。


一、源码地址

源码github地址.
https://github.com/microsoft/onnxruntime

本人github地址.
https://github.com/wyt95

二、步骤

1.基础环境搭建

  • 基础编译环境:
    • Ubuntu18.04

    • cmake version 3.20.3

    • Python3.9.5.

      • python版本 > 3.5 ,建议直接最新源码下载编译
      • 源码编译步骤:./configure;sudo make ; make install
      • 编译完成后记得执行python3 -V看下版本信息对不对
      • PS:如果要使用tesonrRT,建议下载python3.8,因为onnxruntime的tensorRt的编译需要下载tensorRt7.2.2.3,支持的python版本:2.7,3.4-3.8,目前暂不支持3.9以上
    • python3 numpy

      pip3 install numpy即可

    • nvidia驱动
      下载cuda11.0的版本时使用默认的cuda自带的驱动进行安装,见第二张图nvidia驱动版本信息
      在这里插入图片描述

    • CUDA以及cudnn版本

以上就是基础环境配置

2.源码编译

进入onnxruntime的代码目录
编译GPU,命令如下:

./build.sh --skip_tests --use_cuda --config Release --build_shared_lib --parallel --cuda_home /usr/local/cuda-11.0 --cudnn_home /usr/local/cuda-11.0

编译CPU,命令如下:

./build.sh --skip_tests --config Release --build_shared_lib

编译tensorrt,命令如下:

./build.sh --build_shared_lib --skip_tests --config Release --use_cuda --cudnn_home /usr/local/cuda/ --cuda_home /usr/local/cuda  --use_tensorrt --tensorrt_home /home/TensorRT-7.2.2.3/

以下就是GPU版本编译完成后产生的libonnxruntime.so.1.8.0以及libonnxruntime.so
libonnxruntime.so是软连接到libonnxruntime.so.1.8.0上去的
在这里插入图片描述在这里插入图片描述

  • GPU版本的onnxruntime的库包含cuda的函数信息,CPU版本的库就不会存在cuda的函数信息
    在这里插入图片描述
    1.7.0版本是本人四月份编译的cpu的版本,大家可以自己编译之后比对下两者的函数包含信息
    在这里插入图片描述

3.测试

  • 需要这几个库放一起编译使用
    在这里插入图片描述

4.注意事项

onnxruntime的GPU的版本经过本人一周反复测试,cuda、cudnn以及nvdia驱动的版本是强配套的
ps:期间因为版本没有完全配套导致环境乱了,重装环境了QAQ


总结

我也是第一次尝试,源码编译还是慢慢来吧,有什么问题可以直接私信讨论,或者下方评论留言

<think>好的,我现在要解决用户的问题:如何下载并安装适用于C++ONNX Runtime库。首先,我需要回忆ONNX Runtime的官方文档和相关资源。用户之前提到了引用[1],里面提到了Windows平台安装onnxruntime和OpenCV,以及调用模型的步骤,但用户现在具体需要的是C++版本的下载和安装方法。 首先,我应该考虑用户的操作系统。用户之前提到的是Windows平台,所以可能需要重点介绍Windows的步骤,但为了全面,可能也需要简要提及其他系统如Linux。ONNX Runtime的C++库通常可以通过预编译的二进制文件或者从源代码编译来获取。 接下来,我需要确定正确的下载渠道。官网是最可靠的来源,用户应该访问ONNX Runtime的GitHub Releases页面,那里有各个版本的预编译库。在下载时,用户需要选择对应的操作系统和架构,比如Windows x64。此外,用户需要注意选择正确的版本,比如CPU版本还是GPU版本,这取决于他们是否需要CUDA支持。 安装步骤可能包括下载并解压文件,然后配置项目中的包含路径和库路径。在Windows上,用户可能需要使用Visual Studio,所以需要指导如何添加包含目录和库目录,链接相应的.lib文件,并确保运行时DLL可用。对于Linux用户,使用包管理器或从源码构建也是常见的方法,但用户的问题可能更关注Windows,所以需要以Windows为主,再补充其他系统。 另外,用户可能需要验证安装是否成功,比如编写一个简单的C++程序来调用ONNX模型,并链接正确的库。这部分可能需要示例代码和编译命令,比如使用g++或MSVC的命令行参数。 需要注意的事项包括版本兼容性,确保下载的ONNX Runtime版本与项目的其他依赖兼容,以及正确设置环境变量,比如将DLL路径添加到系统的PATH中,或者在项目中配置运行时库的路径。 可能用户会遇到的问题包括找不到头文件、链接错误或者运行时缺少DLL,因此需要强调正确的配置步骤和验证方法。此外,用户可能需要安装额外的依赖,比如Protobuf,如果从源代码编译的话,但预编译版本可能已经包含这些。 最后,总结步骤,确保逻辑清晰,分点说明,让用户能一步步跟随操作。同时,根据用户的要求,生成相关问题,可能涉及不同系统的安装、配置项目时的CMake使用,以及如何部署应用等。</think>以下是下载并安装ONNX Runtime C++库的详细步骤: ### 1. 下载预编译库 访问ONNX Runtime的GitHub Releases页面(https://github.com/microsoft/onnxruntime/releases),选择对应操作系统的版本: - **Windows**:下载文件名类似`onnxruntime-win-x64-{版本号}.zip`的压缩包(x64表示64位系统) - **Linux**:选择`onnxruntime-linux-x64-{版本号}.tgz` 若需要GPU支持,选择带`gpu`标识的版本(例如`onnxruntime-win-x64-gpu-1.14.1.zip`) ### 2. 安装步骤(以Windows为例) ```bash # 解压到指定目录(示例路径为D:\SDK) unzip onnxruntime-win-x64-1.14.1.zip -d D:\SDK\onnxruntime ``` 目录结构说明: ``` ├── include ├── lib │ ├── onnxruntime.dll # 运行时动态库 │ └── onnxruntime.lib # 静态链接库 └── LICENSE ``` ### 3. 配置开发环境(Visual Studio) - **包含目录**:添加`D:\SDK\onnxruntime\include` - **库目录**:添加`D:\SDK\onnxruntime\lib` - **链接库**:在项目属性中添加`onnxruntime.lib` ### 4. 验证安装(示例代码) ```cpp #include <onnxruntime_cxx_api.h> int main() { Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test"); Ort::SessionOptions session_options; auto session = Ort::Session(env, L"model.onnx", session_options); return 0; } ``` 编译命令示例(需根据实际路径调整): ```bash g++ main.cpp -I"D:\SDK\onnxruntime\include" -L"D:\SDK\onnxruntime\lib" -lonnxruntime -o test ``` ### 5. 环境变量配置(可选) 将`onnxruntime.dll`所在路径添加到系统PATH变量,或在调试时复制DLL到可执行文件目录[^1]
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三横先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值