- 博客(334)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 onnx模型数据结构分析,用于解析onnx模型
data_type:张量元素类型(如,对应枚举值 1/6/7);dims:张量形状(如表示 3 通道 224x224 图像);raw_data:张量的二进制数据(序列化后的权重值);name(张量名)、segment(稀疏张量分段信息)等。
2026-04-07 23:35:36
551
原创 1. [前端] TVM ONNX 导入流程与算子扩展指南
本文档详细介绍了TVM导入ONNX模型的流程与算子扩展方法。主要内容包括:1) ONNX导入整体流程,从模型解析到IRModule构建;2) 代码结构组织,重点说明核心类OnnxOpConverter及其子类层次;3) ONNXGraphImporter的工作原理,包括输入解析、参数处理和节点转换机制。文档提供了完整的导入流程图、代码示例和类结构说明,并详细解释了如何根据opset版本选择对应的转换器实现,为开发者实现自定义算子支持提供了清晰指导。
2026-04-07 20:27:52
365
原创 Towards Efficient Generative Large Language Model Serving: A Survey from Algorithms to Systems推理优化综述
论文摘要 《Towards Efficient Generative Large Language Model Serving: A Survey from Algorithms to Systems》综述了提升生成式大语言模型(如GPT、LLaMA)服务效率的关键技术,涵盖算法和系统两个层面的优化方法。文章指出大模型存在延迟高、内存占用大、吞吐量低等问题,并提出双管齐下的解决方案: 算法层面通过优化解码方式(如非自回归解码、投机解码)、简化模型结构(MoE架构)和模型压缩(知识蒸馏、剪枝)来提升效率;系统
2026-01-06 23:17:06
1136
原创 AI 编译器中的 SRAM 内存分配管理算法调研
AI编译器SRAM内存分配算法综述 本文系统梳理了AI编译器中SRAM内存分配的多种算法策略及其应用场景。主流算法包括:1)基于生存期分析的线性扫描分配,速度快但非最优解;2)区间图着色算法,接近最优但计算复杂;3)最佳适应/首次适应内存分配,适合小型嵌入式系统;4)仿射模型优化,通过数学规划最小化峰值内存。此外还介绍了缓冲区复用、块级调度、动态形状处理等高级策略。文章对比了TensorRT、TVM、IREE等主流编译器的实现差异,指出TensorRT采用全局优化策略,TVM侧重灵活性,IREE则基于MLI
2025-12-09 22:44:17
1311
1
原创 VM / IREE 的调度器架构
TVM和IREE的调度架构对比:TVM采用混合调度模式(手写+自动搜索),通过TIR层进行kernel级优化后降级到目标后端;IREE则基于MLIR采用纯规则型流水线,在Linalg层完成tiling等变换后直接降级。两者调度策略差异显著,TVM侧重自动优化,IREE强调确定性规则转换。
2025-12-09 21:52:09
274
原创 TVM 与 IREE 的调度算法对比(IREE更适合NPU)
TVM与IREE在调度算法上采用不同策略。TVM分为手写调度和自动调度两类,前者基于TIR规则,后者使用模拟退火(AutoTVM)或遗传算法+ML模型(AutoScheduler)。IREE则基于MLIR框架,采用规则驱动的确定性方法,通过Linalg层分块、向量化等固定转换序列,最终依赖LLVM后端调度器完成指令级调度。TVM侧重自动搜索优化,IREE则强调规则驱动和编译时效率,两者在调度理念和算法选择上形成鲜明对比。
2025-12-09 21:46:15
981
原创 AI 编译器中的指令调度算法调研
本文系统梳理了AI编译器中的指令调度算法,将其分为三个层次:基础指令调度、图级调度和深度优化调度。基础算法包括列表调度、关键路径优先等传统方法;图级调度涵盖ASAP/ALAP、拓扑排序等针对计算图的优化;深度优化则采用ILP、遗传算法和机器学习等前沿技术。特别强调了NPU专用调度技术,如流水线调度、分块感知调度等关键方法。这些算法共同构成了AI编译器实现高性能计算的核心技术体系。
2025-12-09 21:43:07
1001
原创 STM32CUBE打印浮点数据-cmake配置
STM32cube 生成的项目工程, 默认是无法打印浮点数据的。只需要在cmake中添加如下选项,则就可打印浮点数据。
2025-05-29 21:42:01
515
原创 IREE 调度机制深度解析:静态编译与动态执行的协同优化
IREE (IR Execution Environment) 作为 TensorFlow 生态的重要成员,通过多层次调度策略实现了跨硬件平台的高效执行。其调度系统融合了编译期静态优化与运行时动态调整,在保证任务依赖正确性的同时,最大化硬件资源利用率。本文将从核心机制、技术细节与实现路径三个维度深入解析 IREE 的调度算法。
2025-03-21 21:49:43
1298
原创 IREE 内存分配算法概述
IREE 在编译和运行时均对内存分配进行了专门设计,主要目标是高效利用有限的内存资源,降低碎片,并满足目标硬件(如 TPU、NPU 等)的对齐和布局要求。总体上,其内存分配策略可以分为编译期的静态内存规划和运行时的内存子分配。
2025-03-21 21:41:05
1440
原创 IREE AI编译器编译测试流程指南
通用 CPU 后端(默认选项)基于 LLVM 编译器优化 CPU 指令支持 x86/ARM 等主流 CPU 架构适合没有专用加速硬件的设备苹果专有 GPU 加速方案支持 iOS/macOS 设备的 Metal API适配 Apple Silicon(M 系列芯片)和 A 系列芯片需要 macOS 10.13 + 或 iOS 11+3. vmvx针对 Intel 视觉处理单元(VPU)如 Movidius Myriad X 等边缘 AI 芯片适合低功耗嵌入式设备的视觉推理。
2025-03-20 23:17:09
1885
2
原创 AI Agent开发技术框架选型概要
模块化工具链框架,连接大语言模型(LLM)与外部数据源、工具和 API。:低代码 AI 应用开发平台,支持通过 YAML 配置文件快速构建智能体。:基于 GPT-4 的自主 AI 代理,可通过自然语言指令完成复杂任务。:字节跳动推出的低代码 AI 开发平台,侧重多模态交互和生态整合。:阿里巴巴达摩院开发的多智能体协作框架,模拟人类团队分工。:个人开发者 → 被 Anthropic(组织)收购。:Dify.ai(组织)。:阿里巴巴达摩院(组织)。:字节跳动(组织)。
2025-03-16 13:19:15
1436
1
原创 论文:KernelBench: Can LLMs Write Efficient GPU Kernels?
在网上看到可以使用LLM来写cuda内核了?太厉害了作为编译器工程师, 特别想知道是怎么做到的,非常的好奇,他的提示词是怎么写的,工作流程是什么样子。把论文下载下来研究下, 回头有机会也试试,看看效果怎么样。但是从论文来看,效果其实不是很好。测试的模型结构整体也是比较简单,感觉有点像玩具属性???
2025-02-28 22:01:44
1737
原创 LLM大语言模型推理加速调查报告:Towards Efficient Generative Large Language Model Serving: A Survey from Algorithms
我们提供深入的分析,涵盖一系列解决方案,从尖端算法修改到系统设计的突破性变化。该调查旨在全面了解高效LLM服务的现状和未来方向,为研究人员和从业者克服有效LLM部署的障碍提供宝贵的见解,从而重塑人工智能的未来。LLMs前所未有的成功也带来了一些挑战,最值得注意的是,它们在服务期间的强大计算要求。巨大的模型尺寸和复杂性,加上对大量计算资源的需求,阻碍了它们在现实应用中的广泛部署。
2024-12-24 22:29:30
1837
4
原创 mlir的Linalg方言介绍
受启发来源与设计优势:从先前艺术中获取灵感,其设计允许定义具有通用属性的自定义操作,支持关键变换,操作数可为张量或缓冲区,输出张量有 “init 张量”(提供初始值,通过迭代更新结果,可能被优化为寄存器级 SSA 值,期望可重写为缓冲区的原位更新)和 “仅形状”(仅携带形状信息,未来可能被合适形状类型替代)两种类型。承载有效负载操作的属性属性 1:输入和输出操作数定义迭代空间。
2024-11-20 21:32:01
2019
原创 解码 IREE:Tensorflow 和 TFlite 模型迈向 MLIR 前端 IR 的转换秘籍
在使用WSL进行嵌入式软件开发的时候,在debug方面,比较好用的工具有Ozone,那在Windows下调试需要配置和注意的点,在这里跟大家分享一下。的配置文件,我们需要调整这个配置文件, 让Ozeon知道代码和。工程保存, 会生成一个。
2024-11-09 11:31:57
1370
原创 STM32F429IGTx_FLASH.ld:56: syntax error [build] collect2: error: ld returned 1 exit status
今天更新了touchgfx, 生成的cmake工程编译一直报错。经过一番搜索查找,终于给找到原因了。ST这个玩意写出bug了。(你的文件可能是其他名字,但是后缀是一样的,就LD文件)当然如果你跟我一样懒得折腾,那修改点东西也可以。官网发通知呼吁大家继续使用。
2024-11-08 22:13:50
993
3
原创 微软商店无法加载,检查你的连接-解决方案
网上的修复方法基本都是基于微软官方的回复。亲测对于代理导致的无法连接无法修复。然后我在哔哩哔哩的视频下方,看到大家留言,测试了一下,果然修复了。会提示是IE网络问题,点击一键修复即可修复。如果有代理,关闭代理就可以恢复网络了。下载火绒安全 -> 选择 断网修复即可。但是我就是想用代理,我感觉代理更快,再去观察微软商店,发现已经好了。微软商店默认直连国内的服务器。搜索了很多办法,都没有生效。
2024-08-04 14:53:02
2052
原创 一文带你读懂MLIR论文,理解MLIR设计准则.
研究背景、研究问题、研究目的和研究的意义一种构建可重用和可扩展编译器基础设施的新方法。MLIR 解决了软件碎片问题、异构硬件编译问题,显着降低了构建特定领域编译器以及将现有编译器连接在一起的成本。MLIR 在不同的抽象层次,不同应用领域,不同硬件目标和不同执行环境下加快代码生成器,翻译器和优化器的设计和实现。从研究的角度探讨MLIR 的扩展和演进,给出该方法在设计、语义、优化、系统及工程方面的机遇与挑战。
2024-07-21 22:26:59
2537
原创 MLIR的TOY教程学习笔记
MLIR 中,每一个operation都与代码位置强相关,不像LLVM,可以随意删除。MLIR可以自定义IR的所有属性,operation,type,同时IR总是可以简化为上述途中的格式。这样统一的格式,就方便了MLIR解析和重新表示任何IR。定义方言代码形势tablegen通过代码操作,略定义OP定义参数和结果// 文档}];// 输入// 输出// 验证器,设置为1是为了生成1个默认的验证方法,该方法会在该OP的构造器完成后调用。
2024-07-21 21:37:12
1849
原创 一文看懂LUT(Lookup Table)查找表
对于ReLU激活函数,公式如下: ReLU(x)=max(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x) 可以看到,ReLU函数将输入值变成非负值(负值变为0,正值保持不变)。对于激活函数(例如ReLU),使用LUT可以在一定范围内通过查找预计算的值来近似函数计算,从而提高计算效率。LUT的基本原理是将函数值预先计算并存储在一个数组或字典中,然后在需要计算函数值时,通过查找这个表格来快速获得近似值。假设激活函数relu,想要通过LUT方法来做,该怎么做?
2024-07-14 15:06:03
3450
原创 轻松理解c++17的string_view
是一个高效的、不拥有的字符串视图类,设计用于提高字符串处理的性能和简便性。它在不复制字符串数据的情况下,提供了丰富的字符串操作接口,使得字符串处理更高效、代码更简洁。
2024-07-10 22:54:36
1069
原创 c++的constexpr和constvalue的区别
constexpr可以用于变量和函数,函数可以在编译时或运行时求值。consteval只能用于函数,并且强制要求函数必须在编译时求值,不能在运行时调用。这两个关键字提供了不同的常量表达式处理机制,允许程序员在不同的场景下进行选择,以提高代码的效率和安全性。
2024-07-10 22:46:37
453
原创 AI文本转语音,再也不用担心视频配音了.
背景我想要将文本,转为语音,然后配上图片,这样就可以很快生成一个视频.可以说是配音吧,我还是比较喜欢通过代码来自动化.所以今天就来实现一下,同时做一下分享和记录.目标通过python代码,自动将文本转为配音.平台我选择了百度平台, 对比腾讯,付费策略比较友好.阿里云应该也有类似的业务,我没去看.大家可以货比三家.百度的宣传页面百度长文本在线合成价目表。
2024-07-06 19:35:56
1045
原创 c++: 理解编译器在背后所做的工作-工具篇
理解C++模板以及编译器的优化是深入掌握C++编程的重要部分。有一些其他工具和技术可以帮助你更好地理解编译器在背后所做的工作,特别是优化方面。
2024-06-25 22:58:32
1134
1
原创 CppInsights: 学习C++模版的神器
CppInsights是一个开源的C++工具,旨在将高级C++代码转换为其等效的低级代码表示。它能够展示编译器在处理C++代码时的许多隐式操作,使得开发者能够更直观地理解代码的实际执行过程。该工具由Andreas Fertig开发,其目标是揭示C++代码的内在机制,帮助开发者深入理解语言的特性。
2024-06-25 22:52:38
1940
原创 理解静态单赋值SSA(Static Single Assignment)
静态单赋值形式(SSA)通过确保每个变量只被赋值一次,极大地简化了编译器的分析和优化工作。通过引入 Φ 函数解决控制流合并点的变量选择问题,SSA 提供了一种强大而灵活的中间表示,使编译器能够更高效地生成优化代码。
2024-06-24 22:26:11
2996
原创 c++处理string类型的工具和常用方法总结
这些头文件和示例展示了如何在C++中处理字符串和字符的不同方法。根据具体需求选择合适的头文件和函数可以大大提高程序的效率和可读性。通过使用这些正则表达式工具,可以在C++中方便地进行字符串模式匹配和替换操作。头文件来进行正则表达式匹配和处理字符串。在C++中,可以使用标准库中的。
2024-06-08 11:00:22
878
原创 C++格式化输出开源库fmt入手教程
格式API在精神上与C print函数家族相似,但比通用标准库实现更安全、更简单且速度快好几倍。格式字符串语法类似于Python中str.form使用的语法。如果不是c++ 20,还想要简化字符串的格式化,和输入输出流的简化。那就可以使用我们今天要介绍的开源项目,fmt,
2024-04-13 00:23:38
1813
原创 c++命令行解析开源库cxxopts上手教程
具体规则请看代码注释,总体来说还是比较通俗易懂的,不需要特别多的解释。// 1. 导入头文件(只有一个)// 2. 创建一个Options实例// 3. 写入可解析的参数("d,debug", "Enable debugging") // 默认是bool类型("i,integer", "Int param", cxxopts::value<int>()) // 该参数是int类型// vector 传递参数有 2 种方式// --value_list=1,2,3,4 一次性传递,确保没有空格。
2024-04-12 23:53:06
2120
2
原创 Python Flask教程
启动代码热加载新建一个文件,名为: , 在文件内开启debug模式。(需要下载doenv)库1.1 url传参规则参数规则:(default) accepts any text without a slashaccepts positive integersaccepts positive floating point valueslike but also accepts slashesaccepts UUID strings1.2
2024-01-14 01:29:16
5436
原创 zsh插件之gitignore安装使用教程
文件手动添加插件,或使用 Oh My Zsh 提供的命令。,这是一个流行的 zsh 配置框架。这样你就可以根据你的项目需要选择合适的语言/框架,然后生成对应的。插件是 Oh My Zsh 的一个插件,你可以通过编辑。文件,帮助你更有效地管理项目中的不需要跟踪的文件和目录。例如,如果你要创建一个 Python 项目的。文件,包含常见的 Python 文件和目录排除规则。这将在当前目录生成一个适用于 Python 项目的。提供了一个便捷的方式来管理。一旦安装了插件,你可以使用。首先,确保你已经安装了。
2024-01-14 01:17:08
942
原创 使用 CMake 和 Ninja 构建 C/C++ 项目的教程
CMake 是一个跨平台的开源构建工具,它简化了项目的构建过程。而 Ninja 是一个快速、轻量级的构建系统,与 CMake 配合使用可以提高项目的构建效率。通过按照以上步骤,你就成功使用 CMake 和 Ninja 构建了你的 C/C++ 项目。在 Windows 上,你可以使用 CMake 官网 下载并安装 CMake,而 Ninja 则可以通过 GitHub Release 下载预编译的二进制文件。在你的项目根目录外,创建一个用于构建的目录。在你的项目根目录下创建一个。这将编译并构建你的项目。
2024-01-07 12:14:06
10728
c语言打印金字塔源码,可直接运行。
2018-08-04
基于颜色保留的retness算法.zip
2020-03-29
java编译成功,运行找不到或无法加载主类 。
2019-02-13
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