TVM Pass概述

是什么

Pass又称transform,每一个transform要么把现有程序转换并优化为一个等价的程序,要么把程序lower到下层。
Pass和Schedule的区别在于,前者包括一些Schedule Primitives(调度原语),其用于生成IR,而后者是提供了修改IR的方法。

TVM中的Pass有两种:

  • Relay层的Pass。relay/transforms/包括很多优化图结构用的Pass,包括fusion(图融合),常量折叠(constant folding)和死代码删除(dead-code elimination)等。属于前端优化。
  • TIR层的Pass。tir/transforms包括偏向编译器方面的优化,比如prefetch注入,unrollLoop等。属于后端优化。

实现上,Pass分为:

  • Module-Level Pass
    • 利用全局信息进行优化
    • 可以删减Function,如DSE Pass
    • 核心Pass函数是PackedFunc类型
  • Function-Level Pass
    • 对Module中的每个Function进行优化,只有局部信息
    • 不允许删减Function

Pass的转化逻辑可以简化为:IRModule -> Pass -> … -> IRModule

这里拿tests/python/relay/test_pass_fold_constant.py里的单测作为例子:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值