{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 测试 Tedd" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import set_env" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# import numpy as np\n", "from IPython.display import display_svg\n", "from tvm import te, build, lower\n", "# from tvm_book.testing.relay.viz import graphviz_relay\n", "from tvm.contrib import tedd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
# from tvm.script import tir as T\n",
       "\n",
       "@T.prim_func\n",
       "def main(A: T.Buffer((1,), "float32"), B: T.Buffer((1,), "float32"), C: T.Buffer((1,), "float32")):\n",
       "    T.func_attr({"tir.noalias": T.bool(True)})\n",
       "    # with T.block("root"):\n",
       "    for i in range(1):\n",
       "        with T.block("C"):\n",
       "            v_i = T.axis.spatial(1, i)\n",
       "            T.reads(A[v_i], B[v_i])\n",
       "            T.writes(C[v_i])\n",
       "            C[v_i] = A[v_i] + B[v_i]\n",
       "
\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A = te.placeholder((1,), name=\"A\")\n", "B = te.placeholder((1,), name=\"B\")\n", "C = te.compute(A.shape, lambda i: A[i] + B[i], name=\"C\")\n", "sch = te.create_schedule(C.op)\n", "ir_mod = lower(sch, [A, B, C], name=\"test_add\")\n", "rt_mod = build(ir_mod, target=\"llvm\")\n", "func = te.create_prim_func([A, B, C])\n", "func.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "Dataflow Graph\n", "\n", "\n", "\n", "Stage_0\n", "\n", "\n", "\n", "\n", "A\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "\n", "Tensor_0_0\n", "\n", "[1]\n", "float32\n", "\n", "\n", "\n", "Stage_0:O_0->Tensor_0_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_2\n", "\n", "\n", "0\n", "\n", "\n", "C\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_0_0->Stage_2:I_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_1\n", "\n", "\n", "\n", "\n", "B\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "\n", "Tensor_1_0\n", "\n", "[1]\n", "float32\n", "\n", "\n", "\n", "Stage_1:O_0->Tensor_1_0\n", "\n", "\n", "\n", "\n", "\n", "Tensor_1_0->Stage_2:I_1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_2_0\n", "\n", "[1]\n", "float32\n", "\n", "\n", "\n", "Stage_2:O_0->Tensor_2_0\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph = tedd.viz_dataflow_graph(sch, show_svg=True)\n", "display_svg(graph)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "Schedule Tree\n", "\n", "\n", "cluster_legend\n", "\n", "Legend\n", "\n", "\n", "\n", "legend\n", "\n", "\n", "\n", "\n", "kDataPar\n", "\n", "\n", "\n", "\n", "kThreadIndex\n", "\n", "\n", "\n", "\n", "kCommReduce\n", "\n", "\n", "\n", "\n", "kOrdered\n", "\n", "\n", "\n", "\n", "kOpaque\n", "\n", "\n", "\n", "\n", "kUnrolled\n", "\n", "\n", "\n", "\n", "kVectorized\n", "\n", "\n", "\n", "\n", "kParallelized\n", "\n", "\n", "\n", "\n", "kTensorized\n", "\n", "\n", "\n", "Stage_0\n", "\n", "\n", "A\n", "Scope: \n", "\n", "\n", "\n", "ROOT\n", "\n", "ROOT\n", "\n", "\n", "\n", "Stage_0->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_1\n", "\n", "\n", "B\n", "Scope: \n", "\n", "\n", "\n", "Stage_1->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_2\n", "\n", "\n", "C\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "i(kDataPar)\n", "I.Range(0, 1)\n", "\n", "[A[i] + B[i]]\n", "\n", "\n", "\n", "Stage_2->ROOT\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sch = sch.normalize()\n", "tree = tedd.viz_schedule_tree(sch, show_svg=True)\n", "\n", "# tedd.viz_schedule_tree(s, dot_file_path=\"/tmp/scheduletree.dot\")\n", "display_svg(tree)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "IterVar Relationship Graph\n", "\n", "\n", "cluster_legend\n", "\n", "Legend\n", "\n", "\n", "cluster_Stage_0\n", "\n", "A\n", "\n", "\n", "cluster_Stage_1\n", "\n", "B\n", "\n", "\n", "cluster_Stage_2\n", "\n", "C\n", "\n", "\n", "\n", "legend\n", "\n", "\n", "\n", "\n", "kDataPar\n", "\n", "\n", "\n", "\n", "kThreadIndex\n", "\n", "\n", "\n", "\n", "kCommReduce\n", "\n", "\n", "\n", "\n", "kOrdered\n", "\n", "\n", "\n", "\n", "kOpaque\n", "\n", "\n", "\n", "\n", "kUnrolled\n", "\n", "\n", "\n", "\n", "kVectorized\n", "\n", "\n", "\n", "\n", "kParallelized\n", "\n", "\n", "\n", "\n", "kTensorized\n", "\n", "\n", "\n", "\n", "\n", "IterVar_2_0\n", "\n", "\n", "0\n", "\n", "\n", "i(kDataPar)\n", "I.Range(0, 1)\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from graphviz import Source\n", "# tedd.viz_itervar_relationship_graph(s, dot_file_path=\"/tmp/itervar.dot\")\n", "dot_string = tedd.viz_itervar_relationship_graph(sch, output_dot_string=True)\n", "src = Source(dot_string)\n", "display_svg(src)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "m = te.var(\"m\")\n", "n = te.var(\"n\")\n", "X = te.placeholder((m, n), name=\"X\")\n", "s_state = te.placeholder((m, n))\n", "s_init = te.compute((1, n), lambda _, i: X[0, i])\n", "s_update = te.compute((m, n), lambda t, i: s_state[t-1, i] + X[t, i])\n", "res = te.scan(s_init, s_update, s_state, X)\n", "sch = te.create_schedule(res.op)\n", "sch = sch.normalize() # 类型和 shape 推断" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: scan.idx\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: scan.idx\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier17::{lambda(tvm::tir::Add, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 11: _ZN3tvm7runtime13PackedFuncObj\n", " 12: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 13: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 14: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 15: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 16: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 17: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 18: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 19: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 20: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: m\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: m\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier18::{lambda(tvm::tir::Sub, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier17::{lambda(tvm::tir::Add, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 11: _ZN3tvm7runtime13PackedFuncObj\n", " 12: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 13: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 14: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 15: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 16: _ZN3tvm7runtime13PackedFuncObj\n", " 17: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 18: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 19: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 20: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 21: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 22: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 23: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 24: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 25: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", "\n", "\n", "\n", "IterVar Relationship Graph\n", "\n", "\n", "cluster_legend\n", "\n", "Legend\n", "\n", "\n", "cluster_Stage_0\n", "\n", "X\n", "\n", "\n", "cluster_Stage_1\n", "\n", "compute\n", "\n", "\n", "cluster_Stage_2\n", "\n", "placeholder\n", "\n", "\n", "cluster_Stage_3\n", "\n", "compute\n", "\n", "\n", "cluster_Stage_4\n", "\n", "scan\n", "\n", "\n", "\n", "legend\n", "\n", "\n", "\n", "\n", "kDataPar\n", "\n", "\n", "\n", "\n", "kThreadIndex\n", "\n", "\n", "\n", "\n", "kCommReduce\n", "\n", "\n", "\n", "\n", "kOrdered\n", "\n", "\n", "\n", "\n", "kOpaque\n", "\n", "\n", "\n", "\n", "kUnrolled\n", "\n", "\n", "\n", "\n", "kVectorized\n", "\n", "\n", "\n", "\n", "kParallelized\n", "\n", "\n", "\n", "\n", "kTensorized\n", "\n", "\n", "\n", "\n", "IterVar_1_0\n", "\n", "\n", "0\n", "\n", "\n", "_(kDataPar)\n", "I.Range(0, 1)\n", "\n", "\n", "\n", "IterVar_1_1\n", "\n", "\n", "1\n", "\n", "\n", "i(kDataPar)\n", "range(min=0, ext=n)Range(0x97932d0)\n", "\n", "\n", "\n", "\n", "IterVar_3_0\n", "\n", "\n", "0\n", "\n", "\n", "t(kDataPar)\n", "range(min=(scan.idx + 1), ext=1)Range(0x9a77740)\n", "\n", "\n", "\n", "IterVar_3_1\n", "\n", "\n", "1\n", "\n", "\n", "i(kDataPar)\n", "range(min=0, ext=n)Range(0x9a55a40)\n", "\n", "\n", "\n", "IterVar_4_0\n", "\n", "\n", "0\n", "\n", "\n", "scan_idx(kOrdered)\n", "range(min=1, ext=(m - 1))Range(0x84895c0)\n", "\n", "\n", "\n", "IterVar_4_1\n", "\n", "\n", "-1\n", "\n", "\n", "scan_out0_i1(kOpaque)\n", "range(min=0, ext=n)Range(0x95de420)\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from graphviz import Source\n", "# tedd.viz_itervar_relationship_graph(s, dot_file_path=\"/tmp/itervar.dot\")\n", "dot_string = tedd.viz_itervar_relationship_graph(sch, output_dot_string=True)\n", "src = Source(dot_string)\n", "display_svg(src)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:34] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: scan.idx\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: scan.idx\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier17::{lambda(tvm::tir::Add, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 11: _ZN3tvm7runtime13PackedFuncObj\n", " 12: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 13: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 14: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 15: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 16: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 17: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 18: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 19: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 20: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: m\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: m\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier18::{lambda(tvm::tir::Sub, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier17::{lambda(tvm::tir::Add, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 11: _ZN3tvm7runtime13PackedFuncObj\n", " 12: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 13: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 14: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 15: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 16: _ZN3tvm7runtime13PackedFuncObj\n", " 17: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 18: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 19: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 20: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 21: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 22: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 23: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 24: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 25: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:70: Warning: Didn't find variable definition for: n\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/ir/./../utils.h:46: Warning: TVMScript printer falls back to the legacy ReprPrinter with the error:\n", "[10:36:35] /media/pc/data/lxw/ai/tvm/src/script/printer/tir/expr.cc:76: IndexError: Variable is not defined in the environment: n\n", "Stack trace:\n", " 0: tvm::script::printer::PrintVar(tvm::tir::Var const&, tvm::ObjectPath const&, tvm::script::printer::IRDocsifier const&)\n", " 1: _ZN3tvm7runtime13PackedFuncObj9ExtractorINS0_16PackedFuncSubObjIZNS0_15TypedPackedFuncIFNS_6script7printer3DocENS_3tir3VarENS_10ObjectPathENS6_11IRDocsifierEEE17AssignTypedLambdaINS6_L27__make_functor_IRDocsifier0MUlS9_SA_SB_E_EEEvT_EUlRKNS0_7TVMArgsEPNS0_11TVMRetValueEE_EEE4CallEPKS1_SH_SL_\n", " 2: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 3: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 4: tvm::script::printer::ExprDoc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 5: tvm::runtime::TypedPackedFunc::AssignTypedLambda(tvm::script::printer::__make_functor_IRDocsifier14::{lambda(tvm::Range, tvm::ObjectPath, tvm::script::printer::IRDocsifier)#1})::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 6: _ZN3tvm7runtime13PackedFuncObj\n", " 7: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()(tvm::runtime::ObjectRef&, tvm::ObjectPath&, tvm::script::printer::IRDocsifier&) const\n", " 8: tvm::script::printer::Doc tvm::script::printer::IRDocsifierFunctor::operator()(tvm::runtime::String const&, tvm::runtime::ObjectRef, tvm::ObjectPath, tvm::script::printer::IRDocsifier) const\n", " 9: tvm::script::printer::Doc tvm::script::printer::IRDocsifierNode::AsDoc(tvm::runtime::ObjectRef const&, tvm::ObjectPath const&) const\n", " 10: tvm::script::printer::Docsify[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::script::printer::IRDocsifier const&, tvm::script::printer::Frame const&, tvm::PrinterConfig const&)\n", " 11: tvm::script::printer::ReprPrintIR[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::PrinterConfig const&)\n", " 12: tvm::TVMScriptPrinter::Script[abi:cxx11](tvm::runtime::ObjectRef const&, tvm::runtime::Optional const&)\n", " 13: tvm::script::printer::RedirectedReprPrinterMethod(tvm::runtime::ObjectRef const&, tvm::ReprPrinter*)\n", " 14: tvm::runtime::TypedPackedFunc, std::allocator > (tvm::runtime::ObjectRef)>::AssignTypedLambda(tvm::__mk_TVM0::{lambda(tvm::runtime::ObjectRef)#1}, std::__cxx11::basic_string, std::allocator >)::{lambda(tvm::runtime::TVMArgs const&, tvm::runtime::TVMRetValue*)#1}::operator()(tvm::runtime::TVMArgs const, tvm::runtime::TVMRetValue) const\n", " 15: _ZN3tvm7runtime13PackedFuncObj\n", "\n", "\n" ] }, { "data": { "image/svg+xml": [ "\n", "\n", "Schedule Tree\n", "\n", "\n", "cluster_legend\n", "\n", "Legend\n", "\n", "\n", "\n", "legend\n", "\n", "\n", "\n", "\n", "kDataPar\n", "\n", "\n", "\n", "\n", "kThreadIndex\n", "\n", "\n", "\n", "\n", "kCommReduce\n", "\n", "\n", "\n", "\n", "kOrdered\n", "\n", "\n", "\n", "\n", "kOpaque\n", "\n", "\n", "\n", "\n", "kUnrolled\n", "\n", "\n", "\n", "\n", "kVectorized\n", "\n", "\n", "\n", "\n", "kParallelized\n", "\n", "\n", "\n", "\n", "kTensorized\n", "\n", "\n", "\n", "Stage_0\n", "\n", "\n", "X\n", "Scope: \n", "\n", "\n", "\n", "ROOT\n", "\n", "ROOT\n", "\n", "\n", "\n", "Stage_0->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_1\n", "\n", "\n", "compute\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "_(kDataPar)\n", "I.Range(0, 1)\n", "\n", "\n", "1\n", "\n", "\n", "i(kDataPar)\n", "range(min=0, ext=n)Range(0x98c8c70)\n", "\n", "[X[0, i]]\n", "\n", "\n", "\n", "Stage_1->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_2\n", "\n", "\n", "placeholder\n", "Scope: \n", "\n", "\n", "\n", "Stage_2->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_3\n", "\n", "\n", "compute\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "t(kDataPar)\n", "range(min=(scan.idx + 1), ext=1)Range(0x9908c50)\n", "\n", "\n", "1\n", "\n", "\n", "i(kDataPar)\n", "range(min=0, ext=n)Range(0x9b38800)\n", "\n", "[placeholder[t - 1, i] + X[t, \n", "i]]\n", "\n", "\n", "\n", "Stage_3->ROOT\n", "\n", "\n", "\n", "\n", "\n", "Stage_4\n", "\n", "\n", "scan\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "scan_idx(kOrdered)\n", "range(min=1, ext=(m - 1))Range(0x985fef0)\n", "\n", "\n", "\n", "Stage_4->ROOT\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tree = tedd.viz_schedule_tree(sch, show_svg=True)\n", "\n", "# tedd.viz_schedule_tree(s, dot_file_path=\"/tmp/scheduletree.dot\")\n", "display_svg(tree)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "Dataflow Graph\n", "\n", "\n", "\n", "Stage_0\n", "\n", "\n", "\n", "\n", "X\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "\n", "Tensor_0_0\n", "\n", "[m, n]\n", "float32\n", "\n", "\n", "\n", "Stage_0:O_0->Tensor_0_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_1\n", "\n", "\n", "0\n", "\n", "\n", "compute\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "\n", "Tensor_0_0->Stage_1:I_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_3\n", "\n", "\n", "0\n", "\n", "\n", "compute\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_0_0->Stage_3:I_1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_1_0\n", "\n", "[1, n]\n", "float32\n", "\n", "\n", "\n", "Stage_1:O_0->Tensor_1_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_2\n", "\n", "\n", "\n", "\n", "placeholder\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "\n", "Tensor_2_0\n", "\n", "[m, n]\n", "float32\n", "\n", "\n", "\n", "Stage_2:O_0->Tensor_2_0\n", "\n", "\n", "\n", "\n", "\n", "Tensor_2_0->Stage_3:I_0\n", "\n", "\n", "\n", "\n", "\n", "Tensor_3_0\n", "\n", "[m, n]\n", "float32\n", "\n", "\n", "\n", "Stage_3:O_0->Tensor_3_0\n", "\n", "\n", "\n", "\n", "\n", "Stage_4\n", "\n", "\n", "0\n", "\n", "\n", "scan\n", "Scope: \n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_3_0->Stage_4:I_0\n", "\n", "\n", "\n", "\n", "\n", "Tensor_3_0->Stage_4:I_1\n", "\n", "\n", "\n", "\n", "\n", "Tensor_4_0\n", "\n", "[m, n]\n", "float32\n", "\n", "\n", "\n", "Stage_4:O_0->Tensor_4_0\n", "\n", "\n", "\n", "\n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "graph = tedd.viz_dataflow_graph(sch, show_svg=True)\n", "display_svg(graph)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "tvmz", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }