TVM图级优化了解
TVM图级优化按照优化范围,可分为局部优化和全局优化
局部优化是TVM图级优化的重点,其中算子融合是AI编译器必不可少的优化方法。
算子融合核心思想就是将多个算子合并成一个内核,因而无需将中间结果写回全局内存,减少了中间变量的分配,也减少了片上缓存和片外存储之间的数据传输。
那算子融合也是有条件的,不能各算子谁想和谁融合就能融合的
不同算子能融合在一起的前提条件就是:某个算子访问的数据是其他算子在其共享存储资源内生成的数据,即算子间应满足访存的局部性。
好处有哪些呢?
通过算子融合(如合并循环嵌套)可以为进一步优化创造条件,还可以减少启动和同步开销,更好的共享计算资源。
虽然就单个算子而言,融合后的算子可能会增加存储资源的开销,但考虑到整体性能的提升,这中开销是值得的。
不好的地方呢?
融合后的算子可能破坏后续算子之间的并行执行,即在融合前,某个算子的后续算子是并行执行的,但在将该算子和其他算子融合后有些后续算子只能在融合算子执行结束后开始执行,这显然会影响性能。
局部优化还有什么?
局部优化中还包括经典的代数简化。代数简化考虑的是一系列节点,利用不同类型节点的交换律、结合律和分配律来简化计算。如强度消减、常量折叠等。
- 强度消减:可以用开销小的算子代替开销大的算子。
- 常数折叠:通过常数折叠,可以预先计算出可静态确定的图,用常量值替换常量表达式,从而节省执行开销。
代数简化也可以应用于AI相关算子(如reshape、转置和池化等)
全局优化又是什么呢?
计算图提供了全局视图,TVM可以在整个计算图中搜索特定特征,并针对这些特征执行特定全局优化操作。
例如:计算图中的死代码通常是由其他图优化造成的。因此,在其他图优化之后还应执行死代码清除(Deal Code Elimination,DCE) 和公共子表达式消除(Common Subexpression Elimination,CSE)操作。
TVM图级优化了解的更多相关文章
- TVM图优化与算子融合
TVM图优化与算子融合 计算图的定义 Computational graphs: a common way to represent programs in deep learning framewo ...
- [cocos2d-x]用CCSpriteBatchNode进行文理贴图的优化
引言: 我们在进行手机游戏开发的过程中,由于手机的内存资源是有限的,那么对纹理贴图的优化是非常有必要的,有可能相同的功能,优化的好与不好对内存资源的消耗是非常明显的,下面我就用一个例子来说明一下. 说 ...
- WEB前端性能优化之一——网页级优化
1.减少Http请求 http请求是指从客户端到服务器端的请求消息.其中包含对html.css.js.图片资源以及交互数据处理内容等.在前端性能网页级优化中较少http请求是非常重要的一块,每当我们提 ...
- 【bzoj3073】[Pa2011]Journeys 线段树优化建图+堆优化Dijkstra
题目描述 Seter建造了一个很大的星球,他准备建造N个国家和无数双向道路.N个国家很快建造好了,用1..N编号,但是他发现道路实在太多了,他要一条条建简直是不可能的!于是他以如下方式建造道路:(a, ...
- NYOJ 654喜欢玩warcraft的ltl(01背包/常数级优化)
传送门 Description ltl 非常喜欢玩warcraft,因为warcraft十分讲究团队整体实力,而他自己现在也为升级而不拖累团队而努力. 他现在有很多个地点来选择去刷怪升级,但是在每一个 ...
- TVM图优化(以Op Fusion为例)
首先给出一个TVM 相关的介绍,这个是Tianqi Chen演讲在OSDI18上用的PPThttps://files.cnblogs.com/files/jourluohua/Tianqi-Chen- ...
- 洛谷 P5471 - [NOI2019] 弹跳(二维线段树优化建图+堆优化存边)
题面传送门 一道非常有意思的题(大概可以这么形容?) 首先看到这类一个点想一个区域内连边的题目可以很自然地想到线段树优化建图,只不过这道题是二维的,因此需要使用二维线段树优化建图,具体来说,我们外层开 ...
- AC自动机学习笔记-2(Trie图&&last优化)
我是连月更都做不到的蒟蒻博主QwQ 考虑到我太菜了,考完noip就要退役了,所以我决定还是把博客的倒数第二篇博客给写了,也算是填了一个坑吧.(最后一篇?当然是悲怆のnoip退役记啦QAQ) 所以我们今 ...
- 第五篇 openvslam建图与优化模块梳理
建图模块 mapping_module在初始化系统的时候进行实例化,在构建实例的时候会实例化local_map_cleaner和local_bundle_adjuster.系统启动的时候会在另外一个线 ...
- MySQL limit 分页查询优化(百万级优化)
1)简单的查询分页:分每页5条 limit [offset],[rows] ,10; 2)建立id索引:查询索引id ,) limit ; 3)使用 between and 语句分页效率快N倍 ; 4 ...
随机推荐
- 生成式 AI 的发展方向,是 Chat 还是 Agent?
一.整体介绍 生成式 AI 在当今科技领域的发展可谓是日新月异,其在对话系统(Chat)和自主代理(Agent)两个领域都取得了显著的成果. 在对话系统(Chat)方面,发展现状令人瞩目.当前,众多智 ...
- Typecho的Joe主题开启文章导航目录树
引言 发现从typora复制过来的markdown代码中的目录导航[toc]语句没生效, 没有像typora或其他markdown编辑器生成导航目录树, 网上搜了下, 发现个解决方法, 在主题设置里插 ...
- 如何在 CentOS 7 linux上安装和使用 FFmpeg
SSH首选FinalShell 1.下载解压 wget http://www.ffmpeg.org/releases/ffmpeg-5.1.tar.gz tar -zxvf ffmpeg-5.1.ta ...
- MySQL - 数据更新场景
Excel文件数据更新到表A的某两个字段 Excel文件中Sheet1页有两列,一列是序号,另一列是手机号.表A中有对应的序号列和手机号列. 1.首先,使用Navicat将Excel数据导入数据库,注 ...
- 大数据之路Week10_day05 (Redis的安装与简单命令使用)
Redis 支持单机版和集群,下面的步骤是单机版安装步骤 redis3.0.0版本的安装包百度云链接: 链接:https://pan.baidu.com/s/1mb_SdU5hHlrmUkWN7Drx ...
- 2025 年最值得尝试的几款 DevOps 平台工具推荐
随着软件开发和运维的深度融合,DevOps 平台已成为现代企业加速数字化转型的核心引擎.在 2025 年,面对快速迭代的市场需求与复杂的技术架构,选择一款适配性强.功能完备的 DevOps 平台,不仅 ...
- 961. 重复 N 次的元素
地址:https://leetcode-cn.com/problems/n-repeated-element-in-size-2n-array/ <?php /** 在大小为 2N 的数组 A ...
- web站点常见漏洞及解决方法
1.PHP Web表单哈希冲突拒绝服务漏洞 漏洞分析:PHP 5.3.9之前版本在计算表单参数哈希值的实现上存在拒绝服务漏洞,该漏洞源于未提前限制哈希冲突.攻击者可利用该漏洞通过发送小量的特制webf ...
- 一款torrent文件格式分析工具(绿色纯天然)
点击下载 1.主界面 2.文件分析(显示文件所在分片的位置) 3.获取指定分片所在的peers服务器列表 一只会铲史的猫
- Linux升级openssl、openssh
在项目中,我们经常会发现Linux系统中Open SSH.Open SSL存在高危漏洞,如OpenSSL"心脏出血"漏洞,利用该漏洞,黑客可以获取约30%的https开头网址的 ...