TVM计算图分割--分割方式

文章目录

  • TVM中的计算图分割方式
      • 1. Partition Pass
      • 2. dataflow_pattern
      • 3. 内置图分割接口
      • 4. Pipeline Executor
      • 5. BYOC框架
      • 6. UMA

深度学习模型通常是用计算图来表示的。计算图是一种有向无环图,其中节点代表算子,表示一个操作,节点之间的边表示算子之间的数据依赖。计算图分割是指将计算图按照所属执行平台划分为若干个子图,每个子图分别执行在对应硬件上,以最大化值执行效率。

TVM中的计算图分割方式

1. Partition Pass

TVM中的所有涉及计算图分割的方式底层实现都是通过Partition Pass来实现的。因为在TVM中,计算图是通过Relay表示的,封装为IRModule对象。计算图分割操作是以IR上的优化Pass实现的。经过Partition Pass之后的子图会包装为复合函数并在原始IRModule中以函数调用的方式出现。
在这里插入图片描述

2. dataflow_pattern

TVM的前端接口还提供了一组算子匹配函数封装在dataflow_pattern中,可以按照制定的pattern匹配子图,并且封装了分割函数可以把匹配的子图划分出来。
在这里插入图片描述

dataflow_pattern还可以进一步做子图rewrite。具体参考:
https://tvm.apache.org/docs/reference/langref/relay_pattern.html
https://tvm.apache.org/docs/reference/api/python/relay/dataflow_pattern.html

3. 内置图分割接口

这些内置的接口都对应着一个明确的后端硬件,其实现过程还是基于BYOC框架完成的。

# 这种内置的接口实质是基于BYOC框架实现的
# ACL
from tvm.relay.op.contrib.arm_compute_lib import partition_for_arm_compute_lib
module = partition_for_arm_compute_lib(module)

# TensorRT
from tvm.relay.op.contrib.tensorrt import partition_for_tensorrt
mod, config = partition_for_tensorrt(mod, params)

#Vitis
from tvm.relay.op.contrib.vitis_ai import partition_for_vitis_ai
mod = partition_for_vitis_ai(mod, params, dpu=dpu_target)

4. Pipeline Executor

使用graph_split的分割方式是把relay表示的计算图(一个IRModule)分割为两个子计算图即两个IRModule。与普通Relay表示的计算图一样,只不过是编译需要pipeline_executor_build对象。该分割方式不涉及后端执行平台的信息。

# 自定义逻辑拆分
from test_pipeline_executor import graph_split

split_config = [{
   "op_name": "nn.relu", "op_index": 0}]
subgraphs = graph_split(net["main"], split_config, params)
mod0, mod1 = subgraphs

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RNA-seq 差异分析的点点滴滴(1)

引言 本系列[1])将开展全新的转录组分析专栏,主要针对使用DESeq2时可能出现的问题和方法进行展开。 为何使用未经标准化的计数数据? DESeq2 工具包在接收输入时,期望得到的是未经处理的原始计数数据,比如从 RNA-seq 或其他高通量测…

基于单片机的观赏类水草养殖智能控制系统的设计(论文+源码)

1总体设计 通过需求分析,本设计观赏类水草养殖智能控制系统的总体架构如图2.1所示,为系统总体设计框图。系统采用STM32单片机作为系统主控核心,利用DS18B20温度传感器、TDS传感器、CO2传感器、光敏传感器实现水草养殖环境中水温、CO2浓度、T…

中兴光猫修改SN,MAC,修改地区,异地注册,改桥接,路由拨号

前言 请先阅读上一篇博客获取到光猫超级密码电信光猫获取超级密码 电信光猫天翼网关4.0获取超级密码教程 四川电信光猫 中兴 F1855V2 ZXHN F1855V2 telent权限 实战 实测_天翼4.0光猫超级密码-CSDN博客 修改SN-修改地区,光猫异地注册,设置桥接模式&#…

基于卷积神经网络的农作物病虫害识别系统(pytorch框架,python源码)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示: 基于卷积神经网络的农作物病虫害检测(pytorch框架)_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的农作物病虫害识别系统是在pytorch框架下实现的…

aardio 5分钟多线程开发简单入门

废话不多说 直接开干! 借用作者话说 虽然 aardio 的多线程开发非常简单,但是: 1、请先了解:「多线程」开发比「单线程」开发更复杂这个残酷的现实。 2、请先了解: aardio 这样的动态语言可以实现真多线程非常罕见。 建议先找任意的编程语言试…

PMP–知识卡片--人才九宫格

在人才盘点时,根据人才的绩效和潜能,分别作为横坐标和纵坐标,将人才盘点的结果划分为9个象限,人才分为九个类别,以便于分类管理,因材施教。

1.每日SQL----2024/11/7

