混合前端开发人员指南

14 篇文章 6 订阅

混合前端开发人员指南

如果您是开发人员:

1.正在尝试编写一些TVM尚不支持的基本模式,也许“ 混合前端语言参考”对您来说是一个更好的地方。

2.想知道这个模块的实现细节,您就在这里!

特点

软件仿真

在软件仿真中,最有趣的是装饰器【tvm.hybrid.script】。这个装饰器可以帮助两件事:

  1. 导入运行时变量

  2. 根据传递的参数重载函数

如果我错了,请纠正我:我相信如何实现1.是危险的,但是我别无选择。我所做的是将这些名称添加到python字典【func.__global__】中,并在调用func完成后将这些名称清除。

重载很简单:修饰器检查参数的类型并确定实际应调用的函数。

后端编译

编译是一个很大的模块,您可以查看【python/tvm/hybrid/var_decl.py】和【python/tvm/hybrid/parser.py】 了解更多详细信息。第一阶段确定用法,或更准确地说是每个变量的声明,第二阶段确定实际的IR生成。

属性

到目前为止,仅支持张量的shape属性。您可以【python/tvm/hybrid/parser.py】中查看更多【visit_Subscript 】的详细信息。这是一个骇人的解决方案,我只检查下标时的属性。

循环

在HalideIR,循环总共有4种类型:【serial】,【unrolled】,【parallel】,和【vectorized】。

注意

与HalideIR中的不同,在【loop_type(a, b)】中【a】是起点,并且【b】是迭代的行程数。这里【loop_type(a, b)】表示【[a, b)】。因此,将其降低到HalideIR时,我们需要执行【start, extent = a, b - a

注意

在HalideIR中,这些是枚举,它们是被动形式。在这里,我们使用活动形式来注释循环,因为它们已经准备好运行。

变量

由于中没有变量HalideIR,因此所有可变变量都将降为大小为1的数组。它将变量的第一个存储作为其声明。

数学内在

到目前为止,这些数学内部函数,【log】,【exp】,【sigmoid】,【tanh】,【power】和【popcount】,都支持。数学内在函数将由装饰器导入。除【popcount】和【sigmoid】外,大多数内在函数都是借用的库实现。我手动实现了它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值