tvm
文章平均质量分 81
yuanfz1998
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
TVM Relay softmax算子调度分析
tvm relay 算子调度分析原创 2022-08-05 23:32:24 · 973 阅读 · 0 评论 -
[TVM PR 开发随笔] quantized::leakyrelu
TVM PR 11729开发思路和代码实现原创 2022-07-18 20:33:12 · 1013 阅读 · 0 评论 -
TVM AVX512-VNNI原语手工调度matmul
TVM vnni tensorization原创 2022-07-11 20:53:16 · 1112 阅读 · 0 评论 -
TVM TIR 各种Node类型举例
TVM TIR中有很多类型的Node。这里收录了全部可打印的类型:StmtNodeAnyNodePrimExprNodeTypeNodePrimFuncNodeIRModuleNodeArrayNodeIterVarNodeRangeNodeBufferNodeDataProducerNodeStringObjBufferRegionNodeTargetNode为了更好地理解这些Node。一方面可以去看它的数据结构,另一方面,也希望可以把它们和TIR代码对应起来。例1:原创 2022-03-27 02:05:46 · 942 阅读 · 1 评论 -
TVM (Typed)PackedFunc 作用
解析TVM源码中经常会看到PackedFunc,PackedFunc是为了支持多语言(Python,C++等)设计的封装结构。它使得某个C++的函数可以在注册后由Python调用,反之亦然。定义在tvm/runtime/packed_func.h下。TypedPackedFunc,顾名思义就是注明类型的封装函数。A PackedFunc wrapper to provide typed function signature. It is backed by a PackedFunc internal原创 2022-03-22 05:26:59 · 1765 阅读 · 0 评论 -
TVM TIR Pass - Lower Intrin/legalization 优化原理和代码解析
理论预备知识LLVM。LLVM是一个后端编译器组件,支持ARM/x86。在目标平台上,TVM生成的代码会交给LLVM继续编译和优化。LLVM Instrinsic function(LLVM内置函数),简单来说就是LLVM的函数API。一般来讲性能良好。llvm official docLower(我翻译成“下译”),指将IR映射成更偏硬件的过程。是什么Lower Intrin(sic)是TIR的Pass之一。它将TIR函数映射映射到LLVM的内置函数。Lower Intrin和legal原创 2022-03-19 21:13:59 · 1356 阅读 · 0 评论 -
TVM TIR Pass - Loop Unroll 优化原理和代码解析
理论预备知识ForNode对象的数据结构class ForNode : public StmtNode { public: /*! \brief The loop variable. */ Var loop_var; /*! \brief The minimum value of iteration. */ PrimExpr min; /*! \brief The extent of the iteration. */ PrimExpr extent; /*! \br原创 2022-03-05 00:55:20 · 1546 阅读 · 0 评论 -
TVM Codegen概述
为什么不同硬件后端厂商提供不同的库,使得用户需要学习很多不同的编程范式。比如MKLDNN,cuDNN,TensorRT,因此需要一个统一的编程接口去调用这些库,从而让TVM可以正确依赖于这些后端库生成对应的代码。是什么let all users and hardware backend providers stand on the same pageprovide a feasible solution to allow specialized hardware or library to on原创 2022-03-01 17:17:56 · 876 阅读 · 0 评论 -
TVM Pass概述
use pass infraDesign and ArchitecturePass又称transform,每一个transform要么把现有程序转换并优化为一个等价的程序,要么把程序lower到下层。relay/transform包括很多优化模型用的pass,包括常量折叠(constant folding)和死代码删除(dead-code elimination)等。这里拿tests/python/relay/test_pass_fold_constant.py里的单测作为例子:import num原创 2022-02-28 18:19:52 · 1353 阅读 · 0 评论 -
TVM TIR Pass - CSE (Common Subexpression Elimination) 优化原理和代码解析 PR#9482
预备知识TIR Let BindingLet (var, value, body) 将value求值赋给var,然后返回body的求值结果。let将表达式 Expr 绑定到局部作用域的不可变 var 中。scope:作用域/代码块。 TVM AST将作用域组建为树形结构。外侧作用域包含内侧作用域的关系被表示为父节点和子节点。父节点的变量对子节点可见但反之不然。判断变量是否在某个作用域内是CSE算法的一个重要的部分。是什么TIR代码来源于relay和其他Pass。生成TIR代码的过程是自动原创 2022-02-24 22:24:03 · 1594 阅读 · 0 评论
分享