题目: 计算用户次日留存率,即用户第二天继续登录的概率 表: iddevice_iddate121382024-05-03232142024-05-09332142024-06-15465432024-08-13523152024-08-13623152024-08-14723152024-08-15832142024-05-09932142024-08-151065432024-08-131123152024-…

解决yum命令报错“Could not resolve host: mirrorlist.centos.org

这个主要是yum源出了问题或者服务器网络有问题,检查网络排除网络问题后,可更换源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.k wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository…

qt QColorDialog详解

1、概述 QColorDialog是Qt框架中的一个对话框类,专门用于让用户选择颜色。它提供了一个标准的颜色选择界面,其中包括基本的颜色选择器(如调色板和颜色轮)、自定义颜色输入区域以及预定义颜色列表。QColorDialog支持RGB、HSV和十六…

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性,同一个商品在平台上不能出现多个链接,原因是平台需要保证一品一链的特点,以保障商品的集中竞价,所以说一个商品在整个得物平台上只能有一个商详链接,因此我们需要对一品多链的情…

第二十九篇——线性代数:“矩阵”到底怎么用?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学中的线性代数,再生活中的落地和应用,是我这个…

【dvwa靶场:XSS系列】XSS (Reflected)低-中-高级别,通关啦

一、低级low 简单拿捏 <script>alert(123)</script>二、中级middle 源码过滤了script但是没有过滤大小写&#xff0c;改成大写S <Script>alert(123)</script>三、高级high 比中级高&#xff0c;过滤了script并且以及大小写&#xff0c;使用其他标…

如何使用Varjo直接观看Blender内容

最近&#xff0c;开源的3D建模程序Blender为Varjo提供了出色的OpenXR支持&#xff0c;包括四视图和凹进渲染扩展。但是在Blender中&#xff0c;默认不启用VR场景检查。要开始使用VR场景检查&#xff0c;只需遵循以下步骤&#xff1a; 1. 下载并安装Blender 2.启用Blender VR场景…

Any 的原理以及实现

序言 在 C17 的更新中引入了一个特别有意思的类型&#xff0c;它提供了一种通用的方式来存储任何类型的数据而不需要提前指定类型&#xff0c; 该类型就是 any。  any 允许你将任意类型的数据存储在一个容器中&#xff0c;并且能够在运行时动态地访问该数据。话不多说&#xf…

aws申请ssl证书的方法【该证书仅供aws】

这里先声明&#xff0c;过程是对的&#xff0c;最终没有达到目的。 原本想着申请ssl证书替代&#xff0c;结果发现aws证书只能给自己的服务器用 但是整套申请证书以及下载&#xff0c;以及使用aws控制台的过程可以参考借鉴。 起因&#xff1a; 腾讯云的ssl证书越来越没法用了…

HFSS学习笔记(五)金属过孔、复制模型带激励等问题(持续更新...)

HFSS学习笔记&#xff08;五&#xff09;金属过孔、复制模型带激励等问题&#xff08;持续更新…&#xff09; 一、金属过孔设计 方法一&#xff1a;用介质减去金属圆柱体&#xff0c;然后再添加金属圆柱体 方法二&#xff1a;嵌入金属圆柱 圆柱过孔选择材料为“copper” HFS…

996引擎 - 活捉NPC

996引擎 - 活捉NPC 引擎触发 - 引擎事件(QF)事件处理模块 GameEvent测试文件参考资料 引擎触发 - 引擎事件(QF) cfg_game_data 配置 ShareNpc1 可以将QM和机器人的触发事件全部转到 QF 引擎触发是通用的,TXT的所有触发转换成小写后在LUA中就可使用,如说明书中缺省可反馈至对接群…

Vue:侦听属性

Vue&#xff1a;侦听属性 watch深度侦听异步任务 watch 在Vue中&#xff0c;允许用户在数据改变时&#xff0c;做出一定的处理。 语法&#xff1a; new Vue({watch:{属性名:{handler(newValue, oldValue){// 函数体} }} })当一个属性被写入watch中&#xff0c;每当这个属性…

SDL事件相关

文章目录 事件相关的函数和数据结构用户自定义事件代码相关&#xff1a; 事件相关的函数和数据结构 SDL_WaitEvent :等待一个事件SDL_PushEvent 发送一个事件SDL_PumpEvents(): 将硬件设备产生的时间放入事件队列 &#xff0c;用于读取事件&#xff0c;在调用该函数之前&#…

UWB技术在智能资产管理中的应用

超宽带&#xff08;UWB&#xff09;技术是一种高精度、低功耗的定位技术&#xff0c;在现代智能管理系统中得到了广泛的应用。凭借高效的数据传输和精确的定位能力&#xff0c;UWB在资产管理、仓储物流、人员定位等领域展现了巨大的潜力。通过与固定资产管理系统和人员定位系统…