Windows下从源码编译ONNX Runtime

前言:作者在做深度学习模型部署过程中,遇到一些算子问题,需要在ONNX Runtime平台上实现一些自定义算子,在此过程中,onnxruntime官方给的现成的库缺少一些必要文件,遂需要下载onnxruntime源码并进行编译。

一、环境说明

windows 10

cuda V11.5

cudnn 8.8.0

cmake 3.24.3(试过其他版本,均无法编译顺利完成)Index of /files/v3.24 (cmake.org)

visual studio 2019

python 3.9(电脑需要有python环境,编译本质上是运行的build.py)

onnxruntime 1.11.1

二、编译流程

# 打开git bash
git clone -b rel-1.11.1 --recursive https://github.com/Microsoft/onnxruntime
cd onnxruntime
git submodule update --init --recursive# 管理员打开vs的工具x64 Native Tools Command Prompt for VS 2019
d:
cd onnxruntime

执行脚本编译

 .\build.bat  --build_shared_lib --parallel --use_cuda --cuda_version 11.4 --cuda_home "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4" --cudnn_home "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.4"  --cmake_generator "Visual Studio 16 2019" --skip_tests --config Release

成功后可看到如下提示:

且在onnxruntime\build\Windows\Release\Release目录下可看到如下成果文件:lib dll 等

如此,则算顺利完成编译。

三、注意事项

1.CMake版本只有3.24.3试过是顺利的,其他均遇到以下报错:

error MSB3721: 命令“ml64.exe /c /nologo /WX /Fo"onnxruntime_mlas.dir\Release\QgemmU8S8KernelAvx2.obj" /D"WIN32"

2.执行脚本时候的参数,可以参考onnxruntime\tools\ci_build\build.py中的参数列表予以选择,例如对trt的支持--use_tensorrt。

3.对于cmake这种问题并不是常规debug然后改bug的问题,解决这种问题比较考验运气,若有前人的工作,则可事半功倍;若自己苦苦寻找,并不一定能解决问题,甚至已经换版本可以编译成功了仍然不知道根本原因是为何;战术性短暂放弃,在有些时候是一种有效的方法。

四、参考资料

windows10 编译onnxruntime_onnx1.10 对应cuda-CSDN博客

[Build] met build error when building for window · Issue #15101 · microsoft/onnxruntime (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/22487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用万维易源API生成AI艺术二维码

目录 1. 作者介绍2. 艺术二维码2.1 艺术二维码的作用2.2 艺术二维码的应用场景2.3调用万维易源API生成AI艺术二维码 3. 实验过程3.1算法流程3.2完整代码3.3测试结果 1. 作者介绍 韩阳,男,西安工程大学电子信息学院,2023级研究生 研究方向&am…

两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析-文献精读20

Characterization of two O-methyltransferases involved in the biosynthesis of O-methylated catechins in tea plant 两种参与茶树O-甲基化儿茶素生物合成的O-甲基转移酶的特征分析 茶树三维基因组-文献精读19 比较转录组分析揭示了116种山茶属(Camellia)植物的深层系统…

