04 2024 档案
摘要:定义 算子融合 就是将多个计算单元合并到一个计算单元里完成计算,减少中间数据读写内存的操作,从而节省计算时间。 TVM中将算子融合分为四种: kElemWise:两个tensor之间按照元素逐个操作的算子,实际上所有的四则运算都是这种类型 kBroadcast:带有广播操作的算子 kInjectiv
阅读全文
摘要:定义 TVM从Halide继承了计算与调度分离的思想,并在其内部重用了部分Halide的调度原语,也引入了一些新的调度原语,用于优化GPU和专用加速器性能。 先举个例子吧: import tvm from tvm import te n = 1024 dtype = "float32" A = te
阅读全文
摘要:定义 移除无用函数,Remove Unused Function,顾名思义,就是删除Module中定义但未用到的函数 当然,它也是一个模块级的优化, 举例子: def get_mod(): mod = tvm.IRModule({}) fn1 = relay.Function([], relay.c
阅读全文
摘要:定义(What) InferType,类型推断,顾名思义,给表达式进行类型的推断 直接上代码 import tvm from tvm import relay import numpy as np def get_demo_mod(): a = relay.var("a", shape=(2, 3,
阅读全文
摘要:TVM 提供了详细日志记录功能,允许提交跟踪级别的调试消息,而不会影响生产中 TVM 的二进制大小或运行时。你可以在你的代码中使用 VLOG 如下: void Foo(const std::string& bar) { VLOG(2) << "Running Foo(" << bar << ")";
阅读全文
摘要:定义(What) 公共子表达式消除 就是如果表达式E的值已经计算的到了,并且自计算的到值后E的值就不再改变了,就说,表达式E在后续计算中是一个公共表达式。 简单说,该表达式上面已经执行过了,下面没必要再执行了 举个例子: import tvm from tvm import relay from t
阅读全文