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

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


文章目录

  • 基于onnxruntime的C++版本CPU/GPU源码编译
  • 前言
  • 一、源码地址
  • 二、步骤
    • 1.基础环境搭建
    • 2.源码编译
    • 3.测试
    • 4.注意事项
  • 总结

前言

一、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自带的驱动进行安装,见第二张图

    • CUDA以及cudnn版本

      • CUDA版本11.0update.
      • cudnn版本8.05forCUDA11.0.

以上就是基础环境配置

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


总结

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

基于onnxruntime的C++版本CPU/GPU源码编译相关推荐

  1. Linux16.04配置tensorflow(GPU源码编译)并深入了解tensorboard

    Tensorflow – Google推出的一个强大的"深度学习框架".于2015年11月在GIthub上开源,在2016年4月补充了分布式版本,并于2017年1月发布了1.0版本 ...

  2. 最好用的Redis Desktop Manager 0.9.3 版本下载 以及源码编译教程

    文章目录 一.前言 二.编译教程 2.1 [redis destop manager 的源码地址](https://github.com/uglide/RedisDesktopManager) 2.2 ...

  3. android 编译 oserror,jdk/java版本与Android源码编译中的错误

    错误一:javap未指向有效的java版本 Traceback (most recent call last): File"../../base/android/jni_generator/ ...

  4. Oryx 2.1.2版本: src源码编译

    2019独角兽企业重金招聘Python工程师标准>>> 1)打开 https://github.com/OryxProject/oryx/releases 2)下载 选择最新版本: ...

  5. 干货|TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法工程师 安装平台 1 平台 目前Tensor ...

  6. anaconda tensorflow 2.3_TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)

    1 安装选择 1.1 平台 目前TensorFlow已支持Mac.Ubuntu和Windows三个主流平台(64位平台), 1.2 GPU vs CPU 在安装时可以选择安装版本是否支持GPU, 1. ...

  7. 07-PDI(Kettle)源码编译8.2.0.0.R版本

    文章目录 07-PDI(Kettle)源码编译8.2.0.0.R版本 1.安装PDI8.2.0.0.R的parent工程到本地 1.1配置Maven的settings.xml文件 1.2安装PDI源码 ...

  8. pip安装wxpython报错traceback_使用源码编译wxpython-基于python2.7

    1.前言 本文主要讲述在linux环境下进行编译wxpython,在windows下面安装wxpython很简单,只要下载,然后直接执行exe文件,下一步下一步即可安装,在linux下面,则具有很多步 ...

  9. mindspore 1.3.0版本GPU环境下源码编译的正式工作——完整的编译过程

    转载地址:https://bbs.huaweicloud.com/forum/thread-143140-1-1.html 作者: devilmaycry 编译之前需要完成依赖环境的安装,具体请看: ...

最新文章

  1. 哪家中国公司为Java 16贡献最多?Java第一大厂居然不是第一的...
  2. java怎么xml文件解析_Java对Xml文件解析
  3. Unity3D ShaderLab 内发光防护罩
  4. C语言高级编程:函数指针的用法
  5. andriod sqlite 详解转载
  6. tinycore php,tinycore中文支持
  7. ExtJS和AngularJS比较
  8. 如何用Pygame写游戏(五)
  9. Python机器学习:KNN算法06网格搜索
  10. 【时间序列预测】基于matlab RBF神经网络时间序列预测【含Matlab源码 1336期】
  11. C语言 知识点总结完美版
  12. python绘图代码大全_python绘图代码总结
  13. 精简版WIN XP安装日文输入法
  14. 【PID控制与模糊PID控制的比较】(带仿真和代码链接)
  15. 返利网app有那些?哪一个最好用?
  16. 2021年山东省职业院校技能大赛中职组网络安全赛项竞赛样题
  17. word 文本框插入图片
  18. SPI通讯协议详解 基于STM32
  19. 对 Linux 初级、中级、高级用户非常有用的 60 个命令
  20. 精品咖啡知识不能不知道的8个地方

热门文章

  1. 【软件测试】工作瓶颈?测试的出路在哪?
  2. Similar command is: ‘lz’ bash: ls: command not found...
  3. 2023适合新手的免费编曲软件FL Studio水果21中文版
  4. java2018国家竞赛_2018年全国普通高校学科竞赛排行榜发布
  5. Web项目小票打印分页打印
  6. Arithmetic problem | The Triangle
  7. 看门狗 (监控芯片)
  8. 从Google Map爬数据
  9. 如何提高蓝队在实战攻防演习中的防御水平?
  10. 企业管理 - 波司登战略管理解析