开发# TVM 解读 项目配置 配置 TVM 环境(ubuntu 平台) TVM 环境搭建方案 运行时(C++) TVM Runtime base tvm::runtime::Object TypeIndex Object 对象系统常用宏 tvm::runtime::ObjectPtr tvm::runtime::ObjectRef as 内存机制 make_object make_inplace_array_object ObjAllocatorBase SimpleObjAllocator 解读 packed_func PackedFuncObj PackedFuncSubObj PackedFunc TypedPackedFunc make_node() TVM 宏 env_func EnvFuncNode 和 EnvFunc TypedEnvFunc EnvFunc 的实现 repr ReprPrinter Dump node functor NodeFunctor TVM_STATIC_IR_FUNCTOR TVM FFI tvm._ffi _init_api() TVM 常用数据结构 DLDeviceType DLDevice DLDataTypeCode DLDataType DLTensor DLManagedTensor TVMValue TVMArgs register_object register_object 示例 Relay 表达式 TempExprNode 和 TempExpr TempExpr 示例 解读张量表达式 tvm.te.tag.tag_scope() tag_scope conv 解读 tvm.topi saturate (有 bug) 浮点数到定点的转换(TOPI) tvm.tir 解读 补码 背景:使用无符号数字进行计算 解读 q_multiply_shift() Q 表示法 Q 表示法的定义 Q 表示法的数学运算 Q 数加法 Q 数减法 Q 数乘法 Q 数除法 定点数示例 为什么使用定点表示法? 定点乘法简介 符号扩展 定点加法 避免溢出的防护位 定点表示法的乘法示例 无符号数的无符号乘法 二进制补码的重要特征 无符号数乘以有符号数 有符号数乘以有符号数 浮点数转定点数(C++) 浮点转定点 tvm.tir.analysis 计算分配内存 计算每个 scope 内存分配 计算混合 scope 的内存分配 full_mod_calculator TVM op nn.pad 属性 对象属性辅助函数 TVM_DECLARE_ATTRS 和 TVM_ATTR_FIELD NullValue 和 NullValue<DataType> AttrError AttrFieldInfoNode AttrFieldInfo BaseAttrsNode Attrs TestAttrs 示例 DictAttrs 和 DictAttrsNode AttrsWithDefaultValues 和 WithAttr WithAttrs 和 WithoutAttr 属性实现细节 AttrNopEntry AttrNormalVisitor AttrsSEqualVisitor 和 AttrsSHashVisitor AttrInitEntry SetValue 和 SetIntValue AttrInitVisitor 其他属性模板函数 AttrsNode 和 BaseAttrsNode TVM 表达式 op IR op 属性 op 临时属性 op 注册 类型推断 表达式 BaseExprNode 和 BaseExpr PrimExprNode 和 PrimExpr PrimExpr 的子类 RelayExprNode 和 RelayExpr RelayExprNode 成员函数 GlobalVarNode 和 GlobalVar 表示范围和整数字面量 PackedFuncValueConverter 添加 relay 算子 解读 ExprFunctor ExprFunctor ExprVisitor MixedModeVisitor ExprMutator MixedModeMutator ExprRewriter PostOrderRewrite PostOrderVisit ExpandDataflow 和 ExpandANormalForm TVM 节点反射 NodeGetAttr、NodeListAttrNames 和 MakeNode 解读 TVM 变换 DefuseOps 除法转乘法 Span 源码映射 SourceName 和 SourceNameNode SpanNode 和 Span SequentialSpanNode 和 SequentialSpan SourceNode 和 Source SourceMapNode 和 SourceMap 构建源信息 relay.Span NameSupply 内存计划 add 内存计划 UMA 开发 快速入门 UMA Relay Relay 前端 common AttrCvt ONNX 前端接口 OnnxOpConverter BatchNorm 解析 ONNX GraphProto from_onnx() 解读 tvm.relay.quantize 量化配置 预热阶段 参数绑定 模型简化 量化 QPartitionExpr 自定义分区 量化分区 nn.relu 和 nn.max_pool2d 分区 dense+add+relu 分区 量化注解 partition_conversions 测试模块 运行时错误 测试 op 翻译 测试深度回调 代码生成 代码生成简介 tvm.contrib Verilator 集成 Verilator 代码生成测试 TVM 应用 TVM 部署试验 fake_quantization_to_integer 测试 fake_quantize_conv fake_quantize_conv_per_channel 外部目标代码生成 add pipeline pack_buffer_simple pack_buffer_intermediate target-codegen-vm-basic stack_vm_basic stack_vm_loop stack_vm_cond vm_parallel codegen_decl_buffer target-codegen-static-init static_callback static_init target_codegen_c_host c_host add add_pipeline reinterpret ceil floor round call_packed 测试定点乘法 测试 relay.fixed_point_multiply 逐通道定点乘法 fixed point multiply with vectorization cpp-book