设计模式23——状态模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用,主要是下面的UML图可以起到大作用,在你学习过一遍以后可能会遗忘,忘记了不要紧,只要看一眼UML图就能想起来了。同时也请大家多多指教。 状态模式(State&am…

《幸福》期刊杂志投稿发表

《幸福》杂志是由国家新闻出版总署批准,武汉出版社主管,武汉市妇联和武汉出版社联合主办,面向全国发行的人文社科综合期刊。办刊宗旨:宣传普及科学知识及科学方法的研究;倡导新型的人际关系,推介健康的家庭…

go语言进阶 init() 函数

go 语言包 在一个项目中通常我们需要引入第三方包,我们来看下 当我们导入一个包的时候 发生了什么: 首先我们先详细介绍下两个函数: init(), main() 是 go 语言中的保留函数。我们可以在源码中 定义 init()函数, 此函数会在包导入…

iPhone录音的m4a格式音频文件怎么转成MP3格式?

在日常工作生活中,我们有时会用电脑或手机录音,比如iPhone录音的M4A格式音频,要上传至某些软件或者平台使用,但是有时这些平台或者软件对音频格式有要求,比如有的就只能上传mp3格式的文件。 这个时候我们就需要先将音频…

基础IO(上)

前言 文件 内容 属性 所有对文件的操作就是对内容操作和对属性操作。内容是数据,属性也是数据。存储文件,必须既存储内容又存储数据。创建文件默认就是在磁盘中的。我们要访问一个文件的时候,都是要先把这个文件打开的。访问文件的本质就是…

无人机EasyDSS推拉流视频直播技术在农业植保中的精准应用与展望

随着科技的飞速发展,无人机在农业领域的应用越来越广泛,特别是在农业植保方面,无人机以其独特的优势,为农业生产带来了革命性的改变。 无人机在农业植保中的应用主要体现在两个方面:提高工作效率和精准喷洒药物。在以…

每天认识一家仪器仪表厂商 | 横河测试测量官网 - Yokogawa

横河Yokogawa工商信息: 横河测量技术(上海)有限公司于2000年08月09日成立。法定代表人山崎正晴(YAMAZAKI MASAHARU),公司经营范围包括:从事测量科技、机电科技领域内技术开发、技术转让、技术咨询、技术服务,仪器仪表、通讯设备、…

专业130+总分400+四川大学951信号与系统考研经验川大电子信息与通信工程,真题,大纲,参考书。教材。

今年四川大学951信号与系统专业课130(据我所知没有140以上的今年),总分400,顺利上岸川大,回顾一下自己这一年的复习,希望自己的经历可以对大家复习有所借鉴,也是对自己的考研画上句话。专业课&a…

使用from…import语句导入模块

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在使用import语句导入模块时,每执行一条import语句都会创建一个新的命名空间(namespace),并且在该命名…

mysql中InnoDB存储引擎的Buffer Pool

大家好。众所周知,对于使用InnoDB作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚簇索引和二级索引),还是各种系统数据,都是存储在磁盘上的。在处理客户端的请求时,当需要访问某个页…

思维导图——幕布

一、前言 幕布是一款专注于简化和组织信息的大纲笔记应用,它旨在帮助用户高效地整理知识点、优化工作流程以及规划个人生活。 二、软件特点 幕布工具的核心优势在于其能够快速将用户的输入转换成清晰的思维导图,便于视觉化地理解和记忆信息。 幕布还具…

插入mysql报错:Incorrect string value: ‘\xF0\xAC\x8C\x97\xE5\x9E...‘

原因分析 这个错误通常发生在使用MySQL数据库时,尝试将包含四字节UTF-8字符(通常表示为Unicode码点大于UFFFF的字符)插入到一个不支持这种字符的字符集列中。一般在插入睡眠emoji表情时容易遇到 解决 -- 设置数据库编码utf8mb4 ALTER DAT…

TrollInstallerX小白一键安装巨魔商店 分分钟安装成功

概述 TrollInstallerX 是一款通用的 TrollStore 安装程序。它注重可靠性和易用性。它的速度也非常快,能够在几秒钟内将 TrollStore 和/或其持久性助手安装到最新设备上。 TrollInstallerX 支持所有运行 iOS 14.0 - 16.6.1 的设备,包括 arm64 和 arm64e。…

若依分离版—增加通知公告预览及缩放功能

若依分离版—增加通知公告预览及缩放功能 前言开发通知公告 前言 若依分离版的通知公告没有预览功能&#xff0c;想开发通知公告功能 开发通知公告 效果如下 具体开发内容 修改若依notice代码如下。 <template><div class"app-container"><el-…

103.网络游戏逆向分析与漏洞攻防-ui界面的设计-加速功能的开关设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

李廉洋:6.4-6.5黄金原油再次走低,美盘行情分析及最新策略。

黄金消息面分析&#xff1a;全球债券周二上涨&#xff0c;呼应美债隔夜的涨势。美联储或早降息的押注增强了主权债务的吸引力。澳大利亚和新西兰10年期债券收益率下跌至少8个基点&#xff0c;先前数据显示&#xff0c;美国5月份工厂活动萎缩的速度加快。日本10年期债券收益率下…

Nginx location 与 Rewrite

Nginx正则表达式 location 通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发 location 大致可以分为三类&#xff1a; 精准匹配&#xff1a;location / {...} 一般匹配&#xff1a;location / {...} 正则匹配&#xff1a;location ~ / {...} location…

ctfshow解题,知识点学习

1.easy_zip&#xff08;misc&#xff09; 1&#xff09;打开环境后是一个压缩包&#xff0c;解压里面有个flag.txt文件需要密码&#xff0c; 2&#xff09;直接用工具爆破&#xff0c;即可找到密码 2.easy_eval 1&#xff09;进入题目环境&#xff0c;先进行代码审计 首先说是…