You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by lm...@apache.org on 2020/09/21 00:29:21 UTC

[incubator-tvm-site] branch asf-site updated: Docs build at Sun Sep 20 17:29:09 PDT 2020

This is an automated email from the ASF dual-hosted git repository.

lmzheng pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-tvm-site.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 756de0d  Docs build at Sun Sep 20 17:29:09 PDT 2020
756de0d is described below

commit 756de0d0f5a947a36193e107b97aac9eaaca1c43
Author: Lianmin Zheng <li...@gmail.com>
AuthorDate: Sun Sep 20 17:29:10 2020 -0700

    Docs build at Sun Sep 20 17:29:09 PDT 2020
---
 .../tune_conv2d_layer_cuda.py}                     |  152 +-
 .../tune_matmul_x86.py                             |   50 +-
 .../tune_conv2d_layer_cuda.ipynb                   |  205 +++
 .../tune_matmul_x86.ipynb                          |   16 +-
 .../sphx_glr_tune_conv2d_layer_cuda_thumb.png      |  Bin 0 -> 26786 bytes
 docs/_sources/api/python/auto_scheduler.rst.txt    |   15 +
 .../auto_scheduler/sg_execution_times.rst.txt      |    5 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.rst.txt  | 1535 ++++++++++++++++++
 .../auto_scheduler/tune_matmul_x86.rst.txt         |  119 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |   16 +-
 .../tutorials/autotvm/tune_conv2d_cuda.rst.txt     |   42 +-
 .../tutorials/autotvm/tune_simple_template.rst.txt |   20 +-
 .../tutorials/dev/sg_execution_times.rst.txt       |    6 +-
 .../frontend/deploy_model_on_android.rst.txt       |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    2 +-
 .../tutorials/frontend/deploy_prequantized.rst.txt |    4 +-
 .../frontend/deploy_prequantized_tflite.rst.txt    |    4 +-
 .../tutorials/frontend/deploy_ssd_gluoncv.rst.txt  |    2 +-
 docs/_sources/tutorials/frontend/from_onnx.rst.txt |    2 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |   40 +-
 .../get_started/cross_compilation_and_rpc.rst.txt  |    2 +-
 .../get_started/relay_quick_start.rst.txt          |    2 +-
 .../get_started/sg_execution_times.rst.txt         |    8 +-
 .../get_started/tensor_expr_get_started.rst.txt    |    2 +-
 docs/_sources/tutorials/index.rst.txt              |   20 +
 docs/_sources/tutorials/language/scan.rst.txt      |   12 +-
 .../tutorials/language/schedule_primitives.rst.txt |   22 +-
 .../tutorials/language/sg_execution_times.rst.txt  |   18 +-
 docs/_sources/tutorials/language/tensorize.rst.txt |    4 +-
 .../tutorials/language/tuple_inputs.rst.txt        |   12 +-
 .../tutorials/micro/sg_execution_times.rst.txt     |    4 +-
 .../tutorials/optimize/opt_conv_cuda.rst.txt       |    2 +-
 .../tutorials/optimize/opt_conv_tensorcore.rst.txt |    6 +-
 docs/_sources/tutorials/optimize/opt_gemm.rst.txt  |   28 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |   10 +-
 docs/_sources/tutorials/topi/intro_topi.rst.txt    |    2 +-
 .../tutorials/topi/sg_execution_times.rst.txt      |    4 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    4 +-
 .../vta/tutorials/autotvm/tune_relay_vta.rst.txt   |    2 +-
 .../frontend/deploy_classification.rst.txt         |    4 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    4 +-
 .../_sources/vta/tutorials/matrix_multiply.rst.txt |    4 +-
 .../vta/tutorials/optimize/convolution_opt.rst.txt |    4 +-
 .../tutorials/optimize/matrix_multiply_opt.rst.txt |    8 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../vta/tutorials/sg_execution_times.rst.txt       |    6 +-
 .../_sources/vta/tutorials/vta_get_started.rst.txt |    4 +-
 docs/api/doxygen/auto__schedule_8h.html            |    2 +-
 docs/api/doxygen/auto__schedule_8h__incl.svg       |  949 +++++------
 docs/api/doxygen/auto__schedule_8h_source.html     |    2 +-
 ...uto__scheduler_1_1SearchPolicyNode-members.html |    2 +-
 ...tvm_1_1auto__scheduler_1_1SearchPolicyNode.html |   10 +-
 docs/api/doxygen/functions_m.html                  |    2 +-
 docs/api/doxygen/functions_vars_m.html             |    2 +-
 docs/api/doxygen/measure_8h_source.html            |    2 +-
 docs/api/doxygen/measure__record_8h_source.html    |    2 +-
 docs/api/doxygen/search/all_d.js                   |    2 +-
 docs/api/doxygen/search/variables_c.js             |    2 +-
 docs/api/doxygen/search__policy_8h.html            |    3 +-
 docs/api/doxygen/search__policy_8h__incl.svg       |  937 +++++------
 docs/api/doxygen/search__policy_8h_source.html     |   32 +-
 .../javadoc/org/apache/tvm/class-use/Function.html |   12 +-
 .../javadoc/org/apache/tvm/class-use/Module.html   |    8 +-
 docs/api/python/auto_scheduler.html                |  173 +-
 docs/api/python/index.html                         |    2 +
 docs/api/python/relay/nn.html                      |   11 +-
 docs/api/typedoc/assets/js/main.js                 |    2 +-
 docs/api/typedoc/classes/bytestreamreader.html     |   13 +-
 docs/api/typedoc/classes/cachedcallstack.html      |   35 +-
 docs/api/typedoc/classes/dlcontext.html            |   11 +-
 docs/api/typedoc/classes/dldatatype.html           |   13 +-
 docs/api/typedoc/classes/environment.html          |   13 +-
 docs/api/typedoc/classes/ffilibrary.html           |   21 +-
 docs/api/typedoc/classes/graphruntime.html         |   17 +-
 docs/api/typedoc/classes/instance.html             |   41 +-
 docs/api/typedoc/classes/memory.html               |   35 +-
 docs/api/typedoc/classes/module.html               |   11 +-
 docs/api/typedoc/classes/ndarray.html              |   23 +-
 docs/api/typedoc/classes/packedfunccell.html       |    7 +-
 docs/api/typedoc/classes/rpcserver.html            |   15 +-
 docs/api/typedoc/classes/scalar.html               |    7 +-
 docs/api/typedoc/classes/webgpucontext.html        |   13 +-
 docs/api/typedoc/enums/argtypecode.html            |   31 +-
 docs/api/typedoc/enums/aynccallbackcode.html       |    5 +-
 docs/api/typedoc/enums/dldatatypecode.html         |    9 +-
 docs/api/typedoc/enums/rpcserverstate.html         |   13 +-
 docs/api/typedoc/enums/sizeof.html                 |   19 +-
 docs/api/typedoc/index.html                        |  115 +-
 docs/api/typedoc/interfaces/disposable.html        |    3 +-
 docs/api/typedoc/interfaces/functioninfo.html      |    7 +-
 docs/api/typedoc/interfaces/libraryprovider.html   |    5 +-
 docs/genindex.html                                 |   31 +-
 docs/objects.inv                                   |  Bin 16576 -> 16684 bytes
 docs/py-modindex.html                              |    5 +
 docs/searchindex.js                                |    2 +-
 .../auto_scheduler/sg_execution_times.html         |    5 +-
 .../auto_scheduler/tune_conv2d_layer_cuda.html     | 1655 ++++++++++++++++++++
 docs/tutorials/auto_scheduler/tune_matmul_x86.html |  131 +-
 docs/tutorials/autotvm/sg_execution_times.html     |   14 +-
 docs/tutorials/autotvm/tune_conv2d_cuda.html       |   42 +-
 docs/tutorials/autotvm/tune_simple_template.html   |   20 +-
 docs/tutorials/dev/low_level_custom_pass.html      |    4 +-
 docs/tutorials/dev/sg_execution_times.html         |    6 +-
 .../frontend/deploy_model_on_android.html          |    2 +-
 .../frontend/deploy_object_detection_pytorch.html  |    2 +-
 docs/tutorials/frontend/deploy_prequantized.html   |    4 +-
 .../frontend/deploy_prequantized_tflite.html       |    4 +-
 docs/tutorials/frontend/deploy_ssd_gluoncv.html    |    2 +-
 docs/tutorials/frontend/from_onnx.html             |    2 +-
 docs/tutorials/frontend/sg_execution_times.html    |   40 +-
 .../get_started/cross_compilation_and_rpc.html     |    2 +-
 docs/tutorials/get_started/relay_quick_start.html  |  102 +-
 docs/tutorials/get_started/sg_execution_times.html |    8 +-
 .../get_started/tensor_expr_get_started.html       |    2 +-
 docs/tutorials/index.html                          |   23 +-
 docs/tutorials/language/scan.html                  |   12 +-
 docs/tutorials/language/schedule_primitives.html   |   22 +-
 docs/tutorials/language/sg_execution_times.html    |   18 +-
 docs/tutorials/language/tensorize.html             |    4 +-
 docs/tutorials/language/tuple_inputs.html          |   12 +-
 docs/tutorials/micro/sg_execution_times.html       |    4 +-
 docs/tutorials/optimize/opt_conv_cuda.html         |    2 +-
 docs/tutorials/optimize/opt_conv_tensorcore.html   |    6 +-
 docs/tutorials/optimize/opt_gemm.html              |   28 +-
 docs/tutorials/optimize/sg_execution_times.html    |   10 +-
 docs/tutorials/topi/intro_topi.html                |    2 +-
 docs/tutorials/topi/sg_execution_times.html        |    4 +-
 docs/vta/tutorials/autotvm/sg_execution_times.html |    4 +-
 docs/vta/tutorials/autotvm/tune_relay_vta.html     |  184 +--
 .../tutorials/frontend/deploy_classification.html  |   18 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    4 +-
 docs/vta/tutorials/matrix_multiply.html            |    4 +-
 docs/vta/tutorials/optimize/convolution_opt.html   |    4 +-
 .../tutorials/optimize/matrix_multiply_opt.html    |    8 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/vta/tutorials/sg_execution_times.html         |    6 +-
 docs/vta/tutorials/vta_get_started.html            |    4 +-
 137 files changed, 5635 insertions(+), 1919 deletions(-)

diff --git a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py b/docs/_downloads/678f3c372a599a18d909aed0fefb30be/tune_conv2d_layer_cuda.py
similarity index 53%
copy from docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
copy to docs/_downloads/678f3c372a599a18d909aed0fefb30be/tune_conv2d_layer_cuda.py
index 1a9af42..98e66bb 100644
--- a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
+++ b/docs/_downloads/678f3c372a599a18d909aed0fefb30be/tune_conv2d_layer_cuda.py
@@ -15,11 +15,14 @@
 # specific language governing permissions and limitations
 # under the License.
 """
-Auto-scheduling matrix multiplication for CPU
-=============================================
+.. _auto-scheduler-conv-gpu:
+
+Auto-scheduling a convolution layer for GPU
+===========================================
 **Author**: `Lianmin Zheng <https://github.com/merrymercy>`_, \
             `Chengfan Jia <https://github.com/jcf94/>`_
 
+
 Different from the existing :ref:`autotvm <tutorials-autotvm-sec>` which relies on 
 manual templates to define the search space, the auto-scheduler does not require any templates.
 The auto-scheduler is template-free, so users only need to write the computation declaration without
@@ -27,58 +30,70 @@ any schedule commands or templates.
 The auto-scheduler can automatically generate a large
 search space and find a good schedule in the space.
 
-We use matrix multiplication as an example in this tutorial.
+We use a convolution layer as an example in this tutorial.
 """
 
 import numpy as np
 import tvm
-from tvm import te, testing, auto_scheduler
+from tvm import te, testing, auto_scheduler, topi
+from tvm.topi.testing import conv2d_nchw_python
 
 ######################################################################
 # Define the computation
 # ^^^^^^^^^^^^^^^^^^^^^^
-# To begin with, we define the computation of a matmul with bias add.
+# To begin with, let us define the computation of a convolution layer.
 # The function should return the list of input/output tensors.
 # From these tensors, the auto-scheduler can get the whole computational graph.
 
 
 @auto_scheduler.register_workload
-def matmul_add(N, L, M, dtype):
-    A = te.placeholder((N, L), name="A", dtype=dtype)
-    B = te.placeholder((L, M), name="B", dtype=dtype)
-    C = te.placeholder((N, M), name="C", dtype=dtype)
-
-    k = te.reduce_axis((0, L), name="k")
-    matmul = te.compute((N, M), lambda i, j: te.sum(A[i, k] * B[k, j], axis=k), name="matmul")
-    out = te.compute((N, M), lambda i, j: matmul[i, j] + C[i, j], name="out")
-
-    return [A, B, C, out]
+def conv2d_layer(N, H, W, CO, CI, KH, KW, stride, padding):
+    data = te.placeholder((N, CI, H, W), name="data")
+    kernel = te.placeholder((CO, CI, KH, KW), name="kernel")
+    bias = te.placeholder((1, CO, 1, 1), name="bias")
+    conv = topi.nn.conv2d_nchw(data, kernel, stride, padding, dilation=1, out_dtype="float32")
+    out = topi.nn.relu(conv + bias)
+    return [data, kernel, bias, out]
 
 
 ######################################################################
 # Create the search task
 # ^^^^^^^^^^^^^^^^^^^^^^
-# We then create a search task with N=L=M=128 and dtype="float32"
+# We then create a search task for the last convolution layer in the resnet.
 
-target = tvm.target.Target("llvm")
-task = auto_scheduler.create_task(matmul_add, (128, 128, 128, "float32"), target)
+target = tvm.target.Target("cuda")
+
+# the last layer in resnet
+N, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)
+task = auto_scheduler.create_task(conv2d_layer, (N, H, W, CO, CI, KH, KW, strides, padding), target)
 
 # Inspect the computational graph
 print(task.compute_dag)
 
 ######################################################################
-# Next, we set parameters for the auto-scheduler.
+# Next, we set parameters for the auto-scheduler. These parameters
+# mainly specify how we do the measurement during the search and auto-tuning.
 #
+# * `measure_ctx` launches a different process for measurement. This
+#   provides an isolation. It can protect the master process from GPU crashes
+#   happended during measurement and avoid other runtime conflicts.
+# * `min_repeat_ms` defines the minimum duration of one "repeat" in every measurement.
+#   This can warmup the GPU, which is necessary to get accurate measurement results.
+#   Typically, we recommend a value > 300 ms.
 # * `num_measure_trials` is the number of measurement trials we can use during the search.
 #   We only make 10 trials in this tutorial for a fast demonstration. In practice, 1000 is a
 #   good value for the search to converge. You can do more trials according to your time budget.
-# * In addition, we use `RecordToFile` to dump measurement records into a file `matmul.json`.
+# * In addition, we use `RecordToFile` to dump measurement records into a file `conv2d.json`.
 #   The measurement records can be used to query the history best, resume the search,
 #   and do more analyses later.
-# * see :any:`auto_schedule.TuningOptions`: for more parameters
+# * see :any:`auto_scheduler.auto_schedule.TuningOptions`:,
+#   :any:`auto_scheduler.measure.LocalRPCMeasureContext` for more parameters.
 
+measure_ctx = auto_scheduler.LocalRPCMeasureContext(min_repeat_ms=300)
 tune_option = auto_scheduler.TuningOptions(
-    num_measure_trials=10, measure_callbacks=[auto_scheduler.RecordToFile("matmul.json")]
+    num_measure_trials=10,
+    runner=measure_ctx.runner,
+    measure_callbacks=[auto_scheduler.RecordToFile("conv2d.json")],
 )
 
 ######################################################################
@@ -93,31 +108,46 @@ sch, args = auto_scheduler.auto_schedule(task, tuning_options=tune_option)
 ######################################################################
 # We can lower the schedule to see the IR after auto-scheduling.
 # The auto-scheduler correctly performs optimizations including multi-level tiling,
-# parallelization, vectorization, unrolling and fusion.
+# cooperative fetching, unrolling and operator fusion.
 
 print(tvm.lower(sch, args, simple_mode=True))
 
 ######################################################################
-# Check correctness
-# ^^^^^^^^^^^^^^^^^
-# We build the binary and check its correctness
-
-func = tvm.build(sch, args)
-a_np = np.random.uniform(size=(128, 128)).astype(np.float32)
-b_np = np.random.uniform(size=(128, 128)).astype(np.float32)
-c_np = np.random.uniform(size=(128, 128)).astype(np.float32)
-d_np = a_np.dot(b_np) + c_np
-
-d_tvm = tvm.nd.empty(d_np.shape)
-func(tvm.nd.array(a_np), tvm.nd.array(b_np), tvm.nd.array(c_np), d_tvm)
-
-tvm.testing.assert_allclose(d_np, d_tvm.asnumpy(), rtol=1e-3)
+# Check correctness and evaluate performance
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+# We build the binary and check its correctness and performance.
+
+func = tvm.build(sch, args, target)
+
+# check correctness
+data_np = np.random.uniform(size=(N, CI, H, W)).astype(np.float32)
+weight_np = np.random.uniform(size=(CO, CI, KH, KW)).astype(np.float32)
+bias_np = np.random.uniform(size=(1, CO, 1, 1)).astype(np.float32)
+conv_np = conv2d_nchw_python(data_np, weight_np, strides, padding)
+out_np = np.maximum(conv_np + bias_np, 0.0)
+
+ctx = tvm.gpu()
+data_tvm = tvm.nd.array(data_np, ctx=ctx)
+weight_tvm = tvm.nd.array(weight_np, ctx=ctx)
+bias_tvm = tvm.nd.array(bias_np, ctx=ctx)
+out_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)
+func(data_tvm, weight_tvm, bias_tvm, out_tvm)
+
+# Check results
+tvm.testing.assert_allclose(out_np, out_tvm.asnumpy(), rtol=1e-3)
+
+# Evaluate execution time
+evaluator = func.time_evaluator(func.entry_name, ctx, min_repeat_ms=500)
+print(
+    "Execution time of this operator: %.3f ms"
+    % (np.median(evaluator(data_tvm, weight_tvm, bias_tvm, out_tvm).results) * 1000)
+)
 
 ######################################################################
 # Using the record file
 # ^^^^^^^^^^^^^^^^^^^^^
 # During the search, all measuremnt records are dumpped into the record
-# file "matmul.json". The measurement records can be used to re-apply search results,
+# file "conv2d.json". The measurement records can be used to re-apply search results,
 # resume the search, and perform other analyses.
 
 ######################################################################
@@ -125,16 +155,17 @@ tvm.testing.assert_allclose(d_np, d_tvm.asnumpy(), rtol=1e-3)
 # print the equivalent python schedule API, and build the binary again.
 
 # Load the measuremnt record for the best schedule
-inp, res = auto_scheduler.load_best("matmul.json", task.workload_key)
+inp, res = auto_scheduler.load_best("conv2d.json", task.workload_key)
 
 # Print equivalent python schedule API. This can be used for debugging and
 # learning the behavior of the auto-scheduler.
+print("Equivalent python schedule:")
 print(task.compute_dag.print_python_code_from_state(inp.state))
 
 # Rebuild the binary. This shows how you can apply the best schedule from a
 # log file without reruning the search again.
 sch, args = task.compute_dag.apply_steps_from_state(inp.state)
-func = tvm.build(sch, args)
+func = tvm.build(sch, args, target)
 
 ######################################################################
 # A more complicated example is to resume the search.
@@ -143,31 +174,18 @@ func = tvm.build(sch, args)
 # In the example below we resume the status and do more 5 trials.
 
 
-def resume_search(task, log_file):
-    cost_model = auto_scheduler.XGBModel()
-    cost_model.update_from_file(log_file)
-    search_policy = auto_scheduler.SketchPolicy(
-        task, cost_model, init_search_callbacks=[auto_scheduler.PreloadMeasuredStates(log_file)]
-    )
-    tune_option = auto_scheduler.TuningOptions(
-        num_measure_trials=5, measure_callbacks=[auto_scheduler.RecordToFile(log_file)]
-    )
-    sch, args = auto_scheduler.auto_schedule(task, search_policy, tuning_options=tune_option)
-
-
-# resume_search(task, "matmul.json")
+log_file = "conv2d.json"
+cost_model = auto_scheduler.XGBModel()
+cost_model.update_from_file(log_file)
+search_policy = auto_scheduler.SketchPolicy(
+    task, cost_model, init_search_callbacks=[auto_scheduler.PreloadMeasuredStates(log_file)]
+)
+tune_option = auto_scheduler.TuningOptions(
+    num_measure_trials=5,
+    runner=measure_ctx.runner,
+    measure_callbacks=[auto_scheduler.RecordToFile(log_file)],
+)
+sch, args = auto_scheduler.auto_schedule(task, search_policy, tuning_options=tune_option)
 
-######################################################################
-# .. note::
-#   We cannot run the line above because of the conflict between
-#   python's multiprocessing and tvm's thread pool.
-#   After running a tvm generated binary (L112), the python's multiprocessing
-#   library will hang forever.
-#   You have to make sure that you don't run any tvm generated binaries before
-#   calling ansor's search. To run the L156 above, you should comment out L112-114.
-#
-#   You should be careful about this problem in your applications.
-#   There are other workarounds for this problem.
-#   For example, you can start a new thread/process (with the builtin python library
-#   threading or multiprocessing) and run the tvm binaries in the new thread/process.
-#   This provides an isolation and avoids the conflict in the main thread/process.
+# kill the measurement process
+del measure_ctx
diff --git a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py b/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
index 1a9af42..918030d 100644
--- a/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
+++ b/docs/_downloads/91b0339c8f3cc2594cee580dc450149a/tune_matmul_x86.py
@@ -37,7 +37,7 @@ from tvm import te, testing, auto_scheduler
 ######################################################################
 # Define the computation
 # ^^^^^^^^^^^^^^^^^^^^^^
-# To begin with, we define the computation of a matmul with bias add.
+# To begin with, let us define the computation of a matmul with bias add.
 # The function should return the list of input/output tensors.
 # From these tensors, the auto-scheduler can get the whole computational graph.
 
@@ -59,6 +59,9 @@ def matmul_add(N, L, M, dtype):
 # Create the search task
 # ^^^^^^^^^^^^^^^^^^^^^^
 # We then create a search task with N=L=M=128 and dtype="float32"
+# If your machine supports avx instructions, you can
+# - replace "llvm" below with "llvm -mcpu=core-avx2" to enable AVX2
+# - replace "llvm" below with "llvm -mcpu=skylake-avx512" to enable AVX-512
 
 target = tvm.target.Target("llvm")
 task = auto_scheduler.create_task(matmul_add, (128, 128, 128, "float32"), target)
@@ -75,7 +78,7 @@ print(task.compute_dag)
 # * In addition, we use `RecordToFile` to dump measurement records into a file `matmul.json`.
 #   The measurement records can be used to query the history best, resume the search,
 #   and do more analyses later.
-# * see :any:`auto_schedule.TuningOptions`: for more parameters
+# * see :any:`auto_scheduler.auto_schedule.TuningOptions`: for more parameters
 
 tune_option = auto_scheduler.TuningOptions(
     num_measure_trials=10, measure_callbacks=[auto_scheduler.RecordToFile("matmul.json")]
@@ -93,25 +96,38 @@ sch, args = auto_scheduler.auto_schedule(task, tuning_options=tune_option)
 ######################################################################
 # We can lower the schedule to see the IR after auto-scheduling.
 # The auto-scheduler correctly performs optimizations including multi-level tiling,
-# parallelization, vectorization, unrolling and fusion.
+# parallelization, vectorization, unrolling and operator fusion.
 
 print(tvm.lower(sch, args, simple_mode=True))
 
 ######################################################################
-# Check correctness
-# ^^^^^^^^^^^^^^^^^
-# We build the binary and check its correctness
+# Check correctness and evaluate performance
+# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+# We build the binary and check its correctness and performance.
 
 func = tvm.build(sch, args)
 a_np = np.random.uniform(size=(128, 128)).astype(np.float32)
 b_np = np.random.uniform(size=(128, 128)).astype(np.float32)
 c_np = np.random.uniform(size=(128, 128)).astype(np.float32)
-d_np = a_np.dot(b_np) + c_np
-
-d_tvm = tvm.nd.empty(d_np.shape)
-func(tvm.nd.array(a_np), tvm.nd.array(b_np), tvm.nd.array(c_np), d_tvm)
+out_np = a_np.dot(b_np) + c_np
+
+ctx = tvm.cpu()
+a_tvm = tvm.nd.array(a_np, ctx=ctx)
+b_tvm = tvm.nd.array(b_np, ctx=ctx)
+c_tvm = tvm.nd.array(c_np, ctx=ctx)
+out_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)
+func(a_tvm, b_tvm, c_tvm, out_tvm)
+
+# Check results
+tvm.testing.assert_allclose(out_np, out_tvm.asnumpy(), rtol=1e-3)
+
+# Evaluate execution time.
+evaluator = func.time_evaluator(func.entry_name, ctx, min_repeat_ms=500)
+print(
+    "Execution time of this operator: %.3f ms"
+    % (np.median(evaluator(a_tvm, b_tvm, c_tvm, out_tvm).results) * 1000)
+)
 
-tvm.testing.assert_allclose(d_np, d_tvm.asnumpy(), rtol=1e-3)
 
 ######################################################################
 # Using the record file
@@ -129,6 +145,7 @@ inp, res = auto_scheduler.load_best("matmul.json", task.workload_key)
 
 # Print equivalent python schedule API. This can be used for debugging and
 # learning the behavior of the auto-scheduler.
+print("Equivalent python schedule:")
 print(task.compute_dag.print_python_code_from_state(inp.state))
 
 # Rebuild the binary. This shows how you can apply the best schedule from a
@@ -161,13 +178,16 @@ def resume_search(task, log_file):
 # .. note::
 #   We cannot run the line above because of the conflict between
 #   python's multiprocessing and tvm's thread pool.
-#   After running a tvm generated binary (L112), the python's multiprocessing
-#   library will hang forever.
-#   You have to make sure that you don't run any tvm generated binaries before
-#   calling ansor's search. To run the L156 above, you should comment out L112-114.
+#   After running a tvm generated binary the python's multiprocessing library
+#   will hang forever. You have to make sure that you don't run any tvm
+#   generated binaries before calling auot-scheduler's search.
+#   To run the function above, you should comment out all code in
+#   "Check correctness and evaluate performance" section.
 #
 #   You should be careful about this problem in your applications.
 #   There are other workarounds for this problem.
 #   For example, you can start a new thread/process (with the builtin python library
 #   threading or multiprocessing) and run the tvm binaries in the new thread/process.
 #   This provides an isolation and avoids the conflict in the main thread/process.
+#   You can also use :any:`auto_scheduler.measure.LocalRPCMeasureContext` for auto-scheduler,
+#   as shown in the GPU tutorial (:ref:`auto-scheduler-conv-gpu`).
diff --git a/docs/_downloads/bcb4a24e8acc1ca84214bc8d7fb7954b/tune_conv2d_layer_cuda.ipynb b/docs/_downloads/bcb4a24e8acc1ca84214bc8d7fb7954b/tune_conv2d_layer_cuda.ipynb
new file mode 100644
index 0000000..efd5141
--- /dev/null
+++ b/docs/_downloads/bcb4a24e8acc1ca84214bc8d7fb7954b/tune_conv2d_layer_cuda.ipynb
@@ -0,0 +1,205 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%matplotlib inline"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n\nAuto-scheduling a convolution layer for GPU\n===========================================\n**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_,             `Chengfan Jia <https://github.com/jcf94/>`_\n\n\nDifferent from the existing `autotvm <tutorials-autotvm-sec>` which relies on \nmanual templates to define the search space, the auto-scheduler does not require any templates.\nThe auto-scheduler is template-free, so users only need to write the computation declarat [...]
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "import numpy as np\nimport tvm\nfrom tvm import te, testing, auto_scheduler, topi\nfrom tvm.topi.testing import conv2d_nchw_python"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Define the computation\n^^^^^^^^^^^^^^^^^^^^^^\nTo begin with, let us define the computation of a convolution layer.\nThe function should return the list of input/output tensors.\nFrom these tensors, the auto-scheduler can get the whole computational graph.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "@auto_scheduler.register_workload\ndef conv2d_layer(N, H, W, CO, CI, KH, KW, stride, padding):\n    data = te.placeholder((N, CI, H, W), name=\"data\")\n    kernel = te.placeholder((CO, CI, KH, KW), name=\"kernel\")\n    bias = te.placeholder((1, CO, 1, 1), name=\"bias\")\n    conv = topi.nn.conv2d_nchw(data, kernel, stride, padding, dilation=1, out_dtype=\"float32\")\n    out = topi.nn.relu(conv + bias)\n    return [data, kernel, bias, out]"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Create the search task\n^^^^^^^^^^^^^^^^^^^^^^\nWe then create a search task for the last convolution layer in the resnet.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "target = tvm.target.Target(\"cuda\")\n\n# the last layer in resnet\nN, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)\ntask = auto_scheduler.create_task(conv2d_layer, (N, H, W, CO, CI, KH, KW, strides, padding), target)\n\n# Inspect the computational graph\nprint(task.compute_dag)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Next, we set parameters for the auto-scheduler. These parameters\nmainly specify how we do the measurement during the search and auto-tuning.\n\n* `measure_ctx` launches a different process for measurement. This\n  provides an isolation. It can protect the master process from GPU crashes\n  happended during measurement and avoid other runtime conflicts.\n* `min_repeat_ms` defines the minimum duration of one \"repeat\" in every measurement.\n  This can warmup the GPU, which is ne [...]
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "measure_ctx = auto_scheduler.LocalRPCMeasureContext(min_repeat_ms=300)\ntune_option = auto_scheduler.TuningOptions(\n    num_measure_trials=10,\n    runner=measure_ctx.runner,\n    measure_callbacks=[auto_scheduler.RecordToFile(\"conv2d.json\")],\n)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Run the search\n^^^^^^^^^^^^^^\nNow we get all inputs ready. Pretty simple, isn't it?\nWe can kick off the search and let the auto-scheduler do its magic.\nAfter some measurement trials, it will return the best schedule it found.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "sch, args = auto_scheduler.auto_schedule(task, tuning_options=tune_option)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "We can lower the schedule to see the IR after auto-scheduling.\nThe auto-scheduler correctly performs optimizations including multi-level tiling,\ncooperative fetching, unrolling and operator fusion.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "print(tvm.lower(sch, args, simple_mode=True))"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Check correctness and evaluate performance\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nWe build the binary and check its correctness and performance.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "func = tvm.build(sch, args, target)\n\n# check correctness\ndata_np = np.random.uniform(size=(N, CI, H, W)).astype(np.float32)\nweight_np = np.random.uniform(size=(CO, CI, KH, KW)).astype(np.float32)\nbias_np = np.random.uniform(size=(1, CO, 1, 1)).astype(np.float32)\nconv_np = conv2d_nchw_python(data_np, weight_np, strides, padding)\nout_np = np.maximum(conv_np + bias_np, 0.0)\n\nctx = tvm.gpu()\ndata_tvm = tvm.nd.array(data_np, ctx=ctx)\nweight_tvm = tvm.nd.array(weight_np, ct [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Using the record file\n^^^^^^^^^^^^^^^^^^^^^\nDuring the search, all measuremnt records are dumpped into the record\nfile \"conv2d.json\". The measurement records can be used to re-apply search results,\nresume the search, and perform other analyses.\n\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Here is an example where we load the best schedule from a file,\nprint the equivalent python schedule API, and build the binary again.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "# Load the measuremnt record for the best schedule\ninp, res = auto_scheduler.load_best(\"conv2d.json\", task.workload_key)\n\n# Print equivalent python schedule API. This can be used for debugging and\n# learning the behavior of the auto-scheduler.\nprint(\"Equivalent python schedule:\")\nprint(task.compute_dag.print_python_code_from_state(inp.state))\n\n# Rebuild the binary. This shows how you can apply the best schedule from a\n# log file without reruning the search again.\ns [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "A more complicated example is to resume the search.\nIn this case, we need to create the search policy and cost model by ourselves\nand resume the status of search policy and cost model with the log file.\nIn the example below we resume the status and do more 5 trials.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "log_file = \"conv2d.json\"\ncost_model = auto_scheduler.XGBModel()\ncost_model.update_from_file(log_file)\nsearch_policy = auto_scheduler.SketchPolicy(\n    task, cost_model, init_search_callbacks=[auto_scheduler.PreloadMeasuredStates(log_file)]\n)\ntune_option = auto_scheduler.TuningOptions(\n    num_measure_trials=5,\n    runner=measure_ctx.runner,\n    measure_callbacks=[auto_scheduler.RecordToFile(log_file)],\n)\nsch, args = auto_scheduler.auto_schedule(task, search_policy,  [...]
+      ]
+    }
+  ],
+  "metadata": {
+    "kernelspec": {
+      "display_name": "Python 3",
+      "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.6.10"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb b/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
index e1afb08..113b92f 100644
--- a/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
+++ b/docs/_downloads/f1a09967bab66114252357e4a9babb45/tune_matmul_x86.ipynb
@@ -33,7 +33,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Define the computation\n^^^^^^^^^^^^^^^^^^^^^^\nTo begin with, we define the computation of a matmul with bias add.\nThe function should return the list of input/output tensors.\nFrom these tensors, the auto-scheduler can get the whole computational graph.\n\n"
+        "Define the computation\n^^^^^^^^^^^^^^^^^^^^^^\nTo begin with, let us define the computation of a matmul with bias add.\nThe function should return the list of input/output tensors.\nFrom these tensors, the auto-scheduler can get the whole computational graph.\n\n"
       ]
     },
     {
@@ -51,7 +51,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Create the search task\n^^^^^^^^^^^^^^^^^^^^^^\nWe then create a search task with N=L=M=128 and dtype=\"float32\"\n\n"
+        "Create the search task\n^^^^^^^^^^^^^^^^^^^^^^\nWe then create a search task with N=L=M=128 and dtype=\"float32\"\nIf your machine supports avx instructions, you can\n- replace \"llvm\" below with \"llvm -mcpu=core-avx2\" to enable AVX2\n- replace \"llvm\" below with \"llvm -mcpu=skylake-avx512\" to enable AVX-512\n\n"
       ]
     },
     {
@@ -69,7 +69,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Next, we set parameters for the auto-scheduler.\n\n* `num_measure_trials` is the number of measurement trials we can use during the search.\n  We only make 10 trials in this tutorial for a fast demonstration. In practice, 1000 is a\n  good value for the search to converge. You can do more trials according to your time budget.\n* In addition, we use `RecordToFile` to dump measurement records into a file `matmul.json`.\n  The measurement records can be used to query the history be [...]
+        "Next, we set parameters for the auto-scheduler.\n\n* `num_measure_trials` is the number of measurement trials we can use during the search.\n  We only make 10 trials in this tutorial for a fast demonstration. In practice, 1000 is a\n  good value for the search to converge. You can do more trials according to your time budget.\n* In addition, we use `RecordToFile` to dump measurement records into a file `matmul.json`.\n  The measurement records can be used to query the history be [...]
       ]
     },
     {
@@ -105,7 +105,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "We can lower the schedule to see the IR after auto-scheduling.\nThe auto-scheduler correctly performs optimizations including multi-level tiling,\nparallelization, vectorization, unrolling and fusion.\n\n"
+        "We can lower the schedule to see the IR after auto-scheduling.\nThe auto-scheduler correctly performs optimizations including multi-level tiling,\nparallelization, vectorization, unrolling and operator fusion.\n\n"
       ]
     },
     {
@@ -123,7 +123,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "Check correctness\n^^^^^^^^^^^^^^^^^\nWe build the binary and check its correctness\n\n"
+        "Check correctness and evaluate performance\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nWe build the binary and check its correctness and performance.\n\n"
       ]
     },
     {
@@ -134,7 +134,7 @@
       },
       "outputs": [],
       "source": [
-        "func = tvm.build(sch, args)\na_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nb_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nc_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nd_np = a_np.dot(b_np) + c_np\n\nd_tvm = tvm.nd.empty(d_np.shape)\nfunc(tvm.nd.array(a_np), tvm.nd.array(b_np), tvm.nd.array(c_np), d_tvm)\n\ntvm.testing.assert_allclose(d_np, d_tvm.asnumpy(), rtol=1e-3)"
+        "func = tvm.build(sch, args)\na_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nb_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nc_np = np.random.uniform(size=(128, 128)).astype(np.float32)\nout_np = a_np.dot(b_np) + c_np\n\nctx = tvm.cpu()\na_tvm = tvm.nd.array(a_np, ctx=ctx)\nb_tvm = tvm.nd.array(b_np, ctx=ctx)\nc_tvm = tvm.nd.array(c_np, ctx=ctx)\nout_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)\nfunc(a_tvm, b_tvm, c_tvm, out_tvm)\n\n# Check results\ntvm. [...]
       ]
     },
     {
@@ -159,7 +159,7 @@
       },
       "outputs": [],
       "source": [
-        "# Load the measuremnt record for the best schedule\ninp, res = auto_scheduler.load_best(\"matmul.json\", task.workload_key)\n\n# Print equivalent python schedule API. This can be used for debugging and\n# learning the behavior of the auto-scheduler.\nprint(task.compute_dag.print_python_code_from_state(inp.state))\n\n# Rebuild the binary. This shows how you can apply the best schedule from a\n# log file without reruning the search again.\nsch, args = task.compute_dag.apply_steps_ [...]
+        "# Load the measuremnt record for the best schedule\ninp, res = auto_scheduler.load_best(\"matmul.json\", task.workload_key)\n\n# Print equivalent python schedule API. This can be used for debugging and\n# learning the behavior of the auto-scheduler.\nprint(\"Equivalent python schedule:\")\nprint(task.compute_dag.print_python_code_from_state(inp.state))\n\n# Rebuild the binary. This shows how you can apply the best schedule from a\n# log file without reruning the search again.\ns [...]
       ]
     },
     {
@@ -184,7 +184,7 @@
       "cell_type": "markdown",
       "metadata": {},
       "source": [
-        "<div class=\"alert alert-info\"><h4>Note</h4><p>We cannot run the line above because of the conflict between\n  python's multiprocessing and tvm's thread pool.\n  After running a tvm generated binary (L112), the python's multiprocessing\n  library will hang forever.\n  You have to make sure that you don't run any tvm generated binaries before\n  calling ansor's search. To run the L156 above, you should comment out L112-114.\n\n  You should be careful about this problem in your a [...]
+        "<div class=\"alert alert-info\"><h4>Note</h4><p>We cannot run the line above because of the conflict between\n  python's multiprocessing and tvm's thread pool.\n  After running a tvm generated binary the python's multiprocessing library\n  will hang forever. You have to make sure that you don't run any tvm\n  generated binaries before calling auot-scheduler's search.\n  To run the function above, you should comment out all code in\n  \"Check correctness and evaluate performance\ [...]
       ]
     }
   ],
diff --git a/docs/_images/sphx_glr_tune_conv2d_layer_cuda_thumb.png b/docs/_images/sphx_glr_tune_conv2d_layer_cuda_thumb.png
new file mode 100644
index 0000000..233f8e6
Binary files /dev/null and b/docs/_images/sphx_glr_tune_conv2d_layer_cuda_thumb.png differ
diff --git a/docs/_sources/api/python/auto_scheduler.rst.txt b/docs/_sources/api/python/auto_scheduler.rst.txt
index 85ff22f..a7c190a 100644
--- a/docs/_sources/api/python/auto_scheduler.rst.txt
+++ b/docs/_sources/api/python/auto_scheduler.rst.txt
@@ -31,5 +31,20 @@ tvm.auto_scheduler.auto_schedule
 
 .. autofunction:: tvm.auto_scheduler.auto_schedule.auto_schedule
 
+tvm.auto_scheduler.workload_registry
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+.. autofunction:: tvm.auto_scheduler.workload_registry.register_workload
 
+
+tvm.auto_scheduler.measure
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+.. automodule:: tvm.auto_scheduler.measure
+
+.. autoclass:: tvm.auto_scheduler.measure.LocalRPCMeasureContext
+
+.. autoclass:: tvm.auto_scheduler.measure.LocalRunner
+
+.. autoclass:: tvm.auto_scheduler.measure.LocalBuilder
+
+.. autoclass:: tvm.auto_scheduler.measure.RPCRunner
diff --git a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
index c28aa1d..953ce1c 100644
--- a/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/sg_execution_times.rst.txt
@@ -5,6 +5,7 @@
 
 Computation times
 =================
-**01:31.257** total execution time for **tutorials_auto_scheduler** files:
+**04:47.459** total execution time for **tutorials_auto_scheduler** files:
 
-- **01:31.257**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_matmul_x86.py` (``tune_matmul_x86.py``)
+- **02:51.342**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``)
+- **01:56.117**: :ref:`sphx_glr_tutorials_auto_scheduler_tune_matmul_x86.py` (``tune_matmul_x86.py``)
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
new file mode 100644
index 0000000..2b9b6e8
--- /dev/null
+++ b/docs/_sources/tutorials/auto_scheduler/tune_conv2d_layer_cuda.rst.txt
@@ -0,0 +1,1535 @@
+.. note::
+    :class: sphx-glr-download-link-note
+
+    Click :ref:`here <sphx_glr_download_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py>` to download the full example code
+.. rst-class:: sphx-glr-example-title
+
+.. _sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py:
+
+
+.. _auto-scheduler-conv-gpu:
+
+Auto-scheduling a convolution layer for GPU
+===========================================
+**Author**: `Lianmin Zheng <https://github.com/merrymercy>`_,             `Chengfan Jia <https://github.com/jcf94/>`_
+
+
+Different from the existing :ref:`autotvm <tutorials-autotvm-sec>` which relies on 
+manual templates to define the search space, the auto-scheduler does not require any templates.
+The auto-scheduler is template-free, so users only need to write the computation declaration without
+any schedule commands or templates.
+The auto-scheduler can automatically generate a large
+search space and find a good schedule in the space.
+
+We use a convolution layer as an example in this tutorial.
+
+
+.. code-block:: default
+
+
+    import numpy as np
+    import tvm
+    from tvm import te, testing, auto_scheduler, topi
+    from tvm.topi.testing import conv2d_nchw_python
+
+
+
+
+
+
+
+Define the computation
+^^^^^^^^^^^^^^^^^^^^^^
+To begin with, let us define the computation of a convolution layer.
+The function should return the list of input/output tensors.
+From these tensors, the auto-scheduler can get the whole computational graph.
+
+
+.. code-block:: default
+
+
+
+    @auto_scheduler.register_workload
+    def conv2d_layer(N, H, W, CO, CI, KH, KW, stride, padding):
+        data = te.placeholder((N, CI, H, W), name="data")
+        kernel = te.placeholder((CO, CI, KH, KW), name="kernel")
+        bias = te.placeholder((1, CO, 1, 1), name="bias")
+        conv = topi.nn.conv2d_nchw(data, kernel, stride, padding, dilation=1, out_dtype="float32")
+        out = topi.nn.relu(conv + bias)
+        return [data, kernel, bias, out]
+
+
+
+
+
+
+
+
+Create the search task
+^^^^^^^^^^^^^^^^^^^^^^
+We then create a search task for the last convolution layer in the resnet.
+
+
+.. code-block:: default
+
+
+    target = tvm.target.Target("cuda")
+
+    # the last layer in resnet
+    N, H, W, CO, CI, KH, KW, strides, padding = 1, 7, 7, 512, 512, 3, 3, (1, 1), (1, 1)
+    task = auto_scheduler.create_task(conv2d_layer, (N, H, W, CO, CI, KH, KW, strides, padding), target)
+
+    # Inspect the computational graph
+    print(task.compute_dag)
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    data = PLACEHOLDER [1, 512, 7, 7]
+    pad_temp(i0, i1, i2, i3) = tir.if_then_else(((((i2 >= 1) && (i2 < 8)) && (i3 >= 1)) && (i3 < 8)), data[i0, i1, (i2 - 1), (i3 - 1)], 0f)
+    kernel = PLACEHOLDER [512, 512, 3, 3]
+    compute(nn, ff, yy, xx) += (pad_temp[nn, rc, (yy + ry), (xx + rx)]*kernel[ff, rc, ry, rx])
+    bias = PLACEHOLDER [1, 512, 1, 1]
+    T_add(ax0, ax1, ax2, ax3) = (compute[ax0, ax1, ax2, ax3] + bias[ax0, ax1, 0, 0])
+    compute(i0, i1, i2, i3) = max(T_add[i0, i1, i2, i3], 0f)
+
+
+
+
+Next, we set parameters for the auto-scheduler. These parameters
+mainly specify how we do the measurement during the search and auto-tuning.
+
+* `measure_ctx` launches a different process for measurement. This
+  provides an isolation. It can protect the master process from GPU crashes
+  happended during measurement and avoid other runtime conflicts.
+* `min_repeat_ms` defines the minimum duration of one "repeat" in every measurement.
+  This can warmup the GPU, which is necessary to get accurate measurement results.
+  Typically, we recommend a value > 300 ms.
+* `num_measure_trials` is the number of measurement trials we can use during the search.
+  We only make 10 trials in this tutorial for a fast demonstration. In practice, 1000 is a
+  good value for the search to converge. You can do more trials according to your time budget.
+* In addition, we use `RecordToFile` to dump measurement records into a file `conv2d.json`.
+  The measurement records can be used to query the history best, resume the search,
+  and do more analyses later.
+* see :any:`auto_scheduler.auto_schedule.TuningOptions`:,
+  :any:`auto_scheduler.measure.LocalRPCMeasureContext` for more parameters.
+
+
+.. code-block:: default
+
+
+    measure_ctx = auto_scheduler.LocalRPCMeasureContext(min_repeat_ms=300)
+    tune_option = auto_scheduler.TuningOptions(
+        num_measure_trials=10,
+        runner=measure_ctx.runner,
+        measure_callbacks=[auto_scheduler.RecordToFile("conv2d.json")],
+    )
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    Get devices for measurement successfully!
+
+
+
+Run the search
+^^^^^^^^^^^^^^
+Now we get all inputs ready. Pretty simple, isn't it?
+We can kick off the search and let the auto-scheduler do its magic.
+After some measurement trials, it will return the best schedule it found.
+
+
+.. code-block:: default
+
+
+    sch, args = auto_scheduler.auto_schedule(task, tuning_options=tune_option)
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+
+
+
+
+We can lower the schedule to see the IR after auto-scheduling.
+The auto-scheduler correctly performs optimizations including multi-level tiling,
+cooperative fetching, unrolling and operator fusion.
+
+
+.. code-block:: default
+
+
+    print(tvm.lower(sch, args, simple_mode=True))
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    primfn(data_1: handle, kernel_1: handle, bias_1: handle, compute_1: handle) -> ()
+      attr = {"global_symbol": "main", "tir.noalias": True}
+      buffers = {bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
+                 compute: Buffer(compute_2: Pointer(float32), float32, [1, 512, 7, 7], []),
+                 kernel: Buffer(kernel_2: Pointer(float32), float32, [512, 512, 3, 3], []),
+                 data: Buffer(data_2: Pointer(float32), float32, [1, 512, 7, 7], [])}
+      buffer_map = {data_1: data, kernel_1: kernel, bias_1: bias, compute_1: compute} {
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 64;
+      attr [compute_3: Pointer(float32)] "storage_scope" = "local";
+      allocate(compute_3, float32, [8]);
+      attr [pad_temp.shared: Pointer(float32)] "storage_scope" = "shared";
+      allocate(pad_temp.shared, float32, [1568]);
+      attr [kernel.shared: Pointer(float32)] "storage_scope" = "shared";
+      allocate(kernel.shared, float32, [256]);
+      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+        compute_3[0] = 0f32
+        compute_3[2] = 0f32
+        compute_3[4] = 0f32
+        compute_3[6] = 0f32
+        compute_3[1] = 0f32
+        compute_3[3] = 0f32
+        compute_3[5] = 0f32
+        compute_3[7] = 0f32
+        for (rc.outer.outer: int32, 0, 16) {
+          for (ry.outer.outer: int32, 0, 3) {
+            attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[(threadIdx.x_1*2)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) - 8)], 0f32, dtype=float32)
+              pad_temp.shared[((threadIdx.x_1*2) + 1)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) - 8)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 98)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 90)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 98)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 90)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 196)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 188)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 196)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 188)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 294)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 286)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 294)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 286)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 392)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 384)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 392)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 384)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 490)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 482)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 490)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 482)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 588)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 580)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 588)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 580)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 686)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 678)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 686)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 678)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 784)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 776)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 784)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 776)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 882)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 874)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 882)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 874)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 980)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 972)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 980)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 972)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1078)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1070)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1078)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1070)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1176)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1168)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1176)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1168)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1274)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1266)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1274)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1266)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1372)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1364)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1372)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1364)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1470)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1*2), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1462)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1470)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (1 <= floormod(((threadIdx.x_1*2) + 1), 7))), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1462)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[(threadIdx.x_2*12)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv((threadIdx.x_2*12), 32)*4608)) + (rc.outer.outer*288)) + (floormod((threadIdx.x_2*12), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 1)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 1), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 1), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 2)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 2), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 2), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 3)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 3), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 3), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 4)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 4), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 4), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 5)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 5), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 5), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 6)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 6), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 6), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 7)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 7), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 7), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 8)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 8), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 8), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 9)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 9), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 9), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 10)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 10), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 10), 32)*9)) + (ry.outer.outer*3))]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 11)] = (float32*)kernel_2[(((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 11), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 11), 32)*9)) + (ry.outer.outer*3))]
+              }
+            }
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[0]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[64]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[128]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[192]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[1]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[65]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[129]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[193]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[2]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[66]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[130]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[194]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[3]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[67]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[131]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[195]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[4]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[68]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[132]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[196]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[5]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[69]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[133]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[197]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[6]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[70]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[134]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[198]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[7]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[71]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[135]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[199]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[8]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[72]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[136]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[200]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[9]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[73]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[137]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[201]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[10]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[74]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[138]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[202]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[11]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[75]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[139]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[203]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[12]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[76]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[140]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[204]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[13]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[77]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[141]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[205]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[14]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[78]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[142]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[206]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[15]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[79]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[143]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[207]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[32]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[96]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[160]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[224]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[33]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[97]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[161]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[225]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[34]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[98]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[162]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[226]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[35]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[99]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[163]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[227]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[36]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[100]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[164]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[228]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[37]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[101]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[165]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[229]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[38]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[102]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[166]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[230]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[39]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[103]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[167]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[231]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[40]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[104]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[168]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[232]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[41]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[105]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[169]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[233]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[42]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[106]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[170]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[234]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[43]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[107]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[171]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[235]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[44]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[108]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[172]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[236]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[45]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[109]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[173]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[237]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[46]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[110]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[174]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[238]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[47]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[111]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[175]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[239]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[16]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[80]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[144]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[208]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[17]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[81]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[145]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[209]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[18]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[82]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[146]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[210]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[19]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[83]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[147]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[211]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[20]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[84]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[148]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[212]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[21]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[85]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[149]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[213]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[22]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[86]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[150]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[214]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[23]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[87]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[151]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[215]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[24]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[88]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[152]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[216]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[25]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[89]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[153]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[217]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[26]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[90]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[154]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[218]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[27]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[91]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[155]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[219]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[28]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[92]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[156]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[220]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[29]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[93]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[157]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[221]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[30]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[94]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[158]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[222]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[31]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[95]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[159]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[223]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[48]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[112]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[176]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[240]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[49]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[113]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[177]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[241]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[50]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[114]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[178]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[242]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[51]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[115]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[179]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[243]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[52]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[116]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[180]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[244]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[53]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[117]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[181]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[245]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[54]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[118]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[182]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[246]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[55]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[119]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[183]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[247]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[56]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[120]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[184]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[248]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[57]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[121]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[185]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[249]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[58]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[122]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[186]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[250]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[59]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[123]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[187]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[251]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[60]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[124]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[188]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[252]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[61]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[125]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[189]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[253]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[62]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[126]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[190]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[254]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[63]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[127]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[191]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[255]))
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[(threadIdx.x_1*2)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) - 7)], 0f32, dtype=float32)
+              pad_temp.shared[((threadIdx.x_1*2) + 1)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) - 7)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 98)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 91)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 98)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 91)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 196)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 189)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 196)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 189)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 294)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 287)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 294)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 287)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 392)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 385)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 392)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 385)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 490)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 483)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 490)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 483)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 588)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 581)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 588)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 581)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 686)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 679)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 686)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 679)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 784)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 777)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 784)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 777)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 882)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 875)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 882)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 875)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 980)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 973)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 980)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 973)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1078)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1071)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1078)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1071)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1176)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1169)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1176)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1169)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1274)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1267)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1274)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1267)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1372)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1365)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1372)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1365)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1470)] = @tir.if_then_else(((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1463)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1470)] = @tir.if_then_else(((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1463)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[(threadIdx.x_2*12)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv((threadIdx.x_2*12), 32)*4608)) + (rc.outer.outer*288)) + (floormod((threadIdx.x_2*12), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 1)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 1), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 1), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 2)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 2), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 2), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 3)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 3), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 3), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 4)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 4), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 4), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 5)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 5), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 5), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 6)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 6), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 6), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 7)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 7), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 7), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 8)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 8), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 8), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 9)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 9), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 9), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 10)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 10), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 10), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 11)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 11), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 11), 32)*9)) + (ry.outer.outer*3)) + 1)]
+              }
+            }
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[0]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[64]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[128]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[192]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[1]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[65]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[129]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[193]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[2]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[66]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[130]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[194]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[3]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[67]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[131]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[195]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[4]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[68]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[132]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[196]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[5]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[69]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[133]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[197]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[6]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[70]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[134]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[198]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[7]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[71]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[135]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[199]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[8]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[72]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[136]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[200]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[9]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[73]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[137]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[201]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[10]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[74]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[138]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[202]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[11]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[75]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[139]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[203]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[12]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[76]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[140]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[204]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[13]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[77]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[141]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[205]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[14]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[78]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[142]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[206]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[15]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[79]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[143]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[207]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[32]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[96]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[160]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[224]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[33]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[97]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[161]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[225]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[34]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[98]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[162]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[226]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[35]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[99]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[163]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[227]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[36]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[100]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[164]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[228]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[37]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[101]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[165]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[229]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[38]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[102]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[166]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[230]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[39]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[103]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[167]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[231]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[40]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[104]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[168]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[232]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[41]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[105]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[169]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[233]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[42]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[106]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[170]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[234]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[43]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[107]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[171]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[235]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[44]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[108]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[172]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[236]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[45]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[109]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[173]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[237]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[46]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[110]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[174]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[238]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[47]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[111]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[175]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[239]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[16]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[80]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[144]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[208]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[17]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[81]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[145]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[209]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[18]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[82]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[146]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[210]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[19]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[83]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[147]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[211]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[20]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[84]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[148]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[212]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[21]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[85]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[149]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[213]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[22]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[86]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[150]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[214]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[23]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[87]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[151]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[215]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[24]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[88]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[152]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[216]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[25]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[89]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[153]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[217]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[26]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[90]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[154]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[218]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[27]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[91]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[155]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[219]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[28]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[92]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[156]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[220]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[29]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[93]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[157]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[221]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[30]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[94]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[158]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[222]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[31]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[95]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[159]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[223]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[48]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[112]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[176]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[240]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[49]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[113]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[177]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[241]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[50]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[114]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[178]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[242]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[51]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[115]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[179]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[243]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[52]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[116]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[180]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[244]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[53]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[117]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[181]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[245]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[54]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[118]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[182]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[246]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[55]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[119]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[183]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[247]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[56]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[120]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[184]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[248]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[57]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[121]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[185]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[249]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[58]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[122]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[186]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[250]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[59]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[123]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[187]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[251]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[60]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[124]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[188]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[252]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[61]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[125]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[189]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[253]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[62]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[126]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[190]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[254]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[63]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[127]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[191]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[255]))
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[(threadIdx.x_1*2)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) - 6)], 0f32, dtype=float32)
+              pad_temp.shared[((threadIdx.x_1*2) + 1)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) - 6)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 98)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 92)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 98)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 92)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 196)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 190)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 196)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 190)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 294)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 288)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 294)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 288)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 392)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 386)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 392)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 386)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 490)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 484)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 490)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 484)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 588)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 582)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 588)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 582)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 686)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 680)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 686)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 680)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 784)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 778)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 784)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 778)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 882)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 876)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 882)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 876)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 980)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 974)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 980)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 974)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1078)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1072)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1078)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1072)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1176)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1170)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1176)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1170)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1274)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1268)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1274)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1268)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1372)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1366)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1372)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1366)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              pad_temp.shared[((threadIdx.x_1*2) + 1470)] = @tir.if_then_else((((1 <= (floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1*2), 49), 7) + ry.outer.outer) < 8)) && (floormod((threadIdx.x_1*2), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + (threadIdx.x_1*2)) + 1464)], 0f32, dtype=float32)
+              pad_temp.shared[(((threadIdx.x_1*2) + 1) + 1470)] = @tir.if_then_else((((1 <= (floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer)) && ((floordiv(floormod(((threadIdx.x_1*2) + 1), 49), 7) + ry.outer.outer) < 8)) && (floormod(((threadIdx.x_1*2) + 1), 7) < 6)), (float32*)data_2[((((rc.outer.outer*1568) + (ry.outer.outer*7)) + ((threadIdx.x_1*2) + 1)) + 1464)], 0f32, dtype=float32)
+            }
+            attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 49 {
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[(threadIdx.x_2*12)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv((threadIdx.x_2*12), 32)*4608)) + (rc.outer.outer*288)) + (floormod((threadIdx.x_2*12), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 1)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 1), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 1), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 2)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 2), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 2), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 22), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 3)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 3), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 3), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 4)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 4), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 4), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 5)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 5), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 5), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 6)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 6), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 6), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 7)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 7), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 7), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 8)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 8), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 8), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 9)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 9), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 9), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 10)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 10), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 10), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+              if @tir.likely((threadIdx.x_2 < 21), dtype=bool) {
+                kernel.shared[((threadIdx.x_2*12) + 11)] = (float32*)kernel_2[((((((blockIdx.x*36864) + (floordiv(((threadIdx.x_2*12) + 11), 32)*4608)) + (rc.outer.outer*288)) + (floormod(((threadIdx.x_2*12) + 11), 32)*9)) + (ry.outer.outer*3)) + 2)]
+              }
+            }
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[0]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[64]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[128]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[192]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[1]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[65]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[129]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[193]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[2]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[66]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[130]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[194]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[3]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[67]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[131]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[195]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[4]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[68]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[132]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[196]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[5]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[69]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[133]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[197]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[6]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[70]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[134]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[198]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[7]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[71]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[135]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[199]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[8]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[72]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[136]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[200]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[9]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[73]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[137]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[201]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[10]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[74]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[138]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[202]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[11]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[75]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[139]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[203]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[12]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[76]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[140]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[204]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[13]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[77]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[141]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[205]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[14]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[78]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[142]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[206]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[15]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[79]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[143]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[207]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[32]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[96]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[160]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[threadIdx.x]*(float32*)kernel.shared[224]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[33]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[97]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[161]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 49)]*(float32*)kernel.shared[225]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[34]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[98]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[162]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 98)]*(float32*)kernel.shared[226]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[35]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[99]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[163]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 147)]*(float32*)kernel.shared[227]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[36]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[100]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[164]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 196)]*(float32*)kernel.shared[228]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[37]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[101]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[165]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 245)]*(float32*)kernel.shared[229]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[38]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[102]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[166]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 294)]*(float32*)kernel.shared[230]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[39]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[103]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[167]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 343)]*(float32*)kernel.shared[231]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[40]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[104]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[168]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 392)]*(float32*)kernel.shared[232]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[41]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[105]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[169]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 441)]*(float32*)kernel.shared[233]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[42]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[106]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[170]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 490)]*(float32*)kernel.shared[234]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[43]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[107]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[171]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 539)]*(float32*)kernel.shared[235]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[44]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[108]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[172]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 588)]*(float32*)kernel.shared[236]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[45]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[109]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[173]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 637)]*(float32*)kernel.shared[237]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[46]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[110]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[174]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 686)]*(float32*)kernel.shared[238]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[47]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[111]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[175]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 735)]*(float32*)kernel.shared[239]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[16]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[80]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[144]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[208]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[17]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[81]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[145]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[209]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[18]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[82]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[146]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[210]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[19]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[83]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[147]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[211]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[20]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[84]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[148]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[212]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[21]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[85]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[149]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[213]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[22]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[86]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[150]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[214]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[23]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[87]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[151]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[215]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[24]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[88]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[152]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[216]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[25]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[89]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[153]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[217]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[26]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[90]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[154]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[218]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[27]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[91]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[155]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[219]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[28]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[92]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[156]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[220]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[29]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[93]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[157]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[221]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[30]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[94]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[158]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[222]))
+            compute_3[0] = ((float32*)compute_3[0] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[31]))
+            compute_3[2] = ((float32*)compute_3[2] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[95]))
+            compute_3[4] = ((float32*)compute_3[4] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[159]))
+            compute_3[6] = ((float32*)compute_3[6] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[223]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[48]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[112]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[176]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 784)]*(float32*)kernel.shared[240]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[49]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[113]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[177]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 833)]*(float32*)kernel.shared[241]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[50]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[114]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[178]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 882)]*(float32*)kernel.shared[242]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[51]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[115]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[179]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 931)]*(float32*)kernel.shared[243]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[52]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[116]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[180]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 980)]*(float32*)kernel.shared[244]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[53]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[117]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[181]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1029)]*(float32*)kernel.shared[245]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[54]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[118]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[182]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1078)]*(float32*)kernel.shared[246]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[55]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[119]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[183]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1127)]*(float32*)kernel.shared[247]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[56]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[120]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[184]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1176)]*(float32*)kernel.shared[248]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[57]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[121]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[185]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1225)]*(float32*)kernel.shared[249]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[58]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[122]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[186]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1274)]*(float32*)kernel.shared[250]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[59]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[123]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[187]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1323)]*(float32*)kernel.shared[251]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[60]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[124]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[188]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1372)]*(float32*)kernel.shared[252]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[61]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[125]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[189]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1421)]*(float32*)kernel.shared[253]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[62]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[126]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[190]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1470)]*(float32*)kernel.shared[254]))
+            compute_3[1] = ((float32*)compute_3[1] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[63]))
+            compute_3[3] = ((float32*)compute_3[3] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[127]))
+            compute_3[5] = ((float32*)compute_3[5] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[191]))
+            compute_3[7] = ((float32*)compute_3[7] + ((float32*)pad_temp.shared[(threadIdx.x + 1519)]*(float32*)kernel.shared[255]))
+          }
+        }
+        for (i1.inner: int32, 0, 2) {
+          compute_2[(((blockIdx.x*392) + (i1.inner*49)) + threadIdx.x)] = max(((float32*)compute_3[i1.inner] + (float32*)bias_2[((blockIdx.x*8) + i1.inner)]), 0f32)
+          compute_2[((((blockIdx.x*392) + (i1.inner*49)) + threadIdx.x) + 98)] = max(((float32*)compute_3[(i1.inner + 2)] + (float32*)bias_2[(((blockIdx.x*8) + i1.inner) + 2)]), 0f32)
+          compute_2[((((blockIdx.x*392) + (i1.inner*49)) + threadIdx.x) + 196)] = max(((float32*)compute_3[(i1.inner + 4)] + (float32*)bias_2[(((blockIdx.x*8) + i1.inner) + 4)]), 0f32)
+          compute_2[((((blockIdx.x*392) + (i1.inner*49)) + threadIdx.x) + 294)] = max(((float32*)compute_3[(i1.inner + 6)] + (float32*)bias_2[(((blockIdx.x*8) + i1.inner) + 6)]), 0f32)
+        }
+      }
+    }
+
+
+
+
+
+Check correctness and evaluate performance
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+We build the binary and check its correctness and performance.
+
+
+.. code-block:: default
+
+
+    func = tvm.build(sch, args, target)
+
+    # check correctness
+    data_np = np.random.uniform(size=(N, CI, H, W)).astype(np.float32)
+    weight_np = np.random.uniform(size=(CO, CI, KH, KW)).astype(np.float32)
+    bias_np = np.random.uniform(size=(1, CO, 1, 1)).astype(np.float32)
+    conv_np = conv2d_nchw_python(data_np, weight_np, strides, padding)
+    out_np = np.maximum(conv_np + bias_np, 0.0)
+
+    ctx = tvm.gpu()
+    data_tvm = tvm.nd.array(data_np, ctx=ctx)
+    weight_tvm = tvm.nd.array(weight_np, ctx=ctx)
+    bias_tvm = tvm.nd.array(bias_np, ctx=ctx)
+    out_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)
+    func(data_tvm, weight_tvm, bias_tvm, out_tvm)
+
+    # Check results
+    tvm.testing.assert_allclose(out_np, out_tvm.asnumpy(), rtol=1e-3)
+
+    # Evaluate execution time
+    evaluator = func.time_evaluator(func.entry_name, ctx, min_repeat_ms=500)
+    print(
+        "Execution time of this operator: %.3f ms"
+        % (np.median(evaluator(data_tvm, weight_tvm, bias_tvm, out_tvm).results) * 1000)
+    )
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    Execution time of this operator: 0.322 ms
+
+
+
+Using the record file
+^^^^^^^^^^^^^^^^^^^^^
+During the search, all measuremnt records are dumpped into the record
+file "conv2d.json". The measurement records can be used to re-apply search results,
+resume the search, and perform other analyses.
+
+Here is an example where we load the best schedule from a file,
+print the equivalent python schedule API, and build the binary again.
+
+
+.. code-block:: default
+
+
+    # Load the measuremnt record for the best schedule
+    inp, res = auto_scheduler.load_best("conv2d.json", task.workload_key)
+
+    # Print equivalent python schedule API. This can be used for debugging and
+    # learning the behavior of the auto-scheduler.
+    print("Equivalent python schedule:")
+    print(task.compute_dag.print_python_code_from_state(inp.state))
+
+    # Rebuild the binary. This shows how you can apply the best schedule from a
+    # log file without reruning the search again.
+    sch, args = task.compute_dag.apply_steps_from_state(inp.state)
+    func = tvm.build(sch, args, target)
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+    Equivalent python schedule:
+    i0, i1, i2, i3 = tuple(pad_temp.op.axis) + tuple(pad_temp.op.reduce_axis)
+    nn, ff, yy, xx, rc, ry, rx = tuple(compute.op.axis) + tuple(compute.op.reduce_axis)
+    ax0, ax1, ax2, ax3 = tuple(T_add.op.axis) + tuple(T_add.op.reduce_axis)
+    i0, i1, i2, i3 = tuple(compute.op.axis) + tuple(compute.op.reduce_axis)
+    s[T_add].compute_inline()
+    nn_o_i, nn_i = s[compute].split(nn, factor=1)
+    nn_o_o_i, nn_o_i = s[compute].split(nn_o_i, factor=1)
+    nn_o_o_o_i, nn_o_o_i = s[compute].split(nn_o_o_i, factor=1)
+    nn_o_o_o_o, nn_o_o_o_i = s[compute].split(nn_o_o_o_i, factor=1)
+    ff_o_i, ff_i = s[compute].split(ff, factor=1)
+    ff_o_o_i, ff_o_i = s[compute].split(ff_o_i, factor=1)
+    ff_o_o_o_i, ff_o_o_i = s[compute].split(ff_o_o_i, factor=32)
+    ff_o_o_o_o, ff_o_o_o_i = s[compute].split(ff_o_o_o_i, factor=1)
+    yy_o_i, yy_i = s[compute].split(yy, factor=7)
+    yy_o_o_i, yy_o_i = s[compute].split(yy_o_i, factor=1)
+    yy_o_o_o_i, yy_o_o_i = s[compute].split(yy_o_o_i, factor=1)
+    yy_o_o_o_o, yy_o_o_o_i = s[compute].split(yy_o_o_o_i, factor=1)
+    xx_o_i, xx_i = s[compute].split(xx, factor=1)
+    xx_o_o_i, xx_o_i = s[compute].split(xx_o_i, factor=1)
+    xx_o_o_o_i, xx_o_o_i = s[compute].split(xx_o_o_i, factor=1)
+    xx_o_o_o_o, xx_o_o_o_i = s[compute].split(xx_o_o_o_i, factor=1)
+    rc_o_i, rc_i = s[compute].split(rc, factor=16)
+    rc_o_o, rc_o_i = s[compute].split(rc_o_i, factor=1)
+    ry_o_i, ry_i = s[compute].split(ry, factor=3)
+    ry_o_o, ry_o_i = s[compute].split(ry_o_i, factor=1)
+    rx_o_i, rx_i = s[compute].split(rx, factor=3)
+    rx_o_o, rx_o_i = s[compute].split(rx_o_i, factor=1)
+    s[compute].reorder(nn_o_o_o_o, ff_o_o_o_o, yy_o_o_o_o, xx_o_o_o_o, nn_o_o_o_i, ff_o_o_o_i, yy_o_o_o_i, xx_o_o_o_i, nn_o_o_i, ff_o_o_i, yy_o_o_i, xx_o_o_i, rc_o_o, ry_o_o, rx_o_o, rc_o_i, ry_o_i, rx_o_i, nn_o_i, ff_o_i, yy_o_i, xx_o_i, rc_i, ry_i, rx_i, nn_i, ff_i, yy_i, xx_i)
+    i0_o_i, i0_i = s[compute].split(i0, factor=1)
+    i0_o_o_i, i0_o_i = s[compute].split(i0_o_i, factor=1)
+    i0_o_o_o, i0_o_o_i = s[compute].split(i0_o_o_i, factor=1)
+    i1_o_i, i1_i = s[compute].split(i1, factor=1)
+    i1_o_o_i, i1_o_i = s[compute].split(i1_o_i, factor=32)
+    i1_o_o_o, i1_o_o_i = s[compute].split(i1_o_o_i, factor=1)
+    i2_o_i, i2_i = s[compute].split(i2, factor=7)
+    i2_o_o_i, i2_o_i = s[compute].split(i2_o_i, factor=1)
+    i2_o_o_o, i2_o_o_i = s[compute].split(i2_o_o_i, factor=1)
+    i3_o_i, i3_i = s[compute].split(i3, factor=1)
+    i3_o_o_i, i3_o_i = s[compute].split(i3_o_i, factor=1)
+    i3_o_o_o, i3_o_o_i = s[compute].split(i3_o_o_i, factor=1)
+    s[compute].reorder(i0_o_o_o, i1_o_o_o, i2_o_o_o, i3_o_o_o, i0_o_o_i, i1_o_o_i, i2_o_o_i, i3_o_o_i, i0_o_i, i1_o_i, i2_o_i, i3_o_i, i0_i, i1_i, i2_i, i3_i)
+    s[compute].compute_at(s[compute], i3_o_i)
+    kernel_shared = s.cache_read(kernel, "shared", [compute])
+    ax0, ax1, ax2, ax3 = tuple(kernel_shared.op.axis)
+    s[kernel_shared].compute_at(s[compute], rx_o_o)
+    pad_temp_shared = s.cache_read(pad_temp, "shared", [compute])
+    ax0, ax1, ax2, ax3 = tuple(pad_temp_shared.op.axis)
+    s[pad_temp_shared].compute_at(s[compute], rx_o_o)
+    s[pad_temp].compute_inline()
+    i0_o_o_o_i1_o_o_o_fused_i2_o_o_o_fused_i3_o_o_o_fused = s[compute].fuse(i0_o_o_o, i1_o_o_o, i2_o_o_o, i3_o_o_o)
+    s[compute].bind(i0_o_o_o_i1_o_o_o_fused_i2_o_o_o_fused_i3_o_o_o_fused, tvm.thread_axis("blockIdx.x"))
+    i0_o_o_i_i1_o_o_i_fused_i2_o_o_i_fused_i3_o_o_i_fused = s[compute].fuse(i0_o_o_i, i1_o_o_i, i2_o_o_i, i3_o_o_i)
+    s[compute].bind(i0_o_o_i_i1_o_o_i_fused_i2_o_o_i_fused_i3_o_o_i_fused, tvm.thread_axis("vthread"))
+    i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused = s[compute].fuse(i0_o_i, i1_o_i, i2_o_i, i3_o_i)
+    s[compute].bind(i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused, tvm.thread_axis("threadIdx.x"))
+    ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(ax0, ax1, ax2, ax3)
+    ax0_ax1_fused_ax2_fused_ax3_fused_o, ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
+    s[kernel_shared].vectorize(ax0_ax1_fused_ax2_fused_ax3_fused_i)
+    ax0_ax1_fused_ax2_fused_ax3_fused_o_o, ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=32)
+    s[kernel_shared].bind(ax0_ax1_fused_ax2_fused_ax3_fused_o_i, tvm.thread_axis("threadIdx.x"))
+    ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(ax0, ax1, ax2, ax3)
+    ax0_ax1_fused_ax2_fused_ax3_fused_o, ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
+    s[pad_temp_shared].vectorize(ax0_ax1_fused_ax2_fused_ax3_fused_i)
+    ax0_ax1_fused_ax2_fused_ax3_fused_o_o, ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=32)
+    s[pad_temp_shared].bind(ax0_ax1_fused_ax2_fused_ax3_fused_o_i, tvm.thread_axis("threadIdx.x"))
+    s[compute].pragma(nn_o_o_o_o, "auto_unroll_max_step", 64)
+    s[compute].pragma(nn_o_o_o_o, "unroll_explicit", True)
+
+
+
+
+A more complicated example is to resume the search.
+In this case, we need to create the search policy and cost model by ourselves
+and resume the status of search policy and cost model with the log file.
+In the example below we resume the status and do more 5 trials.
+
+
+.. code-block:: default
+
+
+
+    log_file = "conv2d.json"
+    cost_model = auto_scheduler.XGBModel()
+    cost_model.update_from_file(log_file)
+    search_policy = auto_scheduler.SketchPolicy(
+        task, cost_model, init_search_callbacks=[auto_scheduler.PreloadMeasuredStates(log_file)]
+    )
+    tune_option = auto_scheduler.TuningOptions(
+        num_measure_trials=5,
+        runner=measure_ctx.runner,
+        measure_callbacks=[auto_scheduler.RecordToFile(log_file)],
+    )
+    sch, args = auto_scheduler.auto_schedule(task, search_policy, tuning_options=tune_option)
+
+    # kill the measurement process
+    del measure_ctx
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ Out:
+
+ .. code-block:: none
+
+
+
+
+
+
+.. rst-class:: sphx-glr-timing
+
+   **Total running time of the script:** ( 2 minutes  51.342 seconds)
+
+
+.. _sphx_glr_download_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py:
+
+
+.. only :: html
+
+ .. container:: sphx-glr-footer
+    :class: sphx-glr-footer-example
+
+
+
+  .. container:: sphx-glr-download
+
+     :download:`Download Python source code: tune_conv2d_layer_cuda.py <tune_conv2d_layer_cuda.py>`
+
+
+
+  .. container:: sphx-glr-download
+
+     :download:`Download Jupyter notebook: tune_conv2d_layer_cuda.ipynb <tune_conv2d_layer_cuda.ipynb>`
+
+
+.. only:: html
+
+ .. rst-class:: sphx-glr-signature
+
+    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
diff --git a/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt b/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
index 42f73d8..bb6d6d0 100644
--- a/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
+++ b/docs/_sources/tutorials/auto_scheduler/tune_matmul_x86.rst.txt
@@ -36,7 +36,7 @@ We use matrix multiplication as an example in this tutorial.
 
 Define the computation
 ^^^^^^^^^^^^^^^^^^^^^^
-To begin with, we define the computation of a matmul with bias add.
+To begin with, let us define the computation of a matmul with bias add.
 The function should return the list of input/output tensors.
 From these tensors, the auto-scheduler can get the whole computational graph.
 
@@ -67,6 +67,9 @@ From these tensors, the auto-scheduler can get the whole computational graph.
 Create the search task
 ^^^^^^^^^^^^^^^^^^^^^^
 We then create a search task with N=L=M=128 and dtype="float32"
+If your machine supports avx instructions, you can
+- replace "llvm" below with "llvm -mcpu=core-avx2" to enable AVX2
+- replace "llvm" below with "llvm -mcpu=skylake-avx512" to enable AVX-512
 
 
 .. code-block:: default
@@ -105,7 +108,7 @@ Next, we set parameters for the auto-scheduler.
 * In addition, we use `RecordToFile` to dump measurement records into a file `matmul.json`.
   The measurement records can be used to query the history best, resume the search,
   and do more analyses later.
-* see :any:`auto_schedule.TuningOptions`: for more parameters
+* see :any:`auto_scheduler.auto_schedule.TuningOptions`: for more parameters
 
 
 .. code-block:: default
@@ -143,13 +146,13 @@ After some measurement trials, it will return the best schedule it found.
 
  .. code-block:: none
 
-    *T*T*T*T*T*T*T*T
+    *T*T*T*T*T*T*T*T*T*T
 
 
 
 We can lower the schedule to see the IR after auto-scheduling.
 The auto-scheduler correctly performs optimizations including multi-level tiling,
-parallelization, vectorization, unrolling and fusion.
+parallelization, vectorization, unrolling and operator fusion.
 
 
 .. code-block:: default
@@ -169,32 +172,25 @@ parallelization, vectorization, unrolling and fusion.
 
     primfn(A_1: handle, B_1: handle, C_1: handle, out_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [128, 128], []),
-                 out: Buffer(out_2: Pointer(float32), float32, [128, 128], []),
+      buffers = {out: Buffer(out_2: Pointer(float32), float32, [128, 128], []),
                  B: Buffer(B_2: Pointer(float32), float32, [128, 128], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [128, 128], []),
                  A: Buffer(A_2: Pointer(float32), float32, [128, 128], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C, out_1: out} {
       attr [matmul: Pointer(float32)] "storage_scope" = "global";
-      allocate(matmul, float32, [2048]);
-      for (j.outer: int32, 0, 8) {
-        for (i.outer.outer.inner: int32, 0, 64) {
-          for (j.outer.outer.inner: int32, 0, 2) {
-            matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] = broadcast(0f32, 8)
-            matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] = broadcast(0f32, 8)
-            for (k.outer: int32, 0, 32) {
-              matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] = ((float32x8*)matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] + (broadcast((float32*)A_2[((i.outer.outer.inner*256) + (k.outer*4))], 8)*(float32x8*)B_2[ramp((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)), 1, 8)]))
-              matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] = ((float32x8*)matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 128)], 8)*(float32x8*)B_2[ramp((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)), 1, 8)]))
-              matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] = ((float32x8*)matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 1)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 128), 1, 8)]))
-              matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] = ((float32x8*)matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 129)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 128), 1, 8)]))
-              matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] = ((float32x8*)matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 2)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 256), 1, 8)]))
-              matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] = ((float32x8*)matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 130)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 256), 1, 8)]))
-              matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] = ((float32x8*)matmul[ramp(((i.outer.outer.inner*32) + (j.outer.outer.inner*8)), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 3)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 384), 1, 8)]))
-              matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] = ((float32x8*)matmul[ramp((((i.outer.outer.inner*32) + (j.outer.outer.inner*8)) + 16), 1, 8)] + (broadcast((float32*)A_2[(((i.outer.outer.inner*256) + (k.outer*4)) + 131)], 8)*(float32x8*)B_2[ramp(((((k.outer*512) + (j.outer*16)) + (j.outer.outer.inner*8)) + 384), 1, 8)]))
+      allocate(matmul, float32, [16384]) {
+        for (i: int32, 0, 128) {
+          for (j: int32, 0, 128) {
+            matmul[((i*128) + j)] = 0f32
+            for (k: int32, 0, 128) {
+              matmul[((i*128) + j)] = ((float32*)matmul[((i*128) + j)] + ((float32*)A_2[((i*128) + k)]*(float32*)B_2[((k*128) + j)]))
             }
           }
         }
-        for (i.inner: int32, 0, 128) {
-          out_2[ramp(((i.inner*128) + (j.outer*16)), 1, 16)] = ((float32x16*)matmul[ramp((i.inner*16), 1, 16)] + (float32x16*)C_2[ramp(((i.inner*128) + (j.outer*16)), 1, 16)])
+        for (i_1: int32, 0, 128) {
+          for (j_1: int32, 0, 128) {
+            out_2[((i_1*128) + j_1)] = ((float32*)matmul[((i_1*128) + j_1)] + (float32*)C_2[((i_1*128) + j_1)])
+          }
         }
       }
     }
@@ -203,9 +199,9 @@ parallelization, vectorization, unrolling and fusion.
 
 
 
-Check correctness
-^^^^^^^^^^^^^^^^^
-We build the binary and check its correctness
+Check correctness and evaluate performance
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+We build the binary and check its correctness and performance.
 
 
 .. code-block:: default
@@ -215,16 +211,37 @@ We build the binary and check its correctness
     a_np = np.random.uniform(size=(128, 128)).astype(np.float32)
     b_np = np.random.uniform(size=(128, 128)).astype(np.float32)
     c_np = np.random.uniform(size=(128, 128)).astype(np.float32)
-    d_np = a_np.dot(b_np) + c_np
+    out_np = a_np.dot(b_np) + c_np
+
+    ctx = tvm.cpu()
+    a_tvm = tvm.nd.array(a_np, ctx=ctx)
+    b_tvm = tvm.nd.array(b_np, ctx=ctx)
+    c_tvm = tvm.nd.array(c_np, ctx=ctx)
+    out_tvm = tvm.nd.empty(out_np.shape, ctx=ctx)
+    func(a_tvm, b_tvm, c_tvm, out_tvm)
+
+    # Check results
+    tvm.testing.assert_allclose(out_np, out_tvm.asnumpy(), rtol=1e-3)
+
+    # Evaluate execution time.
+    evaluator = func.time_evaluator(func.entry_name, ctx, min_repeat_ms=500)
+    print(
+        "Execution time of this operator: %.3f ms"
+        % (np.median(evaluator(a_tvm, b_tvm, c_tvm, out_tvm).results) * 1000)
+    )
+
+
 
-    d_tvm = tvm.nd.empty(d_np.shape)
-    func(tvm.nd.array(a_np), tvm.nd.array(b_np), tvm.nd.array(c_np), d_tvm)
 
-    tvm.testing.assert_allclose(d_np, d_tvm.asnumpy(), rtol=1e-3)
 
 
+.. rst-class:: sphx-glr-script-out
+
+ Out:
 
+ .. code-block:: none
 
+    Execution time of this operator: 2.217 ms
 
 
 
@@ -246,6 +263,7 @@ print the equivalent python schedule API, and build the binary again.
 
     # Print equivalent python schedule API. This can be used for debugging and
     # learning the behavior of the auto-scheduler.
+    print("Equivalent python schedule:")
     print(task.compute_dag.print_python_code_from_state(inp.state))
 
     # Rebuild the binary. This shows how you can apply the best schedule from a
@@ -263,25 +281,29 @@ print the equivalent python schedule API, and build the binary again.
 
  .. code-block:: none
 
+    Equivalent python schedule:
     i, j, k = tuple(matmul.op.axis) + tuple(matmul.op.reduce_axis)
     i, j = tuple(out.op.axis) + tuple(out.op.reduce_axis)
     i_o_i, i_i = s[matmul].split(i, factor=1)
-    i_o_o_i, i_o_i = s[matmul].split(i_o_i, factor=32)
-    i_o_o_o, i_o_o_i = s[matmul].split(i_o_o_i, factor=4)
-    j_o_i, j_i = s[matmul].split(j, factor=8)
+    i_o_o_i, i_o_i = s[matmul].split(i_o_i, factor=16)
+    i_o_o_o, i_o_o_i = s[matmul].split(i_o_o_i, factor=8)
+    j_o_i, j_i = s[matmul].split(j, factor=4)
     j_o_o_i, j_o_i = s[matmul].split(j_o_i, factor=4)
-    j_o_o_o, j_o_o_i = s[matmul].split(j_o_o_i, factor=4)
-    k_o, k_i = s[matmul].split(k, factor=2)
+    j_o_o_o, j_o_o_i = s[matmul].split(j_o_o_i, factor=8)
+    k_o, k_i = s[matmul].split(k, factor=8)
     s[matmul].reorder(i_o_o_o, j_o_o_o, i_o_o_i, j_o_o_i, k_o, i_o_i, j_o_i, k_i, i_i, j_i)
-    i_o, i_i = s[out].split(i, factor=128)
-    j_o, j_i = s[out].split(j, factor=128)
-    s[out].reorder(i_o, j_o, i_i, j_i)
-    s[matmul].compute_at(s[out], j_o)
-    i_o = s[out].fuse(i_o)
-    s[out].parallel(i_o)
-    s[matmul].pragma(i_o_o_o, "auto_unroll_max_step", 0)
+    i_o_i, i_i = s[out].split(i, factor=16)
+    i_o_o, i_o_i = s[out].split(i_o_i, factor=8)
+    j_o_i, j_i = s[out].split(j, factor=16)
+    j_o_o, j_o_i = s[out].split(j_o_i, factor=8)
+    s[out].reorder(i_o_o, j_o_o, i_o_i, j_o_i, i_i, j_i)
+    s[matmul].compute_at(s[out], j_o_i)
+    i_o_o_j_o_o_fused = s[out].fuse(i_o_o, j_o_o)
+    s[out].parallel(i_o_o_j_o_o_fused)
+    s[matmul].pragma(i_o_o_o, "auto_unroll_max_step", 64)
     s[matmul].pragma(i_o_o_o, "unroll_explicit", True)
     s[matmul].vectorize(j_i)
+    s[out].vectorize(j_i)
 
 
 
@@ -319,21 +341,24 @@ In the example below we resume the status and do more 5 trials.
 .. note::
   We cannot run the line above because of the conflict between
   python's multiprocessing and tvm's thread pool.
-  After running a tvm generated binary (L112), the python's multiprocessing
-  library will hang forever.
-  You have to make sure that you don't run any tvm generated binaries before
-  calling ansor's search. To run the L156 above, you should comment out L112-114.
+  After running a tvm generated binary the python's multiprocessing library
+  will hang forever. You have to make sure that you don't run any tvm
+  generated binaries before calling auot-scheduler's search.
+  To run the function above, you should comment out all code in
+  "Check correctness and evaluate performance" section.
 
   You should be careful about this problem in your applications.
   There are other workarounds for this problem.
   For example, you can start a new thread/process (with the builtin python library
   threading or multiprocessing) and run the tvm binaries in the new thread/process.
   This provides an isolation and avoids the conflict in the main thread/process.
+  You can also use :any:`auto_scheduler.measure.LocalRPCMeasureContext` for auto-scheduler,
+  as shown in the GPU tutorial (:ref:`auto-scheduler-conv-gpu`).
 
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  31.257 seconds)
+   **Total running time of the script:** ( 1 minutes  56.117 seconds)
 
 
 .. _sphx_glr_download_tutorials_auto_scheduler_tune_matmul_x86.py:
diff --git a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
index a64692c..11d0442 100644
--- a/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,11 +5,11 @@
 
 Computation times
 =================
-**01:00.851** total execution time for **tutorials_autotvm** files:
-
-- **00:39.982**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
-- **00:20.310**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
-- **00:00.148**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
-- **00:00.142**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
-- **00:00.134**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
-- **00:00.134**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+**01:17.575** total execution time for **tutorials_autotvm** files:
+
+- **00:49.825**: :ref:`sphx_glr_tutorials_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)
+- **00:27.115**: :ref:`sphx_glr_tutorials_autotvm_tune_simple_template.py` (``tune_simple_template.py``)
+- **00:00.184**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_cuda.py` (``tune_relay_cuda.py``)
+- **00:00.159**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)
+- **00:00.147**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_arm.py` (``tune_relay_arm.py``)
+- **00:00.144**: :ref:`sphx_glr_tutorials_autotvm_tune_relay_mobile_gpu.py` (``tune_relay_mobile_gpu.py``)
diff --git a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
index b2642b9..0e4f44b 100644
--- a/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_conv2d_cuda.rst.txt
@@ -238,26 +238,26 @@ for this template
        7 unroll_explicit: OtherOption([0, 1]) len=2
     )
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 31.44/31.44     result: MeasureResult(costs=(0.007362882357142857,), error_no=0, all_cost=2.3156585693359375, timestamp=1600369896.6061492)     [('tile_f', [-1, 32, 1, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7166780
-    No: 2   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 3   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 4   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 5   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 6   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 7   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 8   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 9   GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 10  GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 11  GFLOPS: 0.00/31.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 12  GFLOPS: 58.44/58.44     result: MeasureResult(costs=(0.003961679342857143,), error_no=0, all_cost=2.325403928756714, timestamp=1600369901.5643606)      [('tile_f', [-1, 2, 8, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 1, 32]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2077980
-    No: 13  GFLOPS: 0.00/58.44      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 14  GFLOPS: 92.35/92.35     result: MeasureResult(costs=(0.0025068069750000003,), error_no=0, all_cost=1.6282391548156738, timestamp=1600369902.8894455)    [('tile_f', [-1, 2, 16, 8]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8726459
-    No: 15  GFLOPS: 35.61/92.35     result: MeasureResult(costs=(0.00650132225,), error_no=0, all_cost=1.3384368419647217, timestamp=1600369903.834587)     [('tile_f', [-1, 1, 2, 64]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5905444
-    No: 16  GFLOPS: 2.06/92.35      result: MeasureResult(costs=(0.112373169,), error_no=0, all_cost=3.735921859741211, timestamp=1600369905.9102793)       [('tile_f', [-1, 2, 8, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 2, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7428895
-    No: 17  GFLOPS: 0.00/92.35      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (3) /workspace/build/libtvm.so(+0x6831e7) [0x7f1d0f9df1e7]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f1d0f9dec86]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
-    No: 18  GFLOPS: 0.00/92.35      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (4) /workspace/build/libtvm.so(+0x11ceca2) [0x7f1d1052aca2]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x26b) [0x7f1d1052c29b]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::Call [...]
-    No: 19  GFLOPS: 29.63/92.35     result: MeasureResult(costs=(0.007813643307692308,), error_no=0, all_cost=1.2502789497375488, timestamp=1600369913.7677422)     [('tile_f', [-1, 2, 1, 32]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,782066
-    No: 20  GFLOPS: 0.00/92.35      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f1d104f4ec1]\n  [bt] (4) /workspace/build/libtvm.so(+0x11ceca2) [0x7f1d1052aca2]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x26b) [0x7f1d1052c29b]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::Call [...]
+    No: 1   GFLOPS: 27.74/27.74     result: MeasureResult(costs=(0.00834437025,), error_no=0, all_cost=2.8114962577819824, timestamp=1600569712.3554745)    [('tile_f', [-1, 32, 1, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7166780
+    No: 2   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 3   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 4   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 5   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 6   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 7   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 8   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 9   GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 10  GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 11  GFLOPS: 0.00/27.74      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 12  GFLOPS: 46.00/46.00     result: MeasureResult(costs=(0.005032405272727272,), error_no=0, all_cost=2.980912923812866, timestamp=1600569724.2990882)      [('tile_f', [-1, 2, 8, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 1, 32]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2077980
+    No: 13  GFLOPS: 0.00/46.00      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 14  GFLOPS: 73.67/73.67     result: MeasureResult(costs=(0.00314226628125,), error_no=0, all_cost=1.9068870544433594, timestamp=1600569726.168562)  [('tile_f', [-1, 2, 16, 8]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8726459
+    No: 15  GFLOPS: 27.61/73.67     result: MeasureResult(costs=(0.008385226583333334,), error_no=0, all_cost=1.822760820388794, timestamp=1600569727.4046636)      [('tile_f', [-1, 1, 2, 64]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5905444
+    No: 16  GFLOPS: 1.61/73.67      result: MeasureResult(costs=(0.14341517075,), error_no=0, all_cost=4.74316668510437, timestamp=1600569730.2062669)      [('tile_f', [-1, 2, 8, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 2, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7428895
+    No: 17  GFLOPS: 0.00/73.67      result: MeasureResult(costs=(InstantiationError('Traceback (most recent call last):\n  [bt] (4) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (3) /workspace/build/libtvm.so(+0x688a67) [0x7f3a68ee4a67]\n  [bt] (2) /workspace/build/libtvm.so(tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const+0x3e6) [0x7f3a68ee4506]\n  [bt] (1) /workspace/build/libtvm.so(tvm::tir::transform::PrimFunc [...]
+    No: 18  GFLOPS: 0.00/73.67      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (4) /workspace/build/libtvm.so(+0x11d5e42) [0x7f3a69a31e42]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x26b) [0x7f3a69a3343b]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::Call [...]
+    No: 19  GFLOPS: 23.75/73.67     result: MeasureResult(costs=(0.00974691818181818,), error_no=0, all_cost=1.496830701828003, timestamp=1600569739.6011925)       [('tile_f', [-1, 2, 1, 32]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,782066
+    No: 20  GFLOPS: 0.00/73.67      result: MeasureResult(costs=(RuntimeError('Traceback (most recent call last):\n  [bt] (5) /workspace/build/libtvm.so(TVMFuncCall+0x61) [0x7f3a699fc061]\n  [bt] (4) /workspace/build/libtvm.so(+0x11d5e42) [0x7f3a69a31e42]\n  [bt] (3) /workspace/build/libtvm.so(tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const+0x26b) [0x7f3a69a3343b]\n  [bt] (2) /workspace/build/libtvm.so(tvm::runtime::RPCClientSession::Call [...]
 
 
 
@@ -310,7 +310,7 @@ and measure running time.
 
     Best config:
     [('tile_f', [-1, 2, 16, 8]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8726459
-    Time cost of this operator: 0.002607
+    Time cost of this operator: 0.003474
 
 
 
diff --git a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
index 7e0e40b..2ad2306 100644
--- a/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
+++ b/docs/_sources/tutorials/autotvm/tune_simple_template.rst.txt
@@ -365,16 +365,16 @@ used to get the best config later.
  .. code-block:: none
 
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 4.94/4.94       result: MeasureResult(costs=(0.054287080200000004,), error_no=0, all_cost=1.3448398113250732, timestamp=1600369872.023853)      [('tile_y', [-1, 8]), ('tile_x', [-1, 32])],None,53
-    No: 2   GFLOPS: 18.68/18.68     result: MeasureResult(costs=(0.01436866,), error_no=0, all_cost=0.94826340675354, timestamp=1600369872.776203)  [('tile_y', [-1, 128]), ('tile_x', [-1, 256])],None,87
-    No: 3   GFLOPS: 21.91/21.91     result: MeasureResult(costs=(0.0122501188,), error_no=0, all_cost=0.693589448928833, timestamp=1600369873.4960864)      [('tile_y', [-1, 8]), ('tile_x', [-1, 512])],None,93
-    No: 4   GFLOPS: 22.07/22.07     result: MeasureResult(costs=(0.0121623444,), error_no=0, all_cost=0.8166868686676025, timestamp=1600369874.2200832)     [('tile_y', [-1, 128]), ('tile_x', [-1, 512])],None,97
-    No: 5   GFLOPS: 3.95/22.07      result: MeasureResult(costs=(0.0679034736,), error_no=0, all_cost=1.523956537246704, timestamp=1600369875.830494)       [('tile_y', [-1, 256]), ('tile_x', [-1, 4])],None,28
-    No: 6   GFLOPS: 5.93/22.07      result: MeasureResult(costs=(0.0452421748,), error_no=0, all_cost=1.3571109771728516, timestamp=1600369877.0881255)     [('tile_y', [-1, 4]), ('tile_x', [-1, 32])],None,52
-    No: 7   GFLOPS: 22.35/22.35     result: MeasureResult(costs=(0.0120131094,), error_no=0, all_cost=0.6379480361938477, timestamp=1600369877.8042662)     [('tile_y', [-1, 2]), ('tile_x', [-1, 512])],None,91
-    No: 8   GFLOPS: 21.40/22.35     result: MeasureResult(costs=(0.0125418218,), error_no=0, all_cost=0.6462545394897461, timestamp=1600369878.5241864)     [('tile_y', [-1, 2]), ('tile_x', [-1, 256])],None,81
-    No: 9   GFLOPS: 0.87/22.35      result: MeasureResult(costs=(0.3082237446,), error_no=0, all_cost=5.3459532260894775, timestamp=1600369883.9792707)     [('tile_y', [-1, 128]), ('tile_x', [-1, 2])],None,17
-    No: 10  GFLOPS: 1.48/22.35      result: MeasureResult(costs=(0.18157079739999998,), error_no=0, all_cost=3.2799508571624756, timestamp=1600369887.4129384)      [('tile_y', [-1, 1]), ('tile_x', [-1, 2])],None,10
+    No: 1   GFLOPS: 9.96/9.96       result: MeasureResult(costs=(0.0269546244,), error_no=0, all_cost=0.927971601486206, timestamp=1600569684.2742639)      [('tile_y', [-1, 8]), ('tile_x', [-1, 32])],None,53
+    No: 2   GFLOPS: 12.65/12.65     result: MeasureResult(costs=(0.0212222168,), error_no=0, all_cost=1.3642914295196533, timestamp=1600569685.455414)      [('tile_y', [-1, 128]), ('tile_x', [-1, 256])],None,87
+    No: 3   GFLOPS: 15.22/15.22     result: MeasureResult(costs=(0.017637051,), error_no=0, all_cost=1.055131435394287, timestamp=1600569686.5537252)       [('tile_y', [-1, 8]), ('tile_x', [-1, 512])],None,93
+    No: 4   GFLOPS: 13.09/15.22     result: MeasureResult(costs=(0.0205073562,), error_no=0, all_cost=1.1743948459625244, timestamp=1600569687.7479143)     [('tile_y', [-1, 128]), ('tile_x', [-1, 512])],None,97
+    No: 5   GFLOPS: 2.02/15.22      result: MeasureResult(costs=(0.1327765914,), error_no=0, all_cost=2.800631523132324, timestamp=1600569690.720167)       [('tile_y', [-1, 256]), ('tile_x', [-1, 4])],None,28
+    No: 6   GFLOPS: 8.86/15.22      result: MeasureResult(costs=(0.030290215199999998,), error_no=0, all_cost=1.296706199645996, timestamp=1600569692.0395942)      [('tile_y', [-1, 4]), ('tile_x', [-1, 32])],None,52
+    No: 7   GFLOPS: 13.83/15.22     result: MeasureResult(costs=(0.0194060902,), error_no=0, all_cost=0.917316198348999, timestamp=1600569693.2027879)      [('tile_y', [-1, 2]), ('tile_x', [-1, 512])],None,91
+    No: 8   GFLOPS: 11.73/15.22     result: MeasureResult(costs=(0.022882502800000003,), error_no=0, all_cost=1.1356632709503174, timestamp=1600569694.3774312)     [('tile_y', [-1, 2]), ('tile_x', [-1, 256])],None,81
+    No: 9   GFLOPS: 0.92/15.22      result: MeasureResult(costs=(0.291634,), error_no=0, all_cost=5.390047550201416, timestamp=1600569701.2650788)  [('tile_y', [-1, 128]), ('tile_x', [-1, 2])],None,17
+    No: 10  GFLOPS: 1.19/15.22      result: MeasureResult(costs=(0.22557004639999997,), error_no=0, all_cost=4.4250712394714355, timestamp=1600569705.7239919)      [('tile_y', [-1, 1]), ('tile_x', [-1, 2])],None,10
 
 
 
diff --git a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
index a5e53f9..e48f228 100644
--- a/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/dev/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:00.458** total execution time for **tutorials_dev** files:
+**00:00.556** total execution time for **tutorials_dev** files:
 
-- **00:00.314**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
-- **00:00.144**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
+- **00:00.371**: :ref:`sphx_glr_tutorials_dev_use_pass_infra.py` (``use_pass_infra.py``)
+- **00:00.186**: :ref:`sphx_glr_tutorials_dev_low_level_custom_pass.py` (``low_level_custom_pass.py``)
diff --git a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
index 393a51c..77b7acd 100644
--- a/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_model_on_android.rst.txt
@@ -421,7 +421,7 @@ Execute on TVM
 
     TVM prediction top-1: tiger cat
     Evaluate inference time cost...
-    Mean inference time (std dev): 10.27 ms (0.03 ms)
+    Mean inference time (std dev): 13.37 ms (0.12 ms)
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
index 90f6f8a..f1b2e16 100644
--- a/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_object_detection_pytorch.rst.txt
@@ -237,7 +237,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  19.731 seconds)
+   **Total running time of the script:** ( 1 minutes  47.919 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
index 52cb815..22d63ee 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized.rst.txt
@@ -321,7 +321,7 @@ output values are identical out of 1000 outputs from mobilenet v2.
 
  .. code-block:: none
 
-    188 in 1000 raw floating outputs identical.
+    196 in 1000 raw floating outputs identical.
 
 
 
@@ -348,7 +348,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 11.65699572
+    Elapsed average ms: 19.295815570000002
 
 
 
diff --git a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
index 2243487..4416257 100644
--- a/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_prequantized_tflite.rst.txt
@@ -368,7 +368,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
  .. code-block:: none
 
-    Elapsed average ms: 29.642873179999995
+    Elapsed average ms: 36.139228329999995
 
 
 
@@ -401,7 +401,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  58.574 seconds)
+   **Total running time of the script:** ( 2 minutes  38.399 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_prequantized_tflite.py:
diff --git a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
index 6df034a..7903ba3 100644
--- a/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/tutorials/frontend/deploy_ssd_gluoncv.rst.txt
@@ -319,7 +319,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  12.893 seconds)
+   **Total running time of the script:** ( 1 minutes  54.180 seconds)
 
 
 .. _sphx_glr_download_tutorials_frontend_deploy_ssd_gluoncv.py:
diff --git a/docs/_sources/tutorials/frontend/from_onnx.rst.txt b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
index 94d7fbb..970d72e 100644
--- a/docs/_sources/tutorials/frontend/from_onnx.rst.txt
+++ b/docs/_sources/tutorials/frontend/from_onnx.rst.txt
@@ -156,7 +156,7 @@ Execute on TVM
 
  .. code-block:: none
 
-
    ...47%, 0.01 MB, 37 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 74 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 111 KB/s, 0 seconds passed
+
    ...47%, 0.01 MB, 38 KB/s, 0 seconds passed
    ...94%, 0.02 MB, 74 KB/s, 0 seconds passed
    ...100%, 0.02 MB, 111 KB/s, 0 seconds passed
     Cannot find config for target=llvm -keys=cpu, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 32, 224, 224), 'float32'), ('TENSOR', (9, 32, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=llvm -keys=cpu, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 64, 224, 224), 'float32'), ('TENSOR', (32, 64, 3, 3), 'float32'), (1, 1), (1, 1, 1, 1), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
     Cannot find config for target=llvm -keys=cpu, workload=('conv2d_NCHWc.x86', ('TENSOR', (1, 1, 224, 224), 'float32'), ('TENSOR', (64, 1, 5, 5), 'float32'), (1, 1), (2, 2, 2, 2), (1, 1), 'NCHW', 'NCHW', 'float32'). A fallback configuration is used, which may bring great performance regression.
diff --git a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
index 29e3c33..e21d80b 100644
--- a/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,24 +5,24 @@
 
 Computation times
 =================
-**07:41.944** total execution time for **tutorials_frontend** files:
+**10:35.452** total execution time for **tutorials_frontend** files:
 
-- **01:58.574**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
-- **01:19.731**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
-- **01:12.893**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
-- **00:29.693**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
-- **00:25.999**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
-- **00:20.101**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
-- **00:20.076**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
-- **00:18.251**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
-- **00:13.221**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
-- **00:11.759**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
-- **00:10.777**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
-- **00:08.955**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
-- **00:08.911**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
-- **00:07.731**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
-- **00:06.844**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
-- **00:04.684**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
-- **00:01.985**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
-- **00:01.613**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
-- **00:00.145**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
+- **02:38.399**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)
+- **01:54.180**: :ref:`sphx_glr_tutorials_frontend_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)
+- **01:47.919**: :ref:`sphx_glr_tutorials_frontend_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``)
+- **00:38.947**: :ref:`sphx_glr_tutorials_frontend_deploy_prequantized.py` (``deploy_prequantized.py``)
+- **00:37.533**: :ref:`sphx_glr_tutorials_frontend_from_tensorflow.py` (``from_tensorflow.py``)
+- **00:31.184**: :ref:`sphx_glr_tutorials_frontend_deploy_quantized.py` (``deploy_quantized.py``)
+- **00:26.233**: :ref:`sphx_glr_tutorials_frontend_from_tflite.py` (``from_tflite.py``)
+- **00:22.877**: :ref:`sphx_glr_tutorials_frontend_from_darknet.py` (``from_darknet.py``)
+- **00:16.766**: :ref:`sphx_glr_tutorials_frontend_from_caffe2.py` (``from_caffe2.py``)
+- **00:15.025**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)
+- **00:14.010**: :ref:`sphx_glr_tutorials_frontend_deploy_model_on_android.py` (``deploy_model_on_android.py``)
+- **00:11.676**: :ref:`sphx_glr_tutorials_frontend_from_keras.py` (``from_keras.py``)
+- **00:11.624**: :ref:`sphx_glr_tutorials_frontend_from_pytorch.py` (``from_pytorch.py``)
+- **00:09.566**: :ref:`sphx_glr_tutorials_frontend_from_coreml.py` (``from_coreml.py``)
+- **00:08.809**: :ref:`sphx_glr_tutorials_frontend_from_mxnet.py` (``from_mxnet.py``)
+- **00:05.507**: :ref:`sphx_glr_tutorials_frontend_build_gcn.py` (``build_gcn.py``)
+- **00:03.012**: :ref:`sphx_glr_tutorials_frontend_using_external_lib.py` (``using_external_lib.py``)
+- **00:02.012**: :ref:`sphx_glr_tutorials_frontend_from_onnx.py` (``from_onnx.py``)
+- **00:00.173**: :ref:`sphx_glr_tutorials_frontend_deploy_sparse.py` (``deploy_sparse.py``)
diff --git a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
index 2a7c656..8d8f6eb 100644
--- a/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorials/get_started/cross_compilation_and_rpc.rst.txt
@@ -235,7 +235,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.683e-07 secs/op
+    1.179e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
index 96fdfd0..cd28ece 100644
--- a/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
+++ b/docs/_sources/tutorials/get_started/relay_quick_start.rst.txt
@@ -224,7 +224,7 @@ in this example. Then the machine code will be generated as the module library.
 
  .. code-block:: none
 
-
    ...1%, 0.01 MB, 113 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 225 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 336 KB/s, 0 seconds passed
    ...7%, 0.03 MB, 447 KB/s, 0 seconds passed
    ...9%, 0.04 MB, 557 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 662 KB/s, 0 seconds passed
    ...13%, 0.05 MB, 770 KB/s, 0 seconds passed
    ...15%, 0.06 MB, 877 KB/s, 0 seconds passed
    ...17%, 0.07 MB, 984 KB/s, 0 seconds passed
    ...19%, 0.08 MB, 1072 KB/s, 0 seconds passed
    ...21%, 0.09 MB, 1177 KB/s, 0 seconds passed
    ...23%, 0.09 MB, 1281 KB/s, 0 seconds passed
    ...25%, 0.10 MB, 1380 KB/s, 0 seconds passed
    ...27%, 0.11 MB, 1484 KB/s, 0 seconds passed
    ...29%, 0.12 MB, 1587 KB/s, 0 seconds passed
    ...31%, 0.12 MB, 1690 KB/s, 0 seconds passed
    ...33%, 0.13 MB, 1787 KB/s, 0 seconds passed
    ...35%, 0.14 MB, 1888 KB/s, 0 seconds passed
    ...37%, 0.15 MB, 1987 KB/s, 0 seconds passed
    ...39%, 0.16 MB, 2081 KB/s, 0 seconds passed
    ...41%, 0.16 MB, 2181 KB/s
 , 0 seconds passed
    ...43%, 0.17 MB, 2281 KB/s, 0 seconds passed
    ...45%, 0.18 MB, 2380 KB/s, 0 seconds passed
    ...47%, 0.19 MB, 2479 KB/s, 0 seconds passed
    ...49%, 0.20 MB, 2575 KB/s, 0 seconds passed
    ...51%, 0.20 MB, 2666 KB/s, 0 seconds passed
    ...53%, 0.21 MB, 2755 KB/s, 0 seconds passed
    ...55%, 0.22 MB, 2853 KB/s, 0 seconds passed
    ...57%, 0.23 MB, 2951 KB/s, 0 seconds passed
    ...59%, 0.23 MB, 3049 KB/s, 0 seconds passed
    ...61%, 0.24 MB, 3147 KB/s, 0 seconds passed
    ...63%, 0.25 MB, 3245 KB/s, 0 seconds passed
    ...65%, 0.26 MB, 3334 KB/s, 0 seconds passed
    ...67%, 0.27 MB, 3431 KB/s, 0 seconds passed
    ...69%, 0.27 MB, 3519 KB/s, 0 seconds passed
    ...71%, 0.28 MB, 3616 KB/s, 0 seconds passed
    ...73%, 0.29 MB, 3702 KB/s, 0 seconds passed
    ...75%, 0.30 MB, 3798 KB/s, 0 seconds passed
    ...77%, 0.30 MB, 3884 KB/s, 0 seconds passed
    ...79%, 0.31 MB, 3979 KB/s, 0 seconds passed
    ...81%, 0.32 MB, 4064 KB/s, 0 seconds passe
 d
    ...83%, 0.33 MB, 4159 KB/s, 0 seconds passed
    ...85%, 0.34 MB, 4252 KB/s, 0 seconds passed
    ...87%, 0.34 MB, 4346 KB/s, 0 seconds passed
    ...89%, 0.35 MB, 4418 KB/s, 0 seconds passed
    ...91%, 0.36 MB, 4511 KB/s, 0 seconds passed
    ...93%, 0.37 MB, 4603 KB/s, 0 seconds passed
    ...95%, 0.38 MB, 4696 KB/s, 0 seconds passed
    ...97%, 0.38 MB, 4788 KB/s, 0 seconds passed
    ...99%, 0.39 MB, 4880 KB/s, 0 seconds passed
    ...100%, 0.40 MB, 4968 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 37 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 72 KB/s, 0 seconds passed
    ...5%, 0.02 MB, 108 KB/s, 0 seconds passed
    ...7%, 0.03 MB, 143 KB/s, 0 seconds passed
    ...9%, 0.04 MB, 178 KB/s, 0 seconds passed
    ...11%, 0.05 MB, 208 KB/s, 0 seconds passed
    ...13%, 0.05 MB, 241 KB/s, 0 seconds passed
    ...15%, 0.06 MB, 275 KB/s, 0 seconds passed
    ...17%, 0.07 MB, 308 KB/s, 0 seconds passed
    ...19%, 0.08 MB, 341 KB/s, 0 seconds passed
    ...21%, 0.09 MB, 374 KB/s, 0 seconds passed
    ...23%, 0.09 MB, 400 KB/s, 0 seconds passed
    ...25%, 0.10 MB, 434 KB/s, 0 seconds passed
    ...27%, 0.11 MB, 467 KB/s, 0 seconds passed
    ...29%, 0.12 MB, 499 KB/s, 0 seconds passed
    ...31%, 0.12 MB, 530 KB/s, 0 seconds passed
    ...33%, 0.13 MB, 563 KB/s, 0 seconds passed
    ...35%, 0.14 MB, 594 KB/s, 0 seconds passed
    ...37%, 0.15 MB, 627 KB/s, 0 seconds passed
    ...39%, 0.16 MB, 657 KB/s, 0 seconds passed
    ...41%, 0.16 MB, 690 KB/s, 0 seconds pa
 ssed
    ...43%, 0.17 MB, 720 KB/s, 0 seconds passed
    ...45%, 0.18 MB, 751 KB/s, 0 seconds passed
    ...47%, 0.19 MB, 783 KB/s, 0 seconds passed
    ...49%, 0.20 MB, 805 KB/s, 0 seconds passed
    ...51%, 0.20 MB, 835 KB/s, 0 seconds passed
    ...53%, 0.21 MB, 862 KB/s, 0 seconds passed
    ...55%, 0.22 MB, 894 KB/s, 0 seconds passed
    ...57%, 0.23 MB, 922 KB/s, 0 seconds passed
    ...59%, 0.23 MB, 954 KB/s, 0 seconds passed
    ...61%, 0.24 MB, 979 KB/s, 0 seconds passed
    ...63%, 0.25 MB, 1011 KB/s, 0 seconds passed
    ...65%, 0.26 MB, 1039 KB/s, 0 seconds passed
    ...67%, 0.27 MB, 1070 KB/s, 0 seconds passed
    ...69%, 0.27 MB, 1097 KB/s, 0 seconds passed
    ...71%, 0.28 MB, 1128 KB/s, 0 seconds passed
    ...73%, 0.29 MB, 1150 KB/s, 0 seconds passed
    ...75%, 0.30 MB, 1180 KB/s, 0 seconds passed
    ...77%, 0.30 MB, 1205 KB/s, 0 seconds passed
    ...79%, 0.31 MB, 1235 KB/s, 0 seconds passed
    ...81%, 0.32 MB, 1262 KB/s, 0 seconds passed
    ...83%, 0.33 MB, 1
 293 KB/s, 0 seconds passed
    ...85%, 0.34 MB, 1317 KB/s, 0 seconds passed
    ...87%, 0.34 MB, 1347 KB/s, 0 seconds passed
    ...89%, 0.35 MB, 1373 KB/s, 0 seconds passed
    ...91%, 0.36 MB, 1403 KB/s, 0 seconds passed
    ...93%, 0.37 MB, 1426 KB/s, 0 seconds passed
    ...95%, 0.38 MB, 1456 KB/s, 0 seconds passed
    ...97%, 0.38 MB, 1481 KB/s, 0 seconds passed
    ...99%, 0.39 MB, 1511 KB/s, 0 seconds passed
    ...100%, 0.40 MB, 1540 KB/s, 0 seconds passed
     Cannot find config for target=cuda -keys=cuda,gpu -max_num_threads=1024 -model=unknown -thread_warp_size=32, workload=('dense_small_batch.cuda', ('TENSOR', (1, 512), 'float32'), ('TENSOR', (1000, 512), 'float32'), None, 'float32'). A fallback configuration is used, which may bring great performance regression.
 
 
diff --git a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
index 518eaba..17bf649 100644
--- a/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/get_started/sg_execution_times.rst.txt
@@ -5,8 +5,8 @@
 
 Computation times
 =================
-**00:13.361** total execution time for **tutorials_get_started** files:
+**00:16.580** total execution time for **tutorials_get_started** files:
 
-- **00:12.834**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
-- **00:00.363**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
-- **00:00.164**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
+- **00:16.096**: :ref:`sphx_glr_tutorials_get_started_relay_quick_start.py` (``relay_quick_start.py``)
+- **00:00.350**: :ref:`sphx_glr_tutorials_get_started_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)
+- **00:00.134**: :ref:`sphx_glr_tutorials_get_started_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``)
diff --git a/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt b/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
index 3e40f8e..5737072 100644
--- a/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorials/get_started/tensor_expr_get_started.rst.txt
@@ -324,7 +324,7 @@ The following code first performs the following steps:
 
  .. code-block:: none
 
-    ['myadd.tvm_meta.json', 'myadd.so', 'myadd.ptx', 'myadd.o']
+    ['myadd.tvm_meta.json', 'myadd.ptx', 'myadd.so', 'myadd.o']
 
 
 
diff --git a/docs/_sources/tutorials/index.rst.txt b/docs/_sources/tutorials/index.rst.txt
index 7dcdce6..90da4c5 100644
--- a/docs/_sources/tutorials/index.rst.txt
+++ b/docs/_sources/tutorials/index.rst.txt
@@ -903,6 +903,26 @@ AutoScheduler : Template-free Auto Scheduling
    :hidden:
 
    /tutorials/auto_scheduler/tune_matmul_x86
+
+.. raw:: html
+
+    <div class="sphx-glr-thumbcontainer" tooltip=" Different from the existing tutorials-autotvm-sec which relies on  manual templates to define ...">
+
+.. only:: html
+
+    .. figure:: /tutorials/auto_scheduler/images/thumb/sphx_glr_tune_conv2d_layer_cuda_thumb.png
+
+        :ref:`sphx_glr_tutorials_auto_scheduler_tune_conv2d_layer_cuda.py`
+
+.. raw:: html
+
+    </div>
+
+
+.. toctree::
+   :hidden:
+
+   /tutorials/auto_scheduler/tune_conv2d_layer_cuda
 .. raw:: html
 
     <div style='clear:both'></div>
diff --git a/docs/_sources/tutorials/language/scan.rst.txt b/docs/_sources/tutorials/language/scan.rst.txt
index 806a986..5fe2a39 100644
--- a/docs/_sources/tutorials/language/scan.rst.txt
+++ b/docs/_sources/tutorials/language/scan.rst.txt
@@ -266,22 +266,22 @@ The following example demonstrates how we can build recurrence with two states.
 
     primfn(X_1: handle, scan.v0_1: handle, scan.v1_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {scan.v0: Buffer(scan.v0_2: Pointer(float32), float32, [m: int32, n: int32], [stride: int32, stride_1: int32], type="auto"),
-                 scan.v1: Buffer(scan.v1_2: Pointer(float32), float32, [m, l: int32], [stride_2: int32, stride_3: int32], type="auto"),
+      buffers = {scan.v1: Buffer(scan.v1_2: Pointer(float32), float32, [m: int32, l: int32], [stride: int32, stride_1: int32], type="auto"),
+                 scan.v0: Buffer(scan.v0_2: Pointer(float32), float32, [m, n: int32], [stride_2: int32, stride_3: int32], type="auto"),
                  X: Buffer(X_2: Pointer(float32), float32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {X_1: X, scan.v0_1: scan.v0, scan.v1_1: scan.v1} {
       for (i: int32, 0, n) {
-        scan.v0_2[(i*stride_1)] = (float32*)X_2[(i*stride_5)]
+        scan.v0_2[(i*stride_3)] = (float32*)X_2[(i*stride_5)]
       }
       for (i_1: int32, 0, l) {
-        scan.v1_2[(i_1*stride_3)] = 0f32
+        scan.v1_2[(i_1*stride_1)] = 0f32
       }
       for (scan.idx: int32, 0, (m - 1)) {
         for (i_2: int32, 0, n) {
-          scan.v0_2[(((scan.idx + 1)*stride) + (i_2*stride_1))] = ((float32*)scan.v0_2[((scan.idx*stride) + (i_2*stride_1))] + (float32*)X_2[(((scan.idx + 1)*stride_4) + (i_2*stride_5))])
+          scan.v0_2[(((scan.idx + 1)*stride_2) + (i_2*stride_3))] = ((float32*)scan.v0_2[((scan.idx*stride_2) + (i_2*stride_3))] + (float32*)X_2[(((scan.idx + 1)*stride_4) + (i_2*stride_5))])
         }
         for (i_3: int32, 0, l) {
-          scan.v1_2[(((scan.idx + 1)*stride_2) + (i_3*stride_3))] = ((float32*)scan.v1_2[((scan.idx*stride_2) + (i_3*stride_3))] + (float32*)scan.v0_2[(scan.idx*stride)])
+          scan.v1_2[(((scan.idx + 1)*stride) + (i_3*stride_1))] = ((float32*)scan.v1_2[((scan.idx*stride) + (i_3*stride_1))] + (float32*)scan.v0_2[(scan.idx*stride_2)])
         }
       }
     }
diff --git a/docs/_sources/tutorials/language/schedule_primitives.rst.txt b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
index 72c6fb6..b5102ed 100644
--- a/docs/_sources/tutorials/language/schedule_primitives.rst.txt
+++ b/docs/_sources/tutorials/language/schedule_primitives.rst.txt
@@ -407,15 +407,15 @@ tensors at the root separately by default.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 C: Buffer(C_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
                  A: Buffer(A_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride)] = ((float32*)A_2[(i*stride_2)] + 1f32)
+        B_2[(i*stride_1)] = ((float32*)A_2[(i*stride_2)] + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride_1)] = ((float32*)B_2[(i_1*stride)]*2f32)
+        C_2[(i_1*stride)] = ((float32*)B_2[(i_1*stride_1)]*2f32)
       }
     }
 
@@ -492,12 +492,12 @@ tensor is required.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
+                 C: Buffer(C_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
                  A: Buffer(A_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        C_2[(i*stride)] = (((float32*)A_2[(i*stride_2)] + 1f32)*2f32)
+        C_2[(i*stride_1)] = (((float32*)A_2[(i*stride_2)] + 1f32)*2f32)
       }
     }
 
@@ -533,15 +533,15 @@ compute_root
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
-                 C: Buffer(C_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [m: int32], [stride: int32], type="auto"),
+                 B: Buffer(B_2: Pointer(float32), float32, [m], [stride_1: int32], type="auto"),
                  A: Buffer(A_2: Pointer(float32), float32, [m], [stride_2: int32], type="auto")}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (i: int32, 0, m) {
-        B_2[(i*stride)] = ((float32*)A_2[(i*stride_2)] + 1f32)
+        B_2[(i*stride_1)] = ((float32*)A_2[(i*stride_2)] + 1f32)
       }
       for (i_1: int32, 0, m) {
-        C_2[(i_1*stride_1)] = ((float32*)B_2[(i_1*stride)]*2f32)
+        C_2[(i_1*stride)] = ((float32*)B_2[(i_1*stride_1)]*2f32)
       }
     }
 
diff --git a/docs/_sources/tutorials/language/sg_execution_times.rst.txt b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
index 2312db0..4bbb3f9 100644
--- a/docs/_sources/tutorials/language/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/language/sg_execution_times.rst.txt
@@ -5,13 +5,13 @@
 
 Computation times
 =================
-**00:04.301** total execution time for **tutorials_language** files:
+**00:04.698** total execution time for **tutorials_language** files:
 
-- **00:01.654**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
-- **00:00.847**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
-- **00:00.568**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
-- **00:00.544**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
-- **00:00.221**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
-- **00:00.167**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
-- **00:00.160**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
-- **00:00.139**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
+- **00:01.809**: :ref:`sphx_glr_tutorials_language_intrin_math.py` (``intrin_math.py``)
+- **00:00.864**: :ref:`sphx_glr_tutorials_language_tensorize.py` (``tensorize.py``)
+- **00:00.624**: :ref:`sphx_glr_tutorials_language_scan.py` (``scan.py``)
+- **00:00.597**: :ref:`sphx_glr_tutorials_language_reduction.py` (``reduction.py``)
+- **00:00.252**: :ref:`sphx_glr_tutorials_language_extern_op.py` (``extern_op.py``)
+- **00:00.212**: :ref:`sphx_glr_tutorials_language_schedule_primitives.py` (``schedule_primitives.py``)
+- **00:00.186**: :ref:`sphx_glr_tutorials_language_tedd.py` (``tedd.py``)
+- **00:00.154**: :ref:`sphx_glr_tutorials_language_tuple_inputs.py` (``tuple_inputs.py``)
diff --git a/docs/_sources/tutorials/language/tensorize.rst.txt b/docs/_sources/tutorials/language/tensorize.rst.txt
index 30072e2..bf04573 100644
--- a/docs/_sources/tutorials/language/tensorize.rst.txt
+++ b/docs/_sources/tutorials/language/tensorize.rst.txt
@@ -312,8 +312,8 @@ The importing needs to happen before the tensorized GEMV being executed.
                  B: Buffer(B_2: Pointer(float32), float32, [512, 64], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 64], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpuhrhj9nt/input0.cc'
-    source_filename = "/tmp/tmpuhrhj9nt/input0.cc"
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpp_vwn3cy/input0.cc'
+    source_filename = "/tmp/tmpp_vwn3cy/input0.cc"
     target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
     target triple = "x86_64-pc-linux-gnu"
 
diff --git a/docs/_sources/tutorials/language/tuple_inputs.rst.txt b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
index dc68ffe..0e0c849 100644
--- a/docs/_sources/tutorials/language/tuple_inputs.rst.txt
+++ b/docs/_sources/tutorials/language/tuple_inputs.rst.txt
@@ -135,17 +135,17 @@ with :py:func:`te.comm_reducer` as below:
 
     primfn(idx_1: handle, val_1: handle, T.v0_1: handle, T.v1_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {T.v1: Buffer(T.v1_2: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
+      buffers = {T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m: int32], [stride: int32], type="auto"),
                  val: Buffer(val_2: Pointer(int32), int32, [m, n: int32], [stride_1: int32, stride_2: int32], type="auto"),
-                 T.v0: Buffer(T.v0_2: Pointer(int32), int32, [m], [stride_3: int32], type="auto"),
+                 T.v1: Buffer(T.v1_2: Pointer(int32), int32, [m], [stride_3: int32], type="auto"),
                  idx: Buffer(idx_2: Pointer(int32), int32, [m, n], [stride_4: int32, stride_5: int32], type="auto")}
       buffer_map = {idx_1: idx, val_1: val, T.v0_1: T.v0, T.v1_1: T.v1} {
       for (i: int32, 0, m) {
-        T.v0_2[(i*stride_3)] = -1
-        T.v1_2[(i*stride)] = -2147483648
+        T.v0_2[(i*stride)] = -1
+        T.v1_2[(i*stride_3)] = -2147483648
         for (k: int32, 0, n) {
-          T.v0_2[(i*stride_3)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v0_2[(i*stride_3)], (int32*)idx_2[((i*stride_4) + (k*stride_5))], dtype=int32)
-          T.v1_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride)]), (int32*)T.v1_2[(i*stride)], (int32*)val_2[((i*stride_1) + (k*stride_2))], dtype=int32)
+          T.v0_2[(i*stride)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride_3)]), (int32*)T.v0_2[(i*stride)], (int32*)idx_2[((i*stride_4) + (k*stride_5))], dtype=int32)
+          T.v1_2[(i*stride_3)] = @tir.if_then_else(((int32*)val_2[((i*stride_1) + (k*stride_2))] <= (int32*)T.v1_2[(i*stride_3)]), (int32*)T.v1_2[(i*stride_3)], (int32*)val_2[((i*stride_1) + (k*stride_2))], dtype=int32)
         }
       }
     }
diff --git a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
index 6dd1833..8c69056 100644
--- a/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/micro/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:09.831** total execution time for **tutorials_micro** files:
+**00:09.958** total execution time for **tutorials_micro** files:
 
-- **00:09.831**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
+- **00:09.958**: :ref:`sphx_glr_tutorials_micro_micro_tflite.py` (``micro_tflite.py``)
diff --git a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
index 07b6782..744512c 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_cuda.rst.txt
@@ -296,7 +296,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 19.450683 ms
+    Convolution: 53.235596 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
index 7ef17b9..00aafce 100644
--- a/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_conv_tensorcore.rst.txt
@@ -405,8 +405,8 @@ one time.
 
     primfn(A_1: handle, W_1: handle, Conv_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
-                 W: Buffer(W_2: Pointer(float16), float16, [3, 3, 16, 32, 16, 16], []),
+      buffers = {W: Buffer(W_2: Pointer(float16), float16, [3, 3, 16, 32, 16, 16], []),
+                 Conv: Buffer(Conv_2: Pointer(float32), float32, [16, 14, 14, 32, 16, 16], []),
                  A: Buffer(A_2: Pointer(float16), float16, [16, 14, 14, 16, 16, 16], [])}
       buffer_map = {A_1: A, W_1: W, Conv_1: Conv} {
       attr [IterVar(blockIdx.z: int32, (nullptr), "ThreadIndex", "blockIdx.z")] "thread_extent" = 196;
@@ -624,7 +624,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 6.664306 ms
+    conv2d with tensor core: 11.952753 ms
 
 
 
diff --git a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
index 4ce3b3c..8ed61c3 100644
--- a/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
+++ b/docs/_sources/tutorials/optimize/opt_gemm.rst.txt
@@ -118,8 +118,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.006608
-    Baseline: 5.731403
+    Numpy running time: 0.008755
+    Baseline: 3.522159
 
 
 
@@ -206,7 +206,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.104581
+    Opt1: 0.290302
 
 
 
@@ -300,7 +300,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.108814
+    Opt2: 0.323975
 
 
 
@@ -389,7 +389,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.058981
+    Opt3: 0.112113
 
 
 
@@ -413,8 +413,8 @@ Here is the generated IR after loop permutation.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       for (x.outer: int32, 0, 32) {
@@ -499,7 +499,7 @@ the corresponding value from the packed array.
 
  .. code-block:: none
 
-    Opt4: 0.060157
+    Opt4: 0.106036
 
 
 
@@ -523,8 +523,8 @@ Here is the generated IR after array packing.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
-                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
+                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32)] "storage_scope" = "global";
@@ -609,7 +609,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.058175
+    Opt5: 0.097966
 
 
 
@@ -725,7 +725,7 @@ Futhermore, we can also utilize multi-core processors to do the thread-level par
 
  .. code-block:: none
 
-    Opt6: 0.015497
+    Opt6: 0.031980
 
 
 
@@ -749,8 +749,8 @@ Here is the generated IR after parallelization.
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
-                 B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+      buffers = {B: Buffer(B_2: Pointer(float32), float32, [1024, 1024], []),
+                 C: Buffer(C_2: Pointer(float32), float32, [1024, 1024], []),
                  A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [packedB: Pointer(float32)] "storage_scope" = "global";
diff --git a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
index 4f61389..23c7f1d 100644
--- a/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,9 +5,9 @@
 
 Computation times
 =================
-**00:26.082** total execution time for **tutorials_optimize** files:
+**00:27.695** total execution time for **tutorials_optimize** files:
 
-- **00:24.141**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
-- **00:01.006**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
-- **00:00.787**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
-- **00:00.148**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
+- **00:25.261**: :ref:`sphx_glr_tutorials_optimize_opt_gemm.py` (``opt_gemm.py``)
+- **00:01.219**: :ref:`sphx_glr_tutorials_optimize_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``)
+- **00:01.022**: :ref:`sphx_glr_tutorials_optimize_opt_conv_cuda.py` (``opt_conv_cuda.py``)
+- **00:00.193**: :ref:`sphx_glr_tutorials_optimize_opt_matmul_auto_tensorcore.py` (``opt_matmul_auto_tensorcore.py``)
diff --git a/docs/_sources/tutorials/topi/intro_topi.rst.txt b/docs/_sources/tutorials/topi/intro_topi.rst.txt
index 4d84928..fd981d6 100644
--- a/docs/_sources/tutorials/topi/intro_topi.rst.txt
+++ b/docs/_sources/tutorials/topi/intro_topi.rst.txt
@@ -230,7 +230,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, 0x672c2090), stage(b, 0xa1097060), stage(T_add, 0xac83b490), stage(T_multiply, 0xbe2498c0), stage(T_elemwise_sum, 0xbf02d7a0), stage(T_divide, 0xab64f010), stage(T_divide_red.rf, 0x1247eb520), stage(T_divide_red, 0xb6084c70)]
+    [stage(a, 0xba459db0), stage(b, 0x72f1bc40), stage(T_add, 0xce45cd30), stage(T_multiply, 0x12cdc5b40), stage(T_elemwise_sum, 0x1448e7aa0), stage(T_divide, 0x7e043690), stage(T_divide_red.rf, 0xd1159650), stage(T_divide_red, 0xb5be5260)]
 
 
 
diff --git a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
index f222a98..6849b21 100644
--- a/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorials/topi/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:00.604** total execution time for **tutorials_topi** files:
+**00:00.655** total execution time for **tutorials_topi** files:
 
-- **00:00.604**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
+- **00:00.655**: :ref:`sphx_glr_tutorials_topi_intro_topi.py` (``intro_topi.py``)
diff --git a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
index 877d7e3..131f348 100644
--- a/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:05.719** total execution time for **vta_tutorials_autotvm** files:
+**00:07.897** total execution time for **vta_tutorials_autotvm** files:
 
-- **00:05.719**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
+- **00:07.897**: :ref:`sphx_glr_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``)
diff --git a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
index 00dbfc5..9a7fe7a 100644
--- a/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
+++ b/docs/_sources/vta/tutorials/autotvm/tune_relay_vta.rst.txt
@@ -497,7 +497,7 @@ Finally, we launch tuning jobs and evaluate the end-to-end performance.
  .. code-block:: none
 
     Extract tasks...
-
    ...1%, 0.01 MB, 39 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 79 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 119 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 158 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 198 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 237 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 276 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 316 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 355 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 393 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 431 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 469 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 507 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 545 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 583 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 620 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 657 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 695 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 732 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 770 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 807 KB/s, 0 seconds passed
 
    ...23%, 0.17 MB, 844 KB/s, 0 seconds passed
    ...25%, 0.18 MB, 881 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 918 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 955 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 991 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 1028 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 1064 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 1101 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 1138 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 1175 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 1211 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 1248 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 1284 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 1321 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 1356 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 1393 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 1429 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 1465 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 1502 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 1536 KB/s, 0 seconds passed
    ...45%, 0.33 MB, 
 1573 KB/s, 0 seconds passed
    ...46%, 0.34 MB, 1608 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 1645 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 1681 KB/s, 0 seconds passed
    ...50%, 0.36 MB, 1717 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 1753 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 1789 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 1824 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 1861 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 1895 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 1931 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 1967 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 2001 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 2037 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 2071 KB/s, 0 seconds passed
    ...62%, 0.45 MB, 2105 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 2141 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 2176 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 2211 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 2247 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 2282 KB/s, 0 seco
 nds passed
    ...68%, 0.49 MB, 2317 KB/s, 0 seconds passed
    ...69%, 0.50 MB, 2352 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 2388 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 2423 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 2457 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 2492 KB/s, 0 seconds passed
    ...75%, 0.54 MB, 2527 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 2561 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 2596 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 2630 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 2664 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 2699 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 2734 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 2768 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 2803 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 2838 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 2873 KB/s, 0 seconds passed
    ...87%, 0.62 MB, 2905 KB/s, 0 seconds passed
    ...88%, 0.63 MB, 2939 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 2974 KB/s, 0 seconds passed
    ..
 .90%, 0.65 MB, 3008 KB/s, 0 seconds passed
    ...91%, 0.66 MB, 3043 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 3077 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 3111 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 3145 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 3178 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 3212 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 3246 KB/s, 0 seconds passed
    ...99%, 0.71 MB, 3281 KB/s, 0 seconds passed
    ...100%, 0.72 MB, 3313 KB/s, 0 seconds passed
+
    ...1%, 0.01 MB, 11 KB/s, 0 seconds passed
    ...2%, 0.02 MB, 23 KB/s, 0 seconds passed
    ...3%, 0.02 MB, 35 KB/s, 0 seconds passed
    ...4%, 0.03 MB, 47 KB/s, 0 seconds passed
    ...5%, 0.04 MB, 58 KB/s, 0 seconds passed
    ...6%, 0.05 MB, 70 KB/s, 0 seconds passed
    ...7%, 0.05 MB, 81 KB/s, 0 seconds passed
    ...8%, 0.06 MB, 93 KB/s, 0 seconds passed
    ...9%, 0.07 MB, 104 KB/s, 0 seconds passed
    ...10%, 0.08 MB, 116 KB/s, 0 seconds passed
    ...11%, 0.09 MB, 127 KB/s, 0 seconds passed
    ...13%, 0.09 MB, 138 KB/s, 0 seconds passed
    ...14%, 0.10 MB, 150 KB/s, 0 seconds passed
    ...15%, 0.11 MB, 161 KB/s, 0 seconds passed
    ...16%, 0.12 MB, 172 KB/s, 0 seconds passed
    ...17%, 0.12 MB, 184 KB/s, 0 seconds passed
    ...18%, 0.13 MB, 195 KB/s, 0 seconds passed
    ...19%, 0.14 MB, 207 KB/s, 0 seconds passed
    ...20%, 0.15 MB, 218 KB/s, 0 seconds passed
    ...21%, 0.16 MB, 229 KB/s, 0 seconds passed
    ...22%, 0.16 MB, 241 KB/s, 0 seconds passed
    .
 ..23%, 0.17 MB, 252 KB/s, 0 seconds passed
    ...25%, 0.18 MB, 262 KB/s, 0 seconds passed
    ...26%, 0.19 MB, 274 KB/s, 0 seconds passed
    ...27%, 0.20 MB, 285 KB/s, 0 seconds passed
    ...28%, 0.20 MB, 296 KB/s, 0 seconds passed
    ...29%, 0.21 MB, 307 KB/s, 0 seconds passed
    ...30%, 0.22 MB, 319 KB/s, 0 seconds passed
    ...31%, 0.23 MB, 330 KB/s, 0 seconds passed
    ...32%, 0.23 MB, 341 KB/s, 0 seconds passed
    ...33%, 0.24 MB, 353 KB/s, 0 seconds passed
    ...34%, 0.25 MB, 363 KB/s, 0 seconds passed
    ...35%, 0.26 MB, 375 KB/s, 0 seconds passed
    ...36%, 0.27 MB, 386 KB/s, 0 seconds passed
    ...38%, 0.27 MB, 397 KB/s, 0 seconds passed
    ...39%, 0.28 MB, 408 KB/s, 0 seconds passed
    ...40%, 0.29 MB, 419 KB/s, 0 seconds passed
    ...41%, 0.30 MB, 431 KB/s, 0 seconds passed
    ...42%, 0.30 MB, 442 KB/s, 0 seconds passed
    ...43%, 0.31 MB, 453 KB/s, 0 seconds passed
    ...44%, 0.32 MB, 464 KB/s, 0 seconds passed
    ...45%, 0.33 MB, 476 KB/s, 0 seconds p
 assed
    ...46%, 0.34 MB, 487 KB/s, 0 seconds passed
    ...47%, 0.34 MB, 496 KB/s, 0 seconds passed
    ...48%, 0.35 MB, 507 KB/s, 0 seconds passed
    ...50%, 0.36 MB, 518 KB/s, 0 seconds passed
    ...51%, 0.37 MB, 529 KB/s, 0 seconds passed
    ...52%, 0.38 MB, 540 KB/s, 0 seconds passed
    ...53%, 0.38 MB, 551 KB/s, 0 seconds passed
    ...54%, 0.39 MB, 563 KB/s, 0 seconds passed
    ...55%, 0.40 MB, 574 KB/s, 0 seconds passed
    ...56%, 0.41 MB, 584 KB/s, 0 seconds passed
    ...57%, 0.41 MB, 596 KB/s, 0 seconds passed
    ...58%, 0.42 MB, 606 KB/s, 0 seconds passed
    ...59%, 0.43 MB, 617 KB/s, 0 seconds passed
    ...60%, 0.44 MB, 628 KB/s, 0 seconds passed
    ...62%, 0.45 MB, 639 KB/s, 0 seconds passed
    ...63%, 0.45 MB, 649 KB/s, 0 seconds passed
    ...64%, 0.46 MB, 661 KB/s, 0 seconds passed
    ...65%, 0.47 MB, 672 KB/s, 0 seconds passed
    ...66%, 0.48 MB, 683 KB/s, 0 seconds passed
    ...67%, 0.48 MB, 693 KB/s, 0 seconds passed
    ...68%, 0.49 MB, 704 KB/s, 
 0 seconds passed
    ...69%, 0.50 MB, 714 KB/s, 0 seconds passed
    ...70%, 0.51 MB, 725 KB/s, 0 seconds passed
    ...71%, 0.52 MB, 735 KB/s, 0 seconds passed
    ...72%, 0.52 MB, 746 KB/s, 0 seconds passed
    ...73%, 0.53 MB, 757 KB/s, 0 seconds passed
    ...75%, 0.54 MB, 768 KB/s, 0 seconds passed
    ...76%, 0.55 MB, 779 KB/s, 0 seconds passed
    ...77%, 0.55 MB, 790 KB/s, 0 seconds passed
    ...78%, 0.56 MB, 800 KB/s, 0 seconds passed
    ...79%, 0.57 MB, 811 KB/s, 0 seconds passed
    ...80%, 0.58 MB, 821 KB/s, 0 seconds passed
    ...81%, 0.59 MB, 832 KB/s, 0 seconds passed
    ...82%, 0.59 MB, 843 KB/s, 0 seconds passed
    ...83%, 0.60 MB, 854 KB/s, 0 seconds passed
    ...84%, 0.61 MB, 865 KB/s, 0 seconds passed
    ...85%, 0.62 MB, 876 KB/s, 0 seconds passed
    ...87%, 0.62 MB, 886 KB/s, 0 seconds passed
    ...88%, 0.63 MB, 897 KB/s, 0 seconds passed
    ...89%, 0.64 MB, 907 KB/s, 0 seconds passed
    ...90%, 0.65 MB, 918 KB/s, 0 seconds passed
    ...91%, 0.66 MB,
  929 KB/s, 0 seconds passed
    ...92%, 0.66 MB, 940 KB/s, 0 seconds passed
    ...93%, 0.67 MB, 951 KB/s, 0 seconds passed
    ...94%, 0.68 MB, 957 KB/s, 0 seconds passed
    ...95%, 0.69 MB, 968 KB/s, 0 seconds passed
    ...96%, 0.70 MB, 979 KB/s, 0 seconds passed
    ...97%, 0.70 MB, 990 KB/s, 0 seconds passed
    ...99%, 0.71 MB, 1000 KB/s, 0 seconds passed
    ...100%, 0.72 MB, 1011 KB/s, 0 seconds passed
     Extracted 10 conv2d tasks:
     (1, 14, 14, 256, 512, 1, 1, 0, 0, 2, 2)
     (1, 28, 28, 128, 256, 1, 1, 0, 0, 2, 2)
diff --git a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
index c450570..02cce99 100644
--- a/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -243,8 +243,8 @@ The compilation steps are:
 
  .. code-block:: none
 
-
    ...12%, 0.01 MB, 42 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 85 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 127 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 170 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 212 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 254 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 296 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 338 KB/s, 0 seconds passed
-    resnet18_v1 inference graph built in 6.33s!
+
    ...12%, 0.01 MB, 41 KB/s, 0 seconds passed
    ...25%, 0.02 MB, 78 KB/s, 0 seconds passed
    ...38%, 0.02 MB, 118 KB/s, 0 seconds passed
    ...51%, 0.03 MB, 157 KB/s, 0 seconds passed
    ...64%, 0.04 MB, 194 KB/s, 0 seconds passed
    ...77%, 0.05 MB, 226 KB/s, 0 seconds passed
    ...89%, 0.05 MB, 263 KB/s, 0 seconds passed
    ...100%, 0.06 MB, 299 KB/s, 0 seconds passed
+    resnet18_v1 inference graph built in 8.14s!
 
 
 
diff --git a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
index 5deb8fe..9240241 100644
--- a/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,6 +5,6 @@
 
 Computation times
 =================
-**00:24.472** total execution time for **vta_tutorials_frontend** files:
+**00:29.475** total execution time for **vta_tutorials_frontend** files:
 
-- **00:24.472**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
+- **00:29.475**: :ref:`sphx_glr_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``)
diff --git a/docs/_sources/vta/tutorials/matrix_multiply.rst.txt b/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
index bf4a467..2f3c927 100644
--- a/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
+++ b/docs/_sources/vta/tutorials/matrix_multiply.rst.txt
@@ -304,8 +304,8 @@ After we construct the schedule, by default the schedule computes
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], []),
-                 C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 16, 1, 16], []),
+                 B: Buffer(B_2: Pointer(int8), int8, [16, 16, 16, 16], []),
                  A: Buffer(A_2: Pointer(int8), int8, [1, 16, 1, 16], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [A_buf: Pointer(int8)] "storage_scope" = "global";
diff --git a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
index e21cb9a..88370f8 100644
--- a/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/convolution_opt.rst.txt
@@ -631,8 +631,8 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     primfn(data_1: handle, kernel_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], []),
-                 res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], []),
+                 kernel: Buffer(kernel_2: Pointer(int8), int8, [16, 16, 3, 3, 16, 16], []),
                  data: Buffer(data_2: Pointer(int8), int8, [1, 16, 14, 14, 1, 16], [])}
       buffer_map = {data_1: data, kernel_1: kernel, res_1: res} {
       attr [res_conv: Pointer(int32)] "storage_scope" = "local.acc_buffer";
diff --git a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
index 9f038d5..34d0008 100644
--- a/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/matrix_multiply_opt.rst.txt
@@ -351,8 +351,8 @@ below:
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+      buffers = {weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
                  data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       attr [data_buf: Pointer(int8)] "storage_scope" = "global";
@@ -494,8 +494,8 @@ and mapping the shift, and clipping computation to the vector ALU.
 
     primfn(data_1: handle, weight_1: handle, res_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
-                 weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+      buffers = {weight: Buffer(weight_2: Pointer(int8), int8, [64, 64, 16, 16], []),
+                 res: Buffer(res_2: Pointer(int8), int8, [1, 64, 1, 16], []),
                  data: Buffer(data_2: Pointer(int8), int8, [1, 64, 1, 16], [])}
       buffer_map = {data_1: data, weight_1: weight, res_1: res} {
       attr [res_gem: Pointer(int32)] "storage_scope" = "local.acc_buffer";
diff --git a/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
index 882b76b..2466984 100644
--- a/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:03.109** total execution time for **vta_tutorials_optimize** files:
+**00:03.810** total execution time for **vta_tutorials_optimize** files:
 
-- **00:02.623**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
-- **00:00.485**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
+- **00:03.261**: :ref:`sphx_glr_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)
+- **00:00.550**: :ref:`sphx_glr_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``)
diff --git a/docs/_sources/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
index 8275e3e..6522db2 100644
--- a/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/vta/tutorials/sg_execution_times.rst.txt
@@ -5,7 +5,7 @@
 
 Computation times
 =================
-**00:00.906** total execution time for **vta_tutorials** files:
+**00:01.014** total execution time for **vta_tutorials** files:
 
-- **00:00.456**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
-- **00:00.449**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.513**: :ref:`sphx_glr_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``)
+- **00:00.501**: :ref:`sphx_glr_vta_tutorials_vta_get_started.py` (``vta_get_started.py``)
diff --git a/docs/_sources/vta/tutorials/vta_get_started.rst.txt b/docs/_sources/vta/tutorials/vta_get_started.rst.txt
index 1f03202..8f6368b 100644
--- a/docs/_sources/vta/tutorials/vta_get_started.rst.txt
+++ b/docs/_sources/vta/tutorials/vta_get_started.rst.txt
@@ -300,8 +300,8 @@ After we construct the schedule, by default the schedule computes
 
     primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"global_symbol": "main", "tir.noalias": True}
-      buffers = {B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], []),
-                 C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
+      buffers = {C: Buffer(C_2: Pointer(int8), int8, [1, 64, 1, 16], []),
+                 B: Buffer(B_2: Pointer(int32), int32, [1, 64, 1, 16], []),
                  A: Buffer(A_2: Pointer(int32), int32, [1, 64, 1, 16], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
       attr [A_buf: Pointer(int32)] "storage_scope" = "global";
diff --git a/docs/api/doxygen/auto__schedule_8h.html b/docs/api/doxygen/auto__schedule_8h.html
index 5f2cd6d..40ada50 100644
--- a/docs/api/doxygen/auto__schedule_8h.html
+++ b/docs/api/doxygen/auto__schedule_8h.html
@@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </div><div class="textblock"><div class="dynheader">
 Include dependency graph for auto_schedule.h:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="auto__schedule_8h__incl.svg" width="4219" height="1588"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="auto__schedule_8h__incl.svg" width="4312" height="1588"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 </div>
diff --git a/docs/api/doxygen/auto__schedule_8h__incl.svg b/docs/api/doxygen/auto__schedule_8h__incl.svg
index 7950efd..70fcfbf 100644
--- a/docs/api/doxygen/auto__schedule_8h__incl.svg
+++ b/docs/api/doxygen/auto__schedule_8h__incl.svg
@@ -4,1244 +4,1249 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: include/tvm/auto_scheduler/auto_schedule.h Pages: 1 -->
-<svg width="3164pt" height="1191pt"
- viewBox="0.00 0.00 3163.89 1191.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="3234pt" height="1191pt"
+ viewBox="0.00 0.00 3234.00 1191.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1187)">
 <title>include/tvm/auto_scheduler/auto_schedule.h</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-1187 3159.89,-1187 3159.89,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-1187 3230,-1187 3230,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="77.5,-1152.5 77.5,-1182.5 226.5,-1182.5 226.5,-1152.5 77.5,-1152.5"/>
-<text text-anchor="start" x="85.5" y="-1170.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/auto_scheduler</text>
-<text text-anchor="middle" x="152" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">/auto_schedule.h</text>
+<polygon fill="#bfbfbf" stroke="black" points="348.5,-1152.5 348.5,-1182.5 497.5,-1182.5 497.5,-1152.5 348.5,-1152.5"/>
+<text text-anchor="start" x="356.5" y="-1170.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/auto_scheduler</text>
+<text text-anchor="middle" x="423" y="-1159.5" font-family="Helvetica,sans-Serif" font-size="10.00">/auto_schedule.h</text>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
 <g id="a_node2"><a xlink:href="measure_8h.html" target="_top" xlink:title="Distributed measurement infrastructure to measure the runtime costs of tensor programs. These functions are responsible for building the tvm module, uploading it to remote devices, recording the running time costs, and checking the correctness of the output. ">
-<polygon fill="white" stroke="black" points="96,-1085.5 96,-1115.5 208,-1115.5 208,-1085.5 96,-1085.5"/>
-<text text-anchor="start" x="104" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="152" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/measure.h</text>
+<polygon fill="white" stroke="black" points="367,-1085.5 367,-1115.5 479,-1115.5 479,-1085.5 367,-1085.5"/>
+<text text-anchor="start" x="375" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="423" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/measure.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M152,-1152.4C152,-1144.64 152,-1134.81 152,-1125.86"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="155.5,-1125.58 152,-1115.58 148.5,-1125.58 155.5,-1125.58"/>
+<path fill="none" stroke="midnightblue" d="M423,-1152.4C423,-1144.64 423,-1134.81 423,-1125.86"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="426.5,-1125.58 423,-1115.58 419.5,-1125.58 426.5,-1125.58"/>
 </g>
 <!-- Node19 -->
 <g id="node19" class="node"><title>Node19</title>
-<polygon fill="white" stroke="#bfbfbf" points="660,-62 660,-81 702,-81 702,-62 660,-62"/>
-<text text-anchor="middle" x="681" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
+<polygon fill="white" stroke="#bfbfbf" points="625,-62 625,-81 667,-81 667,-62 625,-62"/>
+<text text-anchor="middle" x="646" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
 </g>
 <!-- Node1&#45;&gt;Node19 -->
-<g id="edge177" class="edge"><title>Node1&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M113.251,-1152.44C68.2169,-1133.31 0,-1094.44 0,-1034.5 0,-1034.5 0,-1034.5 0,-188 0,-149.282 23.3338,-140.243 58,-123 163.546,-70.5012 538.673,-70.739 649.776,-72.0128"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="649.934,-75.515 659.977,-72.1416 650.022,-68.5156 649.934,-75.515"/>
+<g id="edge178" class="edge"><title>Node1&#45;&gt;Node19</title>
+<path fill="none" stroke="midnightblue" d="M348.35,-1158.7C226.915,-1143.91 0,-1106.62 0,-1034.5 0,-1034.5 0,-1034.5 0,-188 0,-149.577 22.7119,-140.34 57,-123 155.95,-72.9601 507.485,-71.4155 614.717,-72.1506"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="614.852,-75.6517 624.88,-72.2325 614.909,-68.6519 614.852,-75.6517"/>
 </g>
 <!-- Node50 -->
 <g id="node50" class="node"><title>Node50</title>
 <g id="a_node50"><a xlink:href="search__policy_8h.html" target="_top" xlink:title="The base class of search policies, including the abstract definition of search policy and other suppo...">
-<polygon fill="white" stroke="black" points="1525,-1085.5 1525,-1115.5 1637,-1115.5 1637,-1085.5 1525,-1085.5"/>
-<text text-anchor="start" x="1533" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="1581" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_policy.h</text>
+<polygon fill="white" stroke="black" points="2930,-1085.5 2930,-1115.5 3042,-1115.5 3042,-1085.5 2930,-1085.5"/>
+<text text-anchor="start" x="2938" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="2986" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_policy.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node50 -->
 <g id="edge172" class="edge"><title>Node1&#45;&gt;Node50</title>
-<path fill="none" stroke="midnightblue" d="M226.817,-1163.1C476.362,-1151.75 1277.76,-1115.29 1514.53,-1104.52"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1514.88,-1108.01 1524.71,-1104.06 1514.56,-1101.02 1514.88,-1108.01"/>
+<path fill="none" stroke="midnightblue" d="M497.628,-1164.61C874.309,-1155.05 2562.77,-1112.23 2919.62,-1103.18"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2919.88,-1106.68 2929.79,-1102.93 2919.7,-1099.68 2919.88,-1106.68"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node"><title>Node3</title>
 <g id="a_node3"><a xlink:href="loop__state_8h.html" target="_top" xlink:title="The definition of the &quot;state&quot; in the search. ">
-<polygon fill="white" stroke="black" points="324,-884.5 324,-914.5 436,-914.5 436,-884.5 324,-884.5"/>
-<text text-anchor="start" x="332" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="380" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">/loop_state.h</text>
+<polygon fill="white" stroke="black" points="367,-884.5 367,-914.5 479,-914.5 479,-884.5 367,-884.5"/>
+<text text-anchor="start" x="375" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="423" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">/loop_state.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node3 -->
 <g id="edge2" class="edge"><title>Node2&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M168.397,-1085.19C208.082,-1050.55 309.452,-962.075 355.987,-921.458"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="358.519,-923.895 363.751,-914.682 353.916,-918.621 358.519,-923.895"/>
+<path fill="none" stroke="midnightblue" d="M423,-1085.19C423,-1051.48 423,-966.798 423,-924.84"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="426.5,-924.682 423,-914.682 419.5,-924.682 426.5,-924.682"/>
 </g>
 <!-- Node17 -->
 <g id="node17" class="node"><title>Node17</title>
-<polygon fill="white" stroke="#bfbfbf" points="1210,-62 1210,-81 1254,-81 1254,-62 1210,-62"/>
-<text text-anchor="middle" x="1232" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
+<polygon fill="white" stroke="#bfbfbf" points="2824,-62 2824,-81 2868,-81 2868,-62 2824,-62"/>
+<text text-anchor="middle" x="2846" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
 </g>
 <!-- Node2&#45;&gt;Node17 -->
 <g id="edge169" class="edge"><title>Node2&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M152,-1085.24C152,-1061.03 152,-1010.35 152,-967.5 152,-967.5 152,-967.5 152,-770 152,-694.314 190,-679.686 190,-604 190,-604 190,-604 190,-546 190,-377.401 148.172,-276.104 286,-179 362.362,-125.201 1041.61,-83.3659 1199.37,-74.3202"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200.03,-77.7886 1209.81,-73.7259 1199.63,-70.7999 1200.03,-77.7886"/>
+<path fill="none" stroke="midnightblue" d="M479.17,-1098.49C871.64,-1091.09 3188,-1041.46 3188,-900.5 3188,-900.5 3188,-900.5 3188,-188 3188,-149.868 3165.14,-141.854 3132,-123 3088.93,-98.4983 2943.39,-81.8507 2878.13,-75.4407"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.3,-71.9408 2868.01,-74.4658 2877.63,-78.9085 2878.3,-71.9408"/>
 </g>
 <!-- Node2&#45;&gt;Node19 -->
 <g id="edge171" class="edge"><title>Node2&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M126.982,-1085.39C93.4244,-1064.4 38,-1021.55 38,-967.5 38,-967.5 38,-967.5 38,-188 38,-148.985 62.0405,-140.321 97,-123 195.41,-74.2427 543.01,-71.8039 649.655,-72.2387"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="649.752,-75.7391 659.77,-72.2919 649.788,-68.7392 649.752,-75.7391"/>
+<path fill="none" stroke="midnightblue" d="M366.883,-1099.76C304.226,-1097.91 201.343,-1088.36 123,-1049 76.2332,-1025.5 38,-1019.84 38,-967.5 38,-967.5 38,-967.5 38,-188 38,-149.282 61.4264,-140.428 96,-123 187.898,-76.6763 512.371,-72.5317 614.785,-72.4013"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="614.804,-75.9014 624.804,-72.4008 614.804,-68.9014 614.804,-75.9014"/>
 </g>
 <!-- Node26 -->
 <g id="node26" class="node"><title>Node26</title>
-<polygon fill="white" stroke="#bfbfbf" points="295.5,-179.5 295.5,-198.5 388.5,-198.5 388.5,-179.5 295.5,-179.5"/>
-<text text-anchor="middle" x="342" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
+<polygon fill="white" stroke="#bfbfbf" points="390.5,-179.5 390.5,-198.5 483.5,-198.5 483.5,-179.5 390.5,-179.5"/>
+<text text-anchor="middle" x="437" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
 </g>
 <!-- Node2&#45;&gt;Node26 -->
 <g id="edge170" class="edge"><title>Node2&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M136.985,-1085.23C114.836,-1062.55 76,-1015.89 76,-967.5 76,-967.5 76,-967.5 76,-658 76,-477.294 161.121,-447.769 251,-291 265.96,-264.906 268.908,-257.383 289,-235 298.827,-224.053 311.31,-213.33 321.692,-205.099"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="324.043,-207.705 329.815,-198.82 319.762,-202.167 324.043,-207.705"/>
+<path fill="none" stroke="midnightblue" d="M366.863,-1090.13C268.654,-1072.12 76,-1028.97 76,-967.5 76,-967.5 76,-967.5 76,-770 76,-688.858 152,-685.142 152,-604 152,-604 152,-604 152,-367 152,-260.626 297.051,-215.944 380.192,-199.07"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="381.115,-202.456 390.257,-197.101 379.771,-195.586 381.115,-202.456"/>
 </g>
 <!-- Node44 -->
 <g id="node44" class="node"><title>Node44</title>
 <g id="a_node44"><a xlink:href="search__task_8h.html" target="_top" xlink:title="Meta information and hardware parameters for a search task. ">
-<polygon fill="white" stroke="black" points="1388,-1018.5 1388,-1048.5 1500,-1048.5 1500,-1018.5 1388,-1018.5"/>
-<text text-anchor="start" x="1396" y="-1036.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="1444" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_task.h</text>
+<polygon fill="white" stroke="black" points="1624,-1018.5 1624,-1048.5 1736,-1048.5 1736,-1018.5 1624,-1018.5"/>
+<text text-anchor="start" x="1632" y="-1036.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="1680" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_task.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node44 -->
 <g id="edge144" class="edge"><title>Node2&#45;&gt;Node44</title>
-<path fill="none" stroke="midnightblue" d="M208.346,-1096.67C417.978,-1086.12 1152.29,-1049.18 1377.69,-1037.84"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1377.91,-1041.33 1387.72,-1037.33 1377.56,-1034.34 1377.91,-1041.33"/>
+<path fill="none" stroke="midnightblue" d="M479.042,-1096.6C683.987,-1086 1392.31,-1049.38 1613.48,-1037.94"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1613.84,-1041.43 1623.64,-1037.41 1613.48,-1034.44 1613.84,-1041.43"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node"><title>Node4</title>
-<polygon fill="white" stroke="#bfbfbf" points="332.5,-761.5 332.5,-780.5 427.5,-780.5 427.5,-761.5 332.5,-761.5"/>
-<text text-anchor="middle" x="380" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="218.5,-761.5 218.5,-780.5 313.5,-780.5 313.5,-761.5 218.5,-761.5"/>
+<text text-anchor="middle" x="266" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
 </g>
 <!-- Node3&#45;&gt;Node4 -->
 <g id="edge3" class="edge"><title>Node3&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M380,-884.479C380,-861.719 380,-816.702 380,-791.058"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="383.5,-790.789 380,-780.789 376.5,-790.789 383.5,-790.789"/>
+<path fill="none" stroke="midnightblue" d="M383.099,-884.409C362.774,-875.942 338.514,-863.735 320,-848 300.594,-831.507 284.644,-806.578 275.232,-789.813"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="278.076,-787.714 270.244,-780.579 271.917,-791.041 278.076,-787.714"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node"><title>Node5</title>
 <g id="a_node5"><a xlink:href="transform__step_8h.html" target="_top" xlink:title="Transformation steps. These steps are used to manipulate LoopState. They are similar to the schedule ...">
-<polygon fill="white" stroke="black" points="457,-817.5 457,-847.5 569,-847.5 569,-817.5 457,-817.5"/>
-<text text-anchor="start" x="465" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="513" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform_step.h</text>
+<polygon fill="white" stroke="black" points="329,-817.5 329,-847.5 441,-847.5 441,-817.5 329,-817.5"/>
+<text text-anchor="start" x="337" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="385" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform_step.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node5 -->
 <g id="edge4" class="edge"><title>Node3&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M408.859,-884.396C428.292,-874.899 454.119,-862.276 475.191,-851.978"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="476.75,-855.112 484.197,-847.577 473.676,-848.823 476.75,-855.112"/>
+<path fill="none" stroke="midnightblue" d="M414.755,-884.396C409.974,-876.219 403.839,-865.725 398.384,-856.393"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="401.298,-854.443 393.229,-847.577 395.255,-857.976 401.298,-854.443"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node"><title>Node9</title>
 <g id="a_node9"><a xlink:href="runtime_2container_8h.html" target="_top" xlink:title="Common POD(plain old data) container types. ">
-<polygon fill="white" stroke="black" points="1870,-235.5 1870,-254.5 2002,-254.5 2002,-235.5 1870,-235.5"/>
-<text text-anchor="middle" x="1936" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
+<polygon fill="white" stroke="black" points="1598,-235.5 1598,-254.5 1730,-254.5 1730,-235.5 1598,-235.5"/>
+<text text-anchor="middle" x="1664" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node9 -->
 <g id="edge139" class="edge"><title>Node3&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M436.208,-896.518C545.271,-892.099 792.991,-879.254 999,-848 1134.07,-827.508 1175.82,-840.084 1299,-781 1419.6,-723.155 1411.06,-645.687 1534,-593 1643.25,-546.18 1682.86,-582.298 1799,-557 1916.05,-531.504 2037,-550.291 2037,-430.5 2037,-430.5 2037,-430.5 2037,-367 2037,-318.892 1989.36,-279.792 1959.52,-260.018"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1961.21,-256.947 1950.9,-254.513 1957.45,-262.846 1961.21,-256.947"/>
+<path fill="none" stroke="midnightblue" d="M440.691,-884.326C452.837,-874.423 469.194,-860.744 483,-848 522.951,-811.123 526.293,-794.647 569,-761 668.927,-682.271 708.938,-684.733 814,-613 859.811,-581.722 867.022,-568.031 913,-537 953.625,-509.582 964.336,-503.263 1008,-481 1074.5,-447.096 1092.32,-440.759 1162,-414 1332.86,-348.385 1541.69,-283.186 1626.01,-257.466"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1627.12,-260.788 1635.66,-254.528 1625.08,-254.091 1627.12,-260.788"/>
 </g>
 <!-- Node3&#45;&gt;Node19 -->
 <g id="edge142" class="edge"><title>Node3&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M328.942,-884.442C307.927,-876.553 284.658,-864.824 268,-848 233.814,-813.474 114,-565.615 114,-492 114,-492 114,-492 114,-188 114,-77.7961 530.465,-71.6536 649.546,-72.1497"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="649.786,-75.6512 659.808,-72.2126 649.829,-68.6513 649.786,-75.6512"/>
+<path fill="none" stroke="midnightblue" d="M366.765,-895.952C325.394,-891.384 269.978,-879.308 232,-848 185.525,-809.688 114,-664.23 114,-604 114,-604 114,-604 114,-188 114,-146.829 142.801,-140.642 180,-123 257.533,-86.228 523.588,-75.7696 614.926,-73.226"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="615.027,-76.7246 624.93,-72.9599 614.841,-69.7271 615.027,-76.7246"/>
 </g>
 <!-- Node3&#45;&gt;Node26 -->
 <g id="edge141" class="edge"><title>Node3&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M340.91,-884.388C323.16,-876.211 303.225,-864.265 290,-848 267.653,-820.516 266,-807.422 266,-772 266,-772 266,-772 266,-428.5 266,-342.332 311.593,-246.567 332.152,-207.764"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="335.336,-209.235 337.013,-198.774 329.178,-205.905 335.336,-209.235"/>
+<path fill="none" stroke="midnightblue" d="M374.09,-884.472C347.888,-875.887 315.617,-863.553 289,-848 248.957,-824.602 228.62,-823.023 209,-781 205.24,-772.946 208.731,-769.885 209,-761 213.669,-606.566 187.201,-562.458 230,-414 255.124,-326.851 260.457,-295.532 328,-235 345.571,-219.253 369.412,-208.564 390.317,-201.571"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="391.507,-204.865 399.992,-198.521 389.402,-198.189 391.507,-204.865"/>
 </g>
 <!-- Node27 -->
 <g id="node27" class="node"><title>Node27</title>
-<polygon fill="white" stroke="#bfbfbf" points="1137.5,-179.5 1137.5,-198.5 1184.5,-198.5 1184.5,-179.5 1137.5,-179.5"/>
-<text text-anchor="middle" x="1161" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
+<polygon fill="white" stroke="#bfbfbf" points="817.5,-179.5 817.5,-198.5 864.5,-198.5 864.5,-179.5 817.5,-179.5"/>
+<text text-anchor="middle" x="841" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
 </g>
 <!-- Node3&#45;&gt;Node27 -->
 <g id="edge143" class="edge"><title>Node3&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M364.253,-884.23C341.992,-862.408 304,-818.373 304,-772 304,-772 304,-772 304,-714 304,-321.053 967.913,-213.884 1127.03,-193.842"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1127.69,-197.288 1137.18,-192.596 1126.83,-190.34 1127.69,-197.288"/>
+<path fill="none" stroke="midnightblue" d="M433.07,-884.26C439.299,-874.548 446.714,-861.115 450,-848 453.348,-834.635 450.371,-830.773 450,-817 447.316,-717.361 409.609,-688.244 439,-593 497.138,-404.597 532.723,-337.755 701,-235 734.33,-214.648 777.813,-202.551 807.417,-196.11"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="808.19,-199.524 817.27,-194.064 806.767,-192.671 808.19,-199.524"/>
 </g>
 <!-- Node32 -->
 <g id="node32" class="node"><title>Node32</title>
-<polygon fill="white" stroke="#bfbfbf" points="1434.5,-235.5 1434.5,-254.5 1497.5,-254.5 1497.5,-235.5 1434.5,-235.5"/>
-<text text-anchor="middle" x="1466" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
+<polygon fill="white" stroke="#bfbfbf" points="2602.5,-235.5 2602.5,-254.5 2665.5,-254.5 2665.5,-235.5 2602.5,-235.5"/>
+<text text-anchor="middle" x="2634" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
 </g>
 <!-- Node3&#45;&gt;Node32 -->
 <g id="edge140" class="edge"><title>Node3&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M436.023,-894.091C644.435,-876.953 1363,-810.979 1363,-716 1363,-716 1363,-716 1363,-658 1363,-549.377 1347.79,-518.622 1377,-414 1393.66,-354.332 1433.73,-291.853 1453.93,-262.758"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1456.83,-264.718 1459.73,-254.53 1451.11,-260.683 1456.83,-264.718"/>
+<path fill="none" stroke="midnightblue" d="M479.312,-897.213C770.253,-890.276 2105.24,-854.891 2512,-781 2696.1,-747.557 2894,-791.117 2894,-604 2894,-604 2894,-604 2894,-490 2894,-366.687 2736.57,-287.542 2666.72,-258.492"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2667.66,-255.096 2657.07,-254.571 2665.02,-261.581 2667.66,-255.096"/>
 </g>
 <!-- Node5&#45;&gt;Node4 -->
 <g id="edge5" class="edge"><title>Node5&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M481.481,-817.399C459.365,-807.505 430.033,-794.383 408.594,-784.792"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="409.91,-781.547 399.353,-780.658 407.052,-787.936 409.91,-781.547"/>
+<path fill="none" stroke="midnightblue" d="M356.799,-817.399C337.278,-807.639 311.475,-794.737 292.365,-785.183"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="293.825,-781.999 283.316,-780.658 290.695,-788.26 293.825,-781.999"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node"><title>Node6</title>
-<polygon fill="white" stroke="#bfbfbf" points="445.5,-761.5 445.5,-780.5 516.5,-780.5 516.5,-761.5 445.5,-761.5"/>
-<text text-anchor="middle" x="481" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/json.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="331.5,-761.5 331.5,-780.5 402.5,-780.5 402.5,-761.5 331.5,-761.5"/>
+<text text-anchor="middle" x="367" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/json.h</text>
 </g>
 <!-- Node5&#45;&gt;Node6 -->
 <g id="edge6" class="edge"><title>Node5&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M505.416,-817.399C500.958,-809.11 495.281,-798.554 490.523,-789.708"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="493.475,-787.807 485.656,-780.658 487.31,-791.123 493.475,-787.807"/>
+<path fill="none" stroke="midnightblue" d="M380.734,-817.399C378.28,-809.288 375.17,-799.007 372.53,-790.281"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="375.865,-789.216 369.619,-780.658 369.165,-791.243 375.865,-789.216"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node"><title>Node7</title>
 <g id="a_node7"><a xlink:href="node_8h.html" target="_top" xlink:title="Definitions and helper macros for IR/AST nodes. ">
-<polygon fill="white" stroke="black" points="1692,-537.5 1692,-556.5 1790,-556.5 1790,-537.5 1692,-537.5"/>
-<text text-anchor="middle" x="1741" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
+<polygon fill="white" stroke="black" points="1614,-537.5 1614,-556.5 1712,-556.5 1712,-537.5 1614,-537.5"/>
+<text text-anchor="middle" x="1663" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node7 -->
 <g id="edge7" class="edge"><title>Node5&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M569.032,-825.609C680.102,-813.152 935.483,-780.622 1144,-725 1307.45,-681.4 1337.95,-638.081 1501,-593 1561.65,-576.23 1632.66,-563.778 1681.62,-556.275"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1682.36,-559.703 1691.72,-554.749 1681.31,-552.782 1682.36,-559.703"/>
+<path fill="none" stroke="midnightblue" d="M441.112,-831.691C792.754,-832.533 2678,-831.655 2678,-716 2678,-716 2678,-716 2678,-658 2678,-561.267 1939.94,-549.522 1722.55,-548.161"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1722.32,-544.659 1712.3,-548.102 1722.28,-551.659 1722.32,-544.659"/>
 </g>
 <!-- Node5&#45;&gt;Node27 -->
 <g id="edge138" class="edge"><title>Node5&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M518.403,-817.419C523.167,-803.162 528.806,-780.497 525,-761 515.717,-713.451 484,-708.446 484,-660 484,-660 484,-660 484,-602 484,-318.039 850.442,-307.144 1014,-235 1051.57,-218.427 1097.08,-205.521 1127.41,-197.86"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1128.61,-201.171 1137.47,-195.371 1126.92,-194.375 1128.61,-201.171"/>
+<path fill="none" stroke="midnightblue" d="M396.043,-817.33C405.674,-803.194 417.207,-780.792 411,-761 396.095,-713.473 362.54,-716.323 347,-669 328.692,-613.247 327.583,-593.339 344,-537 370.387,-446.447 403.203,-434.769 458,-358 498.608,-301.11 495.598,-270.173 556,-235 598.132,-210.465 740.98,-197.224 807.013,-192.287"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="807.577,-195.755 817.297,-191.539 807.069,-188.773 807.577,-195.755"/>
 </g>
 <!-- Node39 -->
 <g id="node39" class="node"><title>Node39</title>
 <g id="a_node39"><a xlink:href="schedule_8h.html" target="_top" xlink:title="Define a schedule. ">
-<polygon fill="white" stroke="black" points="587.5,-761.5 587.5,-780.5 690.5,-780.5 690.5,-761.5 587.5,-761.5"/>
-<text text-anchor="middle" x="639" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/schedule.h</text>
+<polygon fill="white" stroke="black" points="990.5,-761.5 990.5,-780.5 1093.5,-780.5 1093.5,-761.5 990.5,-761.5"/>
+<text text-anchor="middle" x="1042" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/schedule.h</text>
 </a>
 </g>
 </g>
 <!-- Node5&#45;&gt;Node39 -->
 <g id="edge111" class="edge"><title>Node5&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M542.86,-817.399C563.623,-807.595 591.1,-794.619 611.361,-785.052"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="613.118,-788.093 620.666,-780.658 610.129,-781.763 613.118,-788.093"/>
+<path fill="none" stroke="midnightblue" d="M441.015,-826.427C563.228,-815.359 853.018,-789.115 980.271,-777.59"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="980.601,-781.075 990.245,-776.687 979.97,-774.103 980.601,-781.075"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node"><title>Node8</title>
 <g id="a_node8"><a xlink:href="node_2container_8h.html" target="_top" xlink:title="Array/Map container in the DSL graph. ">
-<polygon fill="white" stroke="black" points="1621.5,-358.5 1621.5,-377.5 1740.5,-377.5 1740.5,-358.5 1621.5,-358.5"/>
-<text text-anchor="middle" x="1681" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
+<polygon fill="white" stroke="black" points="1516.5,-358.5 1516.5,-377.5 1635.5,-377.5 1635.5,-358.5 1516.5,-358.5"/>
+<text text-anchor="middle" x="1576" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node8 -->
 <g id="edge8" class="edge"><title>Node7&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1738.11,-537.463C1728.9,-510.311 1700.16,-425.512 1687.31,-387.618"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1690.53,-386.215 1684.01,-377.868 1683.9,-388.463 1690.53,-386.215"/>
+<path fill="none" stroke="midnightblue" d="M1655.75,-537.467C1648.57,-528.721 1637.57,-514.524 1630,-501 1608.4,-462.439 1590.67,-413.477 1581.91,-387.366"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1585.17,-386.077 1578.72,-377.671 1578.52,-388.264 1585.17,-386.077"/>
 </g>
 <!-- Node7&#45;&gt;Node9 -->
 <g id="edge104" class="edge"><title>Node7&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1790.14,-545.193C1864.99,-541.069 1999,-521.044 1999,-430.5 1999,-430.5 1999,-430.5 1999,-367 1999,-325.602 1969.63,-284.325 1951,-262.304"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1953.46,-259.808 1944.24,-254.597 1948.2,-264.423 1953.46,-259.808"/>
+<path fill="none" stroke="midnightblue" d="M1663.03,-537.345C1663.16,-496.54 1663.74,-322.938 1663.94,-264.948"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1667.44,-264.702 1663.97,-254.69 1660.44,-264.678 1667.44,-264.702"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node"><title>Node11</title>
 <g id="a_node11"><a xlink:href="runtime_2memory_8h.html" target="_top" xlink:title="Runtime memory management. ">
-<polygon fill="white" stroke="black" points="2016.5,-179.5 2016.5,-198.5 2143.5,-198.5 2143.5,-179.5 2016.5,-179.5"/>
-<text text-anchor="middle" x="2080" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
+<polygon fill="white" stroke="black" points="1305.5,-179.5 1305.5,-198.5 1432.5,-198.5 1432.5,-179.5 1305.5,-179.5"/>
+<text text-anchor="middle" x="1369" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node11 -->
 <g id="edge105" class="edge"><title>Node7&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1790.04,-543.711C1840.6,-539.821 1920.76,-529.325 1984,-501 2030.69,-480.086 2075,-481.662 2075,-430.5 2075,-430.5 2075,-430.5 2075,-367 2075,-309.504 2077.67,-241.544 2079.11,-209.099"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2082.62,-208.987 2079.57,-198.838 2075.62,-208.668 2082.62,-208.987"/>
+<path fill="none" stroke="midnightblue" d="M1651.47,-537.376C1615.06,-509.664 1500.88,-419.023 1432,-322 1412.18,-294.086 1408.63,-285.95 1394,-255 1386.73,-239.628 1379.91,-221.531 1375.23,-208.341"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1378.43,-206.882 1371.84,-198.582 1371.81,-209.177 1378.43,-206.882"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node"><title>Node12</title>
 <g id="a_node12"><a xlink:href="object_8h.html" target="_top" xlink:title="A managed object in the TVM runtime. ">
-<polygon fill="white" stroke="black" points="2330.5,-123.5 2330.5,-142.5 2447.5,-142.5 2447.5,-123.5 2330.5,-123.5"/>
-<text text-anchor="middle" x="2389" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
+<polygon fill="white" stroke="black" points="1856.5,-123.5 1856.5,-142.5 1973.5,-142.5 1973.5,-123.5 1856.5,-123.5"/>
+<text text-anchor="middle" x="1915" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge106" class="edge"><title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1790.23,-545.265C1985.38,-541.712 2694,-522.477 2694,-430.5 2694,-430.5 2694,-430.5 2694,-305.5 2694,-197.871 2547.91,-157.074 2457.95,-142.154"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2458.23,-138.655 2447.81,-140.542 2457.13,-145.568 2458.23,-138.655"/>
+<path fill="none" stroke="midnightblue" d="M1712.11,-545.304C1846.29,-542.991 2216.92,-533.738 2334,-501 2396.55,-483.51 2462,-495.447 2462,-430.5 2462,-430.5 2462,-430.5 2462,-367 2462,-256.12 2396.21,-230.472 2298,-179 2237.34,-147.208 2064.71,-151.594 1983.98,-143.598"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1984.01,-140.079 1973.68,-142.441 1983.22,-147.035 1984.01,-140.079"/>
 </g>
 <!-- Node13 -->
 <g id="node13" class="node"><title>Node13</title>
 <g id="a_node13"><a xlink:href="c__runtime__api_8h.html" target="_top" xlink:title="tvm/runtime/c_runtime\l_api.h">
-<polygon fill="white" stroke="black" points="2753.5,-56.5 2753.5,-86.5 2880.5,-86.5 2880.5,-56.5 2753.5,-56.5"/>
-<text text-anchor="start" x="2761.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
-<text text-anchor="middle" x="2817" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
+<polygon fill="white" stroke="black" points="1726.5,-56.5 1726.5,-86.5 1853.5,-86.5 1853.5,-56.5 1726.5,-56.5"/>
+<text text-anchor="start" x="1734.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
+<text text-anchor="middle" x="1790" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node13 -->
 <g id="edge103" class="edge"><title>Node7&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1790.22,-546.413C1945.19,-547.23 2421.42,-545.925 2568,-501 2758.09,-442.743 2850.95,-392.166 2898,-199 2906.11,-165.705 2903.78,-151.663 2885,-123 2876.89,-110.628 2864.66,-100.182 2852.79,-92.0587"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2854.58,-89.0466 2844.28,-86.5597 2850.78,-94.9262 2854.58,-89.0466"/>
+<path fill="none" stroke="midnightblue" d="M1666.22,-537.114C1678.76,-501.956 1724.37,-368.938 1739,-255 1740.13,-246.184 1743.16,-242.855 1739,-235 1725.67,-209.836 1699.33,-224.164 1686,-199 1681.84,-191.145 1684.91,-187.822 1686,-179 1689.13,-153.537 1684.43,-143.389 1700,-123 1710.36,-109.44 1725.46,-98.9795 1740.35,-91.1899"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1742.11,-94.2254 1749.55,-86.681 1739.03,-87.94 1742.11,-94.2254"/>
 </g>
 <!-- Node7&#45;&gt;Node17 -->
 <g id="edge107" class="edge"><title>Node7&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1691.89,-545.729C1549.47,-543.92 1140.34,-531.173 1045,-445 1019.17,-421.653 1026,-403.817 1026,-369 1026,-369 1026,-369 1026,-305.5 1026,-197.803 1151.06,-116.483 1206.29,-85.8157"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1208.03,-88.8572 1215.14,-81.0066 1204.68,-82.7069 1208.03,-88.8572"/>
+<path fill="none" stroke="midnightblue" d="M1712.14,-546.456C1889.16,-547.693 2493.59,-548.274 2680,-501 2826.63,-463.814 2960,-458.769 2960,-307.5 2960,-307.5 2960,-307.5 2960,-188 2960,-139.198 2907.81,-103.559 2874.05,-85.6129"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2875.58,-82.4611 2865.08,-81.024 2872.39,-88.6934 2875.58,-82.4611"/>
 </g>
 <!-- Node18 -->
 <g id="node18" class="node"><title>Node18</title>
-<polygon fill="white" stroke="#bfbfbf" points="2899,-62 2899,-81 2967,-81 2967,-62 2899,-62"/>
-<text text-anchor="middle" x="2933" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
+<polygon fill="white" stroke="#bfbfbf" points="1205,-62 1205,-81 1273,-81 1273,-62 1205,-62"/>
+<text text-anchor="middle" x="1239" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
 </g>
 <!-- Node7&#45;&gt;Node18 -->
 <g id="edge108" class="edge"><title>Node7&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1790.06,-545.49C1949.83,-543.514 2454.05,-534.698 2613,-501 2702.13,-482.104 3023.92,-345.213 3050,-322 3081.52,-293.944 3103.69,-274.17 3088,-235 3060.88,-167.267 2990.58,-111.724 2954.72,-86.7447"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2956.63,-83.8085 2946.4,-81.0636 2952.68,-89.5909 2956.63,-83.8085"/>
+<path fill="none" stroke="midnightblue" d="M1613.9,-541.72C1439.77,-526.321 860.613,-473.165 833,-445 749.872,-360.208 734.796,-272.494 808,-179 855.786,-117.969 1094.53,-87.0983 1194.68,-76.6689"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1195.18,-80.1358 1204.77,-75.6381 1194.47,-73.172 1195.18,-80.1358"/>
 </g>
 <!-- Node7&#45;&gt;Node19 -->
 <g id="edge109" class="edge"><title>Node7&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1691.57,-545.369C1563.57,-543.267 1223.85,-534.597 1117,-501 893.123,-430.607 730.704,-162.118 690.606,-90.2713"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="693.471,-88.2192 685.584,-81.1449 687.338,-91.5935 693.471,-88.2192"/>
+<path fill="none" stroke="midnightblue" d="M1613.68,-545.531C1505.85,-543.852 1241.29,-536.165 1023,-501 998.097,-496.988 822.594,-460.884 803,-445 686.227,-350.339 654.952,-153.309 647.851,-91.483"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="651.303,-90.8501 646.763,-81.2776 644.343,-91.5923 651.303,-90.8501"/>
 </g>
 <!-- Node7&#45;&gt;Node27 -->
 <g id="edge110" class="edge"><title>Node7&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1691.82,-541.492C1615.18,-533.979 1474.4,-518.033 1459,-501 1433.03,-472.268 1471.78,-448.407 1454,-414 1423.31,-354.619 1247.8,-243.106 1184.09,-203.99"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1185.56,-200.784 1175.2,-198.555 1181.91,-206.757 1185.56,-200.784"/>
+<path fill="none" stroke="midnightblue" d="M1613.99,-545.865C1537.47,-544.522 1394.95,-537.096 1362,-501 1335.89,-472.396 1379.17,-445.759 1357,-414 1298.21,-329.776 1238.42,-364.701 1145,-322 1063.82,-284.894 1046.23,-269.708 964,-235 934.172,-222.41 899.475,-209.905 874.552,-201.284"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="875.44,-197.889 864.846,-197.952 873.167,-204.509 875.44,-197.889"/>
 </g>
 <!-- Node33 -->
 <g id="node33" class="node"><title>Node33</title>
 <g id="a_node33"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
-<polygon fill="white" stroke="black" points="2217.5,-481.5 2217.5,-500.5 2336.5,-500.5 2336.5,-481.5 2217.5,-481.5"/>
-<text text-anchor="middle" x="2277" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
+<polygon fill="white" stroke="black" points="2177.5,-481.5 2177.5,-500.5 2296.5,-500.5 2296.5,-481.5 2177.5,-481.5"/>
+<text text-anchor="middle" x="2237" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node33 -->
 <g id="edge72" class="edge"><title>Node7&#45;&gt;Node33</title>
-<path fill="none" stroke="midnightblue" d="M1790.46,-541.017C1886.22,-531.37 2097.13,-510.121 2207.14,-499.038"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2207.54,-502.516 2217.14,-498.031 2206.84,-495.551 2207.54,-502.516"/>
+<path fill="none" stroke="midnightblue" d="M1712.44,-541.349C1814.69,-531.729 2049.71,-509.62 2167.31,-498.556"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2167.66,-502.039 2177.29,-497.618 2167,-495.07 2167.66,-502.039"/>
 </g>
 <!-- Node34 -->
 <g id="node34" class="node"><title>Node34</title>
 <g id="a_node34"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
-<polygon fill="white" stroke="black" points="1859.5,-414.5 1859.5,-444.5 1970.5,-444.5 1970.5,-414.5 1859.5,-414.5"/>
-<text text-anchor="start" x="1867.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="1915" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
+<polygon fill="white" stroke="black" points="2322.5,-414.5 2322.5,-444.5 2433.5,-444.5 2433.5,-414.5 2322.5,-414.5"/>
+<text text-anchor="start" x="2330.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2378" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node34 -->
 <g id="edge101" class="edge"><title>Node7&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M1754.08,-537.319C1781.74,-518.96 1846.76,-475.796 1885.15,-450.312"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1887.44,-452.992 1893.84,-444.545 1883.57,-447.16 1887.44,-452.992"/>
+<path fill="none" stroke="midnightblue" d="M1712.04,-544.491C1852.79,-539.893 2251.35,-524.893 2305,-501 2328.44,-490.562 2348.83,-469.188 2362.06,-452.697"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2364.97,-454.658 2368.3,-444.602 2359.42,-450.383 2364.97,-454.658"/>
 </g>
 <!-- Node36 -->
 <g id="node36" class="node"><title>Node36</title>
 <g id="a_node36"><a xlink:href="structural__hash_8h.html" target="_top" xlink:title="tvm/node/structural\l_hash.h">
-<polygon fill="white" stroke="black" points="1730.5,-414.5 1730.5,-444.5 1841.5,-444.5 1841.5,-414.5 1730.5,-414.5"/>
-<text text-anchor="start" x="1738.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="1786" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
+<polygon fill="white" stroke="black" points="2490.5,-414.5 2490.5,-444.5 2601.5,-444.5 2601.5,-414.5 2490.5,-414.5"/>
+<text text-anchor="start" x="2498.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2546" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node36 -->
 <g id="edge102" class="edge"><title>Node7&#45;&gt;Node36</title>
-<path fill="none" stroke="midnightblue" d="M1744.38,-537.319C1751.2,-519.812 1766.81,-479.749 1776.86,-453.97"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1780.16,-455.134 1780.53,-444.545 1773.64,-452.592 1780.16,-455.134"/>
+<path fill="none" stroke="midnightblue" d="M1712.1,-545.325C1877.3,-542.773 2406.49,-532.22 2476,-501 2498.91,-490.71 2518.41,-469.316 2530.96,-452.779"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2533.81,-454.803 2536.87,-444.659 2528.16,-450.683 2533.81,-454.803"/>
 </g>
 <!-- Node37 -->
 <g id="node37" class="node"><title>Node37</title>
 <g id="a_node37"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
-<polygon fill="white" stroke="black" points="1468,-481.5 1468,-500.5 1598,-500.5 1598,-481.5 1468,-481.5"/>
-<text text-anchor="middle" x="1533" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
+<polygon fill="white" stroke="black" points="1371,-481.5 1371,-500.5 1501,-500.5 1501,-481.5 1371,-481.5"/>
+<text text-anchor="middle" x="1436" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node37 -->
 <g id="edge98" class="edge"><title>Node7&#45;&gt;Node37</title>
-<path fill="none" stroke="midnightblue" d="M1708.04,-537.444C1672.21,-528.142 1614.84,-513.246 1575.61,-503.062"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1576.36,-499.642 1565.8,-500.516 1574.6,-506.417 1576.36,-499.642"/>
+<path fill="none" stroke="midnightblue" d="M1627.03,-537.444C1587.68,-528.083 1524.51,-513.056 1481.69,-502.868"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1482.34,-499.426 1471.8,-500.516 1480.72,-506.236 1482.34,-499.426"/>
 </g>
 <!-- Node8&#45;&gt;Node9 -->
 <g id="edge9" class="edge"><title>Node8&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1698.93,-358.492C1742.9,-337.627 1856.3,-283.819 1908.7,-258.953"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1910.21,-262.11 1917.75,-254.661 1907.21,-255.786 1910.21,-262.11"/>
+<path fill="none" stroke="midnightblue" d="M1582.33,-358.298C1596.85,-338.327 1632.78,-288.921 1651.78,-262.804"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1654.68,-264.769 1657.73,-254.623 1649.02,-260.652 1654.68,-264.769"/>
 </g>
 <!-- Node8&#45;&gt;Node11 -->
 <g id="edge35" class="edge"><title>Node8&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1725.6,-358.448C1791.65,-344.379 1917.71,-312.062 2011,-255 2032.59,-241.792 2053.15,-220.99 2066.12,-206.489"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2068.9,-208.623 2072.83,-198.783 2063.62,-204.026 2068.9,-208.623"/>
+<path fill="none" stroke="midnightblue" d="M1571.13,-358.426C1557.75,-335.523 1518.19,-272.142 1470,-235 1451.19,-220.498 1426.96,-209.501 1406.95,-202.009"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1408.1,-198.704 1397.51,-198.613 1405.73,-205.291 1408.1,-198.704"/>
 </g>
 <!-- Node8&#45;&gt;Node12 -->
 <g id="edge36" class="edge"><title>Node8&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1740.53,-365.386C1887.18,-361.034 2257.5,-347.621 2307,-322 2366.47,-291.222 2376.81,-263.716 2394,-199 2398.04,-183.771 2396.21,-165.882 2393.7,-152.731"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2397.03,-151.582 2391.44,-142.579 2390.19,-153.1 2397.03,-151.582"/>
+<path fill="none" stroke="midnightblue" d="M1635.56,-365.183C1763.6,-360.798 2056.44,-348.024 2093,-322 2148.48,-282.514 2191.34,-231.517 2148,-179 2142.54,-172.379 2045.4,-155.301 1978.29,-144.191"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1978.64,-140.703 1968.21,-142.53 1977.51,-147.609 1978.64,-140.703"/>
 </g>
 <!-- Node8&#45;&gt;Node17 -->
 <g id="edge70" class="edge"><title>Node8&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1666.45,-358.356C1652.05,-349.638 1629.54,-335.564 1611,-322 1562.09,-286.216 1560.94,-260.588 1506,-235 1424.92,-197.236 1380.91,-250.815 1308,-199 1276.37,-176.517 1285.18,-156.15 1265,-123 1258.15,-111.746 1250.06,-99.3584 1243.61,-89.6685"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1246.49,-87.685 1238.02,-81.3299 1240.68,-91.5844 1246.49,-87.685"/>
+<path fill="none" stroke="midnightblue" d="M1635.64,-364.195C1736.83,-358.972 1948.46,-346.042 2126,-322 2284.25,-300.57 2323.72,-292.289 2479,-255 2565.43,-234.244 2593.54,-242.595 2671,-199 2714.59,-174.469 2713.34,-152.131 2754,-123 2774.31,-108.451 2799.25,-95.0012 2818.04,-85.6462"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2819.8,-88.6807 2827.25,-81.1433 2816.73,-82.3924 2819.8,-88.6807"/>
 </g>
 <!-- Node8&#45;&gt;Node19 -->
 <g id="edge71" class="edge"><title>Node8&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1645.9,-358.475C1532.58,-330.708 1166.68,-239.102 870,-143 813.509,-124.701 748.937,-99.7146 711.772,-84.9269"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.63,-81.5009 702.045,-81.0405 710.033,-88.0012 712.63,-81.5009"/>
+<path fill="none" stroke="midnightblue" d="M1542.87,-358.48C1436.7,-330.905 1095.88,-240.223 821,-143 769.005,-124.609 709.7,-99.9119 675.196,-85.16"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="676.303,-81.8266 665.733,-81.0978 673.542,-88.2589 676.303,-81.8266"/>
 </g>
 <!-- Node22 -->
 <g id="node22" class="node"><title>Node22</title>
-<polygon fill="white" stroke="#bfbfbf" points="1317,-179.5 1317,-198.5 1379,-198.5 1379,-179.5 1317,-179.5"/>
-<text text-anchor="middle" x="1348" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
+<polygon fill="white" stroke="#bfbfbf" points="1111,-179.5 1111,-198.5 1173,-198.5 1173,-179.5 1111,-179.5"/>
+<text text-anchor="middle" x="1142" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
 </g>
 <!-- Node8&#45;&gt;Node22 -->
 <g id="edge69" class="edge"><title>Node8&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1674.47,-358.289C1656.14,-334.481 1601.5,-267.907 1540,-235 1526.77,-227.921 1441.62,-209.434 1389.25,-198.483"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1389.75,-195.012 1379.25,-196.399 1388.33,-201.865 1389.75,-195.012"/>
+<path fill="none" stroke="midnightblue" d="M1562.22,-358.349C1524.9,-335.256 1418.2,-271.444 1322,-235 1296.85,-225.472 1227.92,-209.226 1183.03,-199.081"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1183.53,-195.607 1173.01,-196.828 1181.99,-202.437 1183.53,-195.607"/>
 </g>
 <!-- Node28 -->
 <g id="node28" class="node"><title>Node28</title>
 <g id="a_node28"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
-<polygon fill="white" stroke="red" points="2185.5,-291.5 2185.5,-321.5 2298.5,-321.5 2298.5,-291.5 2185.5,-291.5"/>
-<text text-anchor="start" x="2193.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
-<text text-anchor="middle" x="2242" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
+<polygon fill="white" stroke="red" points="1971.5,-291.5 1971.5,-321.5 2084.5,-321.5 2084.5,-291.5 1971.5,-291.5"/>
+<text text-anchor="start" x="1979.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
+<text text-anchor="middle" x="2028" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
 </a>
 </g>
 </g>
 <!-- Node8&#45;&gt;Node28 -->
 <g id="edge37" class="edge"><title>Node8&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M1740.51,-360.689C1845.92,-349.508 2064.75,-326.299 2175.18,-314.587"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2175.62,-318.06 2185.2,-313.525 2174.88,-311.099 2175.62,-318.06"/>
+<path fill="none" stroke="midnightblue" d="M1635.56,-359.16C1719.72,-348.081 1873,-327.904 1961.02,-316.317"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1961.71,-319.757 1971.16,-314.982 1960.79,-312.817 1961.71,-319.757"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node"><title>Node10</title>
-<polygon fill="white" stroke="#bfbfbf" points="1982,-62 1982,-81 2068,-81 2068,-62 1982,-62"/>
-<text text-anchor="middle" x="2025" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="2245,-62 2245,-81 2331,-81 2331,-62 2245,-62"/>
+<text text-anchor="middle" x="2288" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
 </g>
 <!-- Node9&#45;&gt;Node10 -->
 <g id="edge10" class="edge"><title>Node9&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1874.38,-235.448C1832.02,-228.161 1781.14,-216.127 1768,-199 1762.59,-191.948 1763.06,-186.391 1768,-179 1813.27,-111.235 1910.52,-86.5326 1971.56,-77.5659"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1972.34,-80.9914 1981.77,-76.1624 1971.38,-74.0566 1972.34,-80.9914"/>
+<path fill="none" stroke="midnightblue" d="M1694.94,-235.495C1798.07,-207.153 2130.1,-115.898 2246.89,-83.7975"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2248.15,-87.0811 2256.87,-81.056 2246.3,-80.3314 2248.15,-87.0811"/>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge11" class="edge"><title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1958.82,-235.444C1982.83,-226.438 2020.83,-212.189 2047.87,-202.049"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2049.16,-205.305 2057.29,-198.516 2046.7,-198.751 2049.16,-205.305"/>
+<path fill="none" stroke="midnightblue" d="M1617.26,-235.444C1565.25,-225.925 1481.25,-210.547 1425.58,-200.356"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1425.99,-196.874 1415.52,-198.516 1424.73,-203.76 1425.99,-196.874"/>
 </g>
 <!-- Node9&#45;&gt;Node12 -->
 <g id="edge25" class="edge"><title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1938.39,-235.043C1942.78,-220.543 1953.6,-192.22 1974,-179 2029.57,-142.998 2217.24,-135.464 2320.12,-134.101"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2320.45,-137.598 2330.41,-133.982 2320.37,-130.598 2320.45,-137.598"/>
+<path fill="none" stroke="midnightblue" d="M1683.7,-235.368C1727.78,-216.051 1834.54,-169.259 1886.14,-146.648"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1887.64,-149.811 1895.4,-142.591 1884.83,-143.4 1887.64,-149.811"/>
 </g>
 <!-- Node9&#45;&gt;Node17 -->
 <g id="edge30" class="edge"><title>Node9&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1892.04,-235.471C1856.15,-227.852 1804.45,-215.37 1761,-199 1691.06,-172.65 1682.38,-145.137 1611,-123 1486.98,-84.539 1331.21,-75.3697 1264.62,-73.184"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.44,-69.6774 1254.35,-72.88 1264.24,-76.6744 1264.44,-69.6774"/>
+<path fill="none" stroke="midnightblue" d="M1693.65,-235.439C1772.7,-212.976 1995.46,-152.077 2185,-123 2424.62,-86.2399 2717.41,-75.7839 2813.66,-73.2324"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2813.99,-76.7252 2823.89,-72.9716 2813.81,-69.7275 2813.99,-76.7252"/>
 </g>
 <!-- Node9&#45;&gt;Node18 -->
 <g id="edge32" class="edge"><title>Node9&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1942.26,-235.299C1953.37,-220.634 1978.13,-191.384 2007,-179 2113.66,-133.257 2412.67,-155.907 2528,-143 2689.36,-124.943 2731.14,-124.982 2889,-87 2892.47,-86.1657 2896.05,-85.1853 2899.61,-84.1346"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2900.96,-87.3802 2909.46,-81.0497 2898.87,-80.7006 2900.96,-87.3802"/>
+<path fill="none" stroke="midnightblue" d="M1608.81,-235.46C1562.27,-227.377 1500.13,-214.232 1480,-199 1449.05,-175.578 1467.83,-146.574 1437,-123 1392.22,-88.7593 1326.75,-77.5689 1283.52,-74.0061"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1283.53,-70.4979 1273.31,-73.2717 1283.03,-77.4799 1283.53,-70.4979"/>
 </g>
 <!-- Node9&#45;&gt;Node19 -->
 <g id="edge33" class="edge"><title>Node9&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1873.76,-235.495C1647.99,-204.643 876.699,-99.243 712.073,-76.7462"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.5,-73.2722 702.118,-75.3859 711.552,-80.2077 712.5,-73.2722"/>
+<path fill="none" stroke="midnightblue" d="M1597.66,-238.434C1507.45,-230.428 1351.04,-214.873 1296,-199 1239.84,-182.804 1229.32,-169.063 1177,-143 1159.92,-134.49 1157.27,-128.517 1139,-123 1051.76,-96.6551 771.328,-79.3313 677.166,-74.1381"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.306,-70.6407 667.131,-73.5919 676.926,-77.6303 677.306,-70.6407"/>
 </g>
 <!-- Node9&#45;&gt;Node22 -->
 <g id="edge26" class="edge"><title>Node9&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1869.98,-237.937C1747.84,-226.72 1489.94,-203.035 1389.38,-193.8"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1389.59,-190.304 1379.31,-192.875 1388.94,-197.275 1389.59,-190.304"/>
+<path fill="none" stroke="midnightblue" d="M1597.89,-237.161C1488.64,-225.859 1273.54,-203.607 1183.34,-194.277"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1183.54,-190.778 1173.23,-193.231 1182.82,-197.741 1183.54,-190.778"/>
 </g>
 <!-- Node23 -->
 <g id="node23" class="node"><title>Node23</title>
-<polygon fill="white" stroke="#bfbfbf" points="1777.5,-179.5 1777.5,-198.5 1826.5,-198.5 1826.5,-179.5 1777.5,-179.5"/>
-<text text-anchor="middle" x="1802" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstring</text>
+<polygon fill="white" stroke="#bfbfbf" points="1489.5,-179.5 1489.5,-198.5 1538.5,-198.5 1538.5,-179.5 1489.5,-179.5"/>
+<text text-anchor="middle" x="1514" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstring</text>
 </g>
 <!-- Node9&#45;&gt;Node23 -->
 <g id="edge27" class="edge"><title>Node9&#45;&gt;Node23</title>
-<path fill="none" stroke="midnightblue" d="M1914.77,-235.444C1892.62,-226.517 1857.68,-212.439 1832.56,-202.317"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1833.72,-199.008 1823.13,-198.516 1831.1,-205.501 1833.72,-199.008"/>
+<path fill="none" stroke="midnightblue" d="M1640.23,-235.444C1615.11,-226.399 1575.29,-212.064 1547.1,-201.916"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1548.25,-198.611 1537.66,-198.516 1545.88,-205.197 1548.25,-198.611"/>
 </g>
 <!-- Node24 -->
 <g id="node24" class="node"><title>Node24</title>
-<polygon fill="white" stroke="#bfbfbf" points="1844.5,-179.5 1844.5,-198.5 1921.5,-198.5 1921.5,-179.5 1844.5,-179.5"/>
-<text text-anchor="middle" x="1883" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">initializer_list</text>
+<polygon fill="white" stroke="#bfbfbf" points="1556.5,-179.5 1556.5,-198.5 1633.5,-198.5 1633.5,-179.5 1556.5,-179.5"/>
+<text text-anchor="middle" x="1595" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">initializer_list</text>
 </g>
 <!-- Node9&#45;&gt;Node24 -->
 <g id="edge28" class="edge"><title>Node9&#45;&gt;Node24</title>
-<path fill="none" stroke="midnightblue" d="M1927.25,-235.083C1919.53,-227.22 1908.1,-215.569 1898.78,-206.081"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1901.09,-203.436 1891.59,-198.751 1896.1,-208.34 1901.09,-203.436"/>
+<path fill="none" stroke="midnightblue" d="M1652.91,-235.324C1642.51,-227.185 1626.74,-214.839 1614.28,-205.087"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1616.32,-202.241 1606.29,-198.834 1612.01,-207.753 1616.32,-202.241"/>
 </g>
 <!-- Node25 -->
 <g id="node25" class="node"><title>Node25</title>
-<polygon fill="white" stroke="#bfbfbf" points="2276.5,-179.5 2276.5,-198.5 2333.5,-198.5 2333.5,-179.5 2276.5,-179.5"/>
-<text text-anchor="middle" x="2305" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
+<polygon fill="white" stroke="#bfbfbf" points="2032.5,-179.5 2032.5,-198.5 2089.5,-198.5 2089.5,-179.5 2032.5,-179.5"/>
+<text text-anchor="middle" x="2061" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
 </g>
 <!-- Node9&#45;&gt;Node25 -->
 <g id="edge29" class="edge"><title>Node9&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1994.47,-235.444C2070.51,-224.316 2201.25,-205.182 2266.14,-195.687"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2266.95,-199.105 2276.34,-194.194 2265.94,-192.179 2266.95,-199.105"/>
+<path fill="none" stroke="midnightblue" d="M1726.91,-235.444C1809.88,-224.157 1953.41,-204.634 2022.14,-195.286"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2022.67,-198.746 2032.11,-193.93 2021.73,-191.809 2022.67,-198.746"/>
 </g>
 <!-- Node9&#45;&gt;Node26 -->
 <g id="edge31" class="edge"><title>Node9&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1869.62,-240.607C1833.14,-238.804 1787.08,-236.631 1746,-235 1222.57,-214.216 589.08,-196.629 398.723,-191.507"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="398.76,-188.006 388.669,-191.237 398.572,-195.004 398.76,-188.006"/>
+<path fill="none" stroke="midnightblue" d="M1597.6,-241.078C1380.84,-231.538 696.301,-201.412 493.899,-192.504"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="493.928,-189.002 483.783,-192.059 493.62,-195.995 493.928,-189.002"/>
 </g>
 <!-- Node9&#45;&gt;Node27 -->
 <g id="edge34" class="edge"><title>Node9&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1869.92,-239.396C1711.43,-228.353 1314.01,-200.661 1195.12,-192.377"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1195.03,-188.863 1184.81,-191.659 1194.55,-195.846 1195.03,-188.863"/>
+<path fill="none" stroke="midnightblue" d="M1597.7,-239.649C1431.01,-228.713 998.956,-200.364 874.815,-192.219"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="874.967,-188.721 864.759,-191.559 874.508,-195.706 874.967,-188.721"/>
 </g>
 <!-- Node11&#45;&gt;Node12 -->
 <g id="edge12" class="edge"><title>Node11&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2128.96,-179.444C2183.54,-169.905 2271.79,-154.483 2330.1,-144.293"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2331.02,-147.686 2340.27,-142.516 2329.81,-140.79 2331.02,-147.686"/>
+<path fill="none" stroke="midnightblue" d="M1432.7,-181.7C1536.12,-171.472 1739.69,-151.338 1846.26,-140.798"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1846.66,-144.276 1856.27,-139.809 1845.97,-137.31 1846.66,-144.276"/>
 </g>
 <!-- Node11&#45;&gt;Node18 -->
 <g id="edge23" class="edge"><title>Node11&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2143.54,-184.906C2281.16,-177.156 2616.35,-152.601 2889,-87 2892.47,-86.1657 2896.05,-85.1853 2899.61,-84.1346"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2900.96,-87.3802 2909.46,-81.0497 2898.87,-80.7006 2900.96,-87.3802"/>
+<path fill="none" stroke="midnightblue" d="M1359.23,-179.319C1337.4,-159.921 1284.39,-112.831 1256.63,-88.1625"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1258.68,-85.3074 1248.88,-81.282 1254.04,-90.5404 1258.68,-85.3074"/>
 </g>
 <!-- Node11&#45;&gt;Node19 -->
 <g id="edge24" class="edge"><title>Node11&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2016.25,-182.737C1770.57,-162.454 889.996,-89.7545 712.362,-75.0892"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.621,-71.5988 702.367,-74.2641 712.045,-78.5751 712.621,-71.5988"/>
+<path fill="none" stroke="midnightblue" d="M1348.98,-179.492C1314.53,-165.251 1241.53,-136.795 1177,-123 990.235,-83.0705 759.759,-74.7013 677.218,-72.9564"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.078,-69.4531 667.012,-72.7592 676.943,-76.4518 677.078,-69.4531"/>
 </g>
 <!-- Node21 -->
 <g id="node21" class="node"><title>Node21</title>
-<polygon fill="white" stroke="#bfbfbf" points="2056.5,-123.5 2056.5,-142.5 2103.5,-142.5 2103.5,-123.5 2056.5,-123.5"/>
-<text text-anchor="middle" x="2080" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstdlib</text>
+<polygon fill="white" stroke="#bfbfbf" points="1381.5,-123.5 1381.5,-142.5 1428.5,-142.5 1428.5,-123.5 1381.5,-123.5"/>
+<text text-anchor="middle" x="1405" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstdlib</text>
 </g>
 <!-- Node11&#45;&gt;Node21 -->
 <g id="edge22" class="edge"><title>Node11&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M2080,-179.083C2080,-172.006 2080,-161.861 2080,-152.986"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2083.5,-152.751 2080,-142.751 2076.5,-152.751 2083.5,-152.751"/>
+<path fill="none" stroke="midnightblue" d="M1374.94,-179.083C1379.98,-171.534 1387.34,-160.495 1393.51,-151.23"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1396.53,-153.013 1399.17,-142.751 1390.71,-149.13 1396.53,-153.013"/>
 </g>
 <!-- Node12&#45;&gt;Node10 -->
 <g id="edge13" class="edge"><title>Node12&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M2336.85,-123.475C2268.13,-112.243 2147.89,-92.5874 2078.5,-81.2458"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2078.67,-77.7263 2068.23,-79.5671 2077.54,-84.6346 2078.67,-77.7263"/>
+<path fill="none" stroke="midnightblue" d="M1968.44,-123.475C2039.39,-112.158 2163.93,-92.2918 2234.77,-80.9918"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2235.49,-84.4204 2244.81,-79.3888 2234.39,-77.5078 2235.49,-84.4204"/>
 </g>
 <!-- Node12&#45;&gt;Node13 -->
 <g id="edge14" class="edge"><title>Node12&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2447.61,-123.852C2524.5,-113.162 2659.46,-94.4012 2743.22,-82.757"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2743.75,-86.2169 2753.17,-81.3732 2742.79,-79.2836 2743.75,-86.2169"/>
+<path fill="none" stroke="midnightblue" d="M1897.09,-123.475C1879.29,-115.002 1851.42,-101.737 1828.58,-90.8628"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1829.99,-87.6607 1819.46,-86.523 1826.99,-93.9812 1829.99,-87.6607"/>
 </g>
 <!-- Node12&#45;&gt;Node17 -->
 <g id="edge18" class="edge"><title>Node12&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2330.43,-128.988C2122.52,-118.296 1423.84,-82.3657 1264.53,-74.1727"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.58,-70.6709 1254.41,-73.6526 1264.22,-77.6616 1264.58,-70.6709"/>
+<path fill="none" stroke="midnightblue" d="M1973.54,-124.45C1978.42,-123.92 1983.29,-123.428 1988,-123 2309.39,-93.7605 2700.12,-77.8824 2813.65,-73.6585"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2813.89,-77.1519 2823.76,-73.2861 2813.63,-70.1567 2813.89,-77.1519"/>
 </g>
 <!-- Node12&#45;&gt;Node18 -->
 <g id="edge19" class="edge"><title>Node12&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2447.72,-127.076C2575.22,-116.335 2867.69,-91.4097 2889,-87 2892.88,-86.1978 2896.89,-85.1681 2900.84,-84.0281"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2901.93,-87.3549 2910.43,-81.0334 2899.84,-80.673 2901.93,-87.3549"/>
+<path fill="none" stroke="midnightblue" d="M1856.49,-126.85C1723.54,-115.148 1401.16,-86.7733 1283.19,-76.3898"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1283.35,-72.8901 1273.08,-75.4997 1282.74,-79.8631 1283.35,-72.8901"/>
 </g>
 <!-- Node12&#45;&gt;Node19 -->
 <g id="edge20" class="edge"><title>Node12&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2330.21,-129.952C2056.91,-120.431 915.335,-80.6633 712.038,-73.5813"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.153,-70.0832 702.037,-73.2329 711.909,-77.079 712.153,-70.0832"/>
+<path fill="none" stroke="midnightblue" d="M1856.34,-129.25C1633.59,-118.805 844.322,-81.7988 677.224,-73.964"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.283,-70.463 667.13,-73.4907 676.955,-77.4553 677.283,-70.463"/>
 </g>
 <!-- Node20 -->
 <g id="node20" class="node"><title>Node20</title>
-<polygon fill="white" stroke="#bfbfbf" points="2464,-62 2464,-81 2514,-81 2514,-62 2464,-62"/>
-<text text-anchor="middle" x="2489" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">atomic</text>
+<polygon fill="white" stroke="#bfbfbf" points="2033,-62 2033,-81 2083,-81 2083,-62 2033,-62"/>
+<text text-anchor="middle" x="2058" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">atomic</text>
 </g>
 <!-- Node12&#45;&gt;Node20 -->
 <g id="edge21" class="edge"><title>Node12&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M2403.33,-123.475C2419.66,-113.755 2446.6,-97.7266 2465.91,-86.2372"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2467.89,-89.1303 2474.7,-81.0091 2464.32,-83.1146 2467.89,-89.1303"/>
+<path fill="none" stroke="midnightblue" d="M1935.49,-123.475C1959.81,-113.357 2000.55,-96.4046 2028.32,-84.8507"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2029.66,-88.0822 2037.55,-81.0091 2026.97,-81.6193 2029.66,-88.0822"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node"><title>Node14</title>
-<polygon fill="white" stroke="#bfbfbf" points="2681,-0.5 2681,-19.5 2771,-19.5 2771,-0.5 2681,-0.5"/>
-<text text-anchor="middle" x="2726" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">dlpack/dlpack.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1654,-0.5 1654,-19.5 1744,-19.5 1744,-0.5 1654,-0.5"/>
+<text text-anchor="middle" x="1699" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">dlpack/dlpack.h</text>
 </g>
 <!-- Node13&#45;&gt;Node14 -->
 <g id="edge15" class="edge"><title>Node13&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M2795.43,-56.3993C2781.12,-47.0402 2762.39,-34.7924 2747.99,-25.3771"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2749.53,-22.2009 2739.24,-19.6578 2745.7,-28.0597 2749.53,-22.2009"/>
+<path fill="none" stroke="midnightblue" d="M1768.43,-56.3993C1754.12,-47.0402 1735.39,-34.7924 1720.99,-25.3771"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1722.53,-22.2009 1712.24,-19.6578 1718.7,-28.0597 1722.53,-22.2009"/>
 </g>
 <!-- Node15 -->
 <g id="node15" class="node"><title>Node15</title>
-<polygon fill="white" stroke="#bfbfbf" points="2789.5,-0.5 2789.5,-19.5 2844.5,-19.5 2844.5,-0.5 2789.5,-0.5"/>
-<text text-anchor="middle" x="2817" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stddef.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1762.5,-0.5 1762.5,-19.5 1817.5,-19.5 1817.5,-0.5 1762.5,-0.5"/>
+<text text-anchor="middle" x="1790" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stddef.h</text>
 </g>
 <!-- Node13&#45;&gt;Node15 -->
 <g id="edge16" class="edge"><title>Node13&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M2817,-56.3993C2817,-48.4664 2817,-38.458 2817,-29.8583"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2820.5,-29.6577 2817,-19.6578 2813.5,-29.6578 2820.5,-29.6577"/>
+<path fill="none" stroke="midnightblue" d="M1790,-56.3993C1790,-48.4664 1790,-38.458 1790,-29.8583"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1793.5,-29.6577 1790,-19.6578 1786.5,-29.6578 1793.5,-29.6577"/>
 </g>
 <!-- Node16 -->
 <g id="node16" class="node"><title>Node16</title>
-<polygon fill="white" stroke="#bfbfbf" points="2862.5,-0.5 2862.5,-19.5 2915.5,-19.5 2915.5,-0.5 2862.5,-0.5"/>
-<text text-anchor="middle" x="2889" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1835.5,-0.5 1835.5,-19.5 1888.5,-19.5 1888.5,-0.5 1835.5,-0.5"/>
+<text text-anchor="middle" x="1862" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
 </g>
 <!-- Node13&#45;&gt;Node16 -->
 <g id="edge17" class="edge"><title>Node13&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M2834.06,-56.3993C2845.06,-47.3076 2859.37,-35.4899 2870.62,-26.1909"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2873.04,-28.726 2878.52,-19.6578 2868.59,-23.33 2873.04,-28.726"/>
+<path fill="none" stroke="midnightblue" d="M1807.06,-56.3993C1818.06,-47.3076 1832.37,-35.4899 1843.62,-26.1909"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1846.04,-28.726 1851.52,-19.6578 1841.59,-23.33 1846.04,-28.726"/>
 </g>
 <!-- Node28&#45;&gt;Node9 -->
 <g id="edge40" class="edge"><title>Node28&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M2185.16,-294.448C2129.35,-283.596 2044.83,-267.162 1990.02,-256.503"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1990.63,-253.056 1980.14,-254.583 1989.29,-259.927 1990.63,-253.056"/>
+<path fill="none" stroke="midnightblue" d="M1971.12,-296.203C1904.65,-285.338 1795.03,-267.418 1726.3,-256.184"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1726.49,-252.668 1716.06,-254.509 1725.36,-259.577 1726.49,-252.668"/>
 </g>
 <!-- Node28&#45;&gt;Node10 -->
 <g id="edge38" class="edge"><title>Node28&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M2267.79,-291.41C2306.55,-268.387 2372.23,-221.051 2342,-179 2281.68,-95.0947 2151.99,-76.3814 2078.56,-72.7676"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2078.28,-69.2534 2068.15,-72.338 2077.99,-76.2474 2078.28,-69.2534"/>
+<path fill="none" stroke="midnightblue" d="M2084.55,-299.231C2165.96,-289.713 2308.39,-271.028 2326,-255 2369.7,-215.219 2365.53,-177.211 2342,-123 2335.54,-108.124 2322.31,-95.6319 2310.56,-86.7935"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2312.57,-83.9295 2302.38,-81.0217 2308.53,-89.6482 2312.57,-83.9295"/>
 </g>
 <!-- Node28&#45;&gt;Node12 -->
 <g id="edge62" class="edge"><title>Node28&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2278.36,-291.48C2297.52,-282.897 2320.59,-270.563 2338,-255 2360.42,-234.955 2364.38,-226.741 2376,-199 2382.19,-184.223 2385.49,-166.295 2387.22,-153.013"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2390.73,-153.059 2388.36,-142.733 2383.78,-152.286 2390.73,-153.059"/>
+<path fill="none" stroke="midnightblue" d="M2049.71,-291.294C2075,-273.302 2115.43,-239.688 2132,-199 2135.35,-190.768 2137.61,-185.894 2132,-179 2126.94,-172.781 2036.44,-155.577 1973.92,-144.333"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1974.22,-140.831 1963.76,-142.514 1972.99,-147.722 1974.22,-140.831"/>
 </g>
 <!-- Node28&#45;&gt;Node13 -->
 <g id="edge39" class="edge"><title>Node28&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2298.7,-302.756C2393.12,-297.441 2577.95,-283.654 2636,-255 2675.28,-235.61 2760.78,-138.607 2798.49,-94.4524"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2801.35,-96.4937 2805.17,-86.6086 2796.02,-91.9586 2801.35,-96.4937"/>
+<path fill="none" stroke="midnightblue" d="M2040.02,-291.417C2064.01,-262.522 2114.19,-197.682 2098,-179 2024.18,-93.8419 1944.99,-198.671 1847,-143 1827.55,-131.951 1812.13,-111.444 1802.26,-95.3845"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1805.16,-93.4188 1797.1,-86.548 1799.12,-96.9485 1805.16,-93.4188"/>
 </g>
 <!-- Node28&#45;&gt;Node17 -->
 <g id="edge65" class="edge"><title>Node28&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2185.38,-303.344C2109.98,-299.272 1973.1,-287.669 1861,-255 1840.76,-249.103 1837.52,-242.961 1818,-235 1773.49,-216.842 1760.85,-216.313 1716,-199 1634.61,-167.579 1618.82,-147.224 1535,-123 1438.5,-95.11 1319.97,-80.9225 1264.07,-75.3723"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.36,-71.8837 1254.06,-74.4055 1263.68,-78.8512 1264.36,-71.8837"/>
+<path fill="none" stroke="midnightblue" d="M2084.69,-301.216C2149.63,-295.25 2258.73,-281.98 2349,-255 2427.52,-231.531 2442.22,-212.531 2517,-179 2572.92,-153.926 2585.05,-142.917 2643,-123 2702.08,-102.695 2773.43,-86.8757 2813.87,-78.6822"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2814.58,-82.1093 2823.71,-76.7179 2813.21,-75.245 2814.58,-82.1093"/>
 </g>
 <!-- Node28&#45;&gt;Node18 -->
 <g id="edge66" class="edge"><title>Node28&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2298.68,-303.808C2438.88,-298.45 2796.63,-277.247 2881,-199 2912.52,-169.766 2925.47,-118.608 2930.34,-91.1607"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2933.8,-91.7134 2931.93,-81.2852 2926.89,-90.6046 2933.8,-91.7134"/>
+<path fill="none" stroke="midnightblue" d="M1971.18,-301.294C1887.18,-294.55 1725.09,-279.526 1589,-255 1552.51,-248.423 1544.3,-242.554 1508,-235 1414.43,-215.532 1371.63,-257.432 1296,-199 1261.32,-172.206 1247.14,-119.605 1241.84,-91.411"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1245.25,-90.554 1240.13,-81.2786 1238.35,-91.7226 1245.25,-90.554"/>
 </g>
 <!-- Node28&#45;&gt;Node19 -->
 <g id="edge67" class="edge"><title>Node28&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2185.43,-301.876C2103.06,-295.912 1945.58,-281.912 1814,-255 1783.14,-248.687 1776.83,-241.466 1746,-235 1622.77,-209.155 1585.63,-235.08 1465,-199 1445.58,-193.19 1443.5,-184.551 1424,-179 1271.05,-135.462 1225.46,-165.268 1068,-143 935.087,-124.204 778.131,-92.7097 712.408,-79.0977"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.803,-75.605 702.3,-76.9958 711.378,-82.4584 712.803,-75.605"/>
+<path fill="none" stroke="midnightblue" d="M1971.13,-302.445C1875.15,-296.739 1675.14,-282.475 1508,-255 1361.2,-230.868 1327.42,-210.39 1182,-179 990.762,-137.721 759.829,-93.841 677.236,-78.3341"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.72,-74.8639 667.246,-76.4611 676.43,-81.744 677.72,-74.8639"/>
 </g>
 <!-- Node28&#45;&gt;Node25 -->
 <g id="edge64" class="edge"><title>Node28&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M2249.73,-291.337C2261.23,-270.243 2282.85,-230.6 2295.37,-207.648"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2298.56,-209.124 2300.27,-198.669 2292.41,-205.772 2298.56,-209.124"/>
+<path fill="none" stroke="midnightblue" d="M2028.63,-291.419C2029.58,-276.967 2031.99,-253.974 2038,-235 2041.01,-225.486 2045.89,-215.542 2050.38,-207.429"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2053.51,-208.997 2055.51,-198.592 2047.46,-205.482 2053.51,-208.997"/>
 </g>
 <!-- Node28&#45;&gt;Node27 -->
 <g id="edge68" class="edge"><title>Node28&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2185.31,-302.622C2075.89,-296.683 1828.09,-281.373 1621,-255 1569.54,-248.446 1557.29,-242.801 1506,-235 1392.25,-217.699 1256.77,-201.23 1194.88,-193.934"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1195.23,-190.452 1184.89,-192.762 1194.41,-197.404 1195.23,-190.452"/>
+<path fill="none" stroke="midnightblue" d="M1971.14,-300.901C1871.52,-292.702 1659.03,-274.574 1480,-255 1409.64,-247.307 1392.36,-242.742 1322,-235 1154.39,-216.557 953.387,-199.328 874.81,-192.781"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="874.807,-189.269 864.552,-191.929 874.228,-196.245 874.807,-189.269"/>
 </g>
 <!-- Node29 -->
 <g id="node29" class="node"><title>Node29</title>
 <g id="a_node29"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
-<polygon fill="white" stroke="black" points="2736,-179.5 2736,-198.5 2872,-198.5 2872,-179.5 2736,-179.5"/>
-<text text-anchor="middle" x="2804" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
+<polygon fill="white" stroke="black" points="2526,-179.5 2526,-198.5 2662,-198.5 2662,-179.5 2526,-179.5"/>
+<text text-anchor="middle" x="2594" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node29 -->
 <g id="edge41" class="edge"><title>Node28&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M2298.59,-304.786C2381.65,-302.414 2540.74,-292.806 2670,-255 2711.33,-242.911 2755.6,-219.041 2781.49,-203.835"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2783.36,-206.793 2790.16,-198.663 2779.78,-200.781 2783.36,-206.793"/>
+<path fill="none" stroke="midnightblue" d="M2084.57,-300.381C2180.48,-291.387 2370.93,-272.08 2436,-255 2484.41,-242.292 2537.65,-218.097 2568.32,-203.079"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2570.04,-206.13 2577.44,-198.551 2566.93,-199.858 2570.04,-206.13"/>
 </g>
 <!-- Node30 -->
 <g id="node30" class="node"><title>Node30</title>
 <g id="a_node30"><a xlink:href="runtime_2module_8h.html" target="_top" xlink:title="Runtime container of the functions generated by TVM, This is used to support dynamically link...">
-<polygon fill="white" stroke="red" points="2134,-235.5 2134,-254.5 2258,-254.5 2258,-235.5 2134,-235.5"/>
-<text text-anchor="middle" x="2196" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
+<polygon fill="white" stroke="red" points="1862,-235.5 1862,-254.5 1986,-254.5 1986,-235.5 1862,-235.5"/>
+<text text-anchor="middle" x="1924" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node30 -->
 <g id="edge46" class="edge"><title>Node28&#45;&gt;Node30</title>
-<path fill="none" stroke="midnightblue" d="M2225.26,-291.399C2217.62,-282.932 2209.14,-272.099 2203.07,-263.139"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2206.04,-261.278 2197.76,-254.658 2200.1,-264.992 2206.04,-261.278"/>
+<path fill="none" stroke="midnightblue" d="M1997.51,-291.399C1979.79,-281.951 1958.13,-269.559 1942.82,-260.109"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1944.53,-257.046 1934.2,-254.658 1940.78,-262.962 1944.53,-257.046"/>
 </g>
 <!-- Node31 -->
 <g id="node31" class="node"><title>Node31</title>
 <g id="a_node31"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
-<polygon fill="white" stroke="red" points="2504.5,-235.5 2504.5,-254.5 2627.5,-254.5 2627.5,-235.5 2504.5,-235.5"/>
-<text text-anchor="middle" x="2566" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
+<polygon fill="white" stroke="red" points="2194.5,-235.5 2194.5,-254.5 2317.5,-254.5 2317.5,-235.5 2194.5,-235.5"/>
+<text text-anchor="middle" x="2256" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node31 -->
 <g id="edge55" class="edge"><title>Node28&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M2298.81,-295.068C2358.08,-284.182 2450.46,-267.218 2509.59,-256.36"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2510.3,-259.788 2519.5,-254.539 2509.03,-252.903 2510.3,-259.788"/>
+<path fill="none" stroke="midnightblue" d="M2081.74,-291.475C2121.94,-280.986 2176.15,-266.837 2213.38,-257.122"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2214.61,-260.418 2223.4,-254.506 2212.84,-253.645 2214.61,-260.418"/>
 </g>
 <!-- Node28&#45;&gt;Node32 -->
 <g id="edge63" class="edge"><title>Node28&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M2185.44,-302.024C2067.3,-294.62 1785.75,-276.225 1550,-255 1536.26,-253.763 1521.29,-252.221 1507.83,-250.764"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1508.21,-247.284 1497.89,-249.673 1507.44,-254.243 1508.21,-247.284"/>
+<path fill="none" stroke="midnightblue" d="M2084.74,-299.929C2205.62,-288.061 2486.14,-260.518 2592.29,-250.095"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2592.69,-253.573 2602.3,-249.112 2592.01,-246.606 2592.69,-253.573"/>
 </g>
 <!-- Node29&#45;&gt;Node10 -->
 <g id="edge42" class="edge"><title>Node29&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M2791.7,-179.35C2770.21,-164.761 2723.92,-135.623 2680,-123 2567.43,-90.6434 2213.84,-77.6995 2078.46,-73.8466"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2078.43,-70.3444 2068.33,-73.5638 2078.23,-77.3416 2078.43,-70.3444"/>
+<path fill="none" stroke="midnightblue" d="M2574.2,-179.396C2544.43,-166.562 2486.25,-141.89 2436,-123 2398.21,-108.796 2354.39,-94.0555 2324.29,-84.1935"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2325.23,-80.8187 2314.64,-81.0439 2323.06,-87.4734 2325.23,-80.8187"/>
 </g>
 <!-- Node29&#45;&gt;Node13 -->
 <g id="edge43" class="edge"><title>Node29&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2804.98,-179.319C2806.93,-161.967 2811.38,-122.457 2814.28,-96.6579"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2817.78,-96.874 2815.42,-86.5453 2810.82,-96.0911 2817.78,-96.874"/>
+<path fill="none" stroke="midnightblue" d="M2564.09,-179.397C2514.31,-165.406 2411.09,-137.798 2322,-123 2159.69,-96.0389 1966.95,-82.1973 1863.84,-76.2368"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1864.02,-72.7418 1853.84,-75.6674 1863.62,-79.7304 1864.02,-72.7418"/>
 </g>
 <!-- Node29&#45;&gt;Node17 -->
 <g id="edge44" class="edge"><title>Node29&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2771.75,-179.492C2715.17,-164.983 2594.16,-135.783 2490,-123 2242.29,-92.5982 1435.55,-76.2521 1264.18,-73.076"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.11,-69.5742 1254.04,-72.8898 1263.98,-76.573 1264.11,-69.5742"/>
+<path fill="none" stroke="midnightblue" d="M2602.77,-179.127C2616.96,-165.253 2646.34,-138.421 2676,-123 2720.93,-99.6364 2778.3,-85.448 2813.58,-78.2895"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2814.64,-81.6484 2823.78,-76.2912 2813.3,-74.779 2814.64,-81.6484"/>
 </g>
 <!-- Node29&#45;&gt;Node18 -->
 <g id="edge45" class="edge"><title>Node29&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2818.63,-179.457C2832.52,-171.029 2853.63,-157.356 2870,-143 2888.98,-126.353 2907.9,-104.26 2919.97,-89.2742"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2922.77,-91.3778 2926.24,-81.3673 2917.29,-87.029 2922.77,-91.3778"/>
+<path fill="none" stroke="midnightblue" d="M2525.7,-179.891C2412.72,-166.668 2179.72,-140.213 1982,-123 1717.2,-99.9476 1398.54,-81.3526 1283.29,-74.9223"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1283.28,-71.4163 1273.1,-74.3559 1282.89,-78.4056 1283.28,-71.4163"/>
 </g>
 <!-- Node30&#45;&gt;Node11 -->
 <g id="edge48" class="edge"><title>Node30&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M2177.62,-235.444C2158.78,-226.675 2129.27,-212.935 2107.62,-202.858"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2108.84,-199.564 2098.29,-198.516 2105.88,-205.91 2108.84,-199.564"/>
+<path fill="none" stroke="midnightblue" d="M1861.95,-237.963C1758.95,-227.941 1553.12,-207.915 1442.83,-197.183"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1443.07,-193.691 1432.78,-196.206 1442.4,-200.658 1443.07,-193.691"/>
 </g>
 <!-- Node30&#45;&gt;Node12 -->
 <g id="edge49" class="edge"><title>Node30&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2198.67,-235.431C2203.45,-221.488 2214.82,-193.948 2234,-179 2258.71,-159.736 2291.41,-148.716 2320.4,-142.412"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2321.37,-145.787 2330.48,-140.374 2319.98,-138.926 2321.37,-145.787"/>
+<path fill="none" stroke="midnightblue" d="M1923.29,-235.368C1921.84,-217.617 1918.49,-176.666 1916.52,-152.597"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1920.01,-152.273 1915.7,-142.591 1913.03,-152.844 1920.01,-152.273"/>
 </g>
 <!-- Node30&#45;&gt;Node13 -->
 <g id="edge47" class="edge"><title>Node30&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2202.79,-235.203C2214.32,-220.932 2239.21,-192.932 2267,-179 2343.44,-140.673 2372.04,-159.195 2456,-143 2555.56,-123.797 2670.49,-101.294 2743.43,-86.9713"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2744.3,-90.3676 2753.44,-85.0059 2742.95,-83.4989 2744.3,-90.3676"/>
+<path fill="none" stroke="midnightblue" d="M1910.84,-235.3C1887.97,-219.532 1840.77,-184.039 1814,-143 1804.82,-128.935 1798.78,-110.993 1795.05,-96.7294"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1798.38,-95.5731 1792.64,-86.6641 1791.57,-97.2045 1798.38,-95.5731"/>
 </g>
 <!-- Node30&#45;&gt;Node17 -->
 <g id="edge51" class="edge"><title>Node30&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2193.04,-235.207C2184.67,-211.898 2158.36,-148.561 2112,-123 2036.66,-81.4582 1414.67,-73.9319 1264.53,-72.7158"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.18,-69.2131 1254.16,-72.6359 1264.13,-76.2129 1264.18,-69.2131"/>
+<path fill="none" stroke="midnightblue" d="M1933.84,-235.291C1950.74,-220.884 1986.95,-192.359 2023,-179 2172.79,-123.502 2680.57,-84.2421 2813.78,-74.7292"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2814.04,-78.2199 2823.77,-74.0221 2813.54,-71.2374 2814.04,-78.2199"/>
 </g>
 <!-- Node30&#45;&gt;Node25 -->
 <g id="edge50" class="edge"><title>Node30&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M2213.51,-235.324C2231.07,-226.625 2258.33,-213.12 2278.53,-203.113"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2280.12,-206.23 2287.53,-198.655 2277.02,-199.958 2280.12,-206.23"/>
+<path fill="none" stroke="midnightblue" d="M1945.71,-235.444C1968.35,-226.517 2004.07,-212.439 2029.75,-202.317"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2031.37,-205.44 2039.39,-198.516 2028.81,-198.927 2031.37,-205.44"/>
 </g>
 <!-- Node30&#45;&gt;Node26 -->
 <g id="edge52" class="edge"><title>Node30&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2133.93,-240.644C2098.02,-238.787 2051.97,-236.549 2011,-235 1379,-211.11 611.902,-195.254 399.104,-191.091"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="398.871,-187.586 388.804,-190.891 398.734,-194.585 398.871,-187.586"/>
+<path fill="none" stroke="midnightblue" d="M1861.92,-240.762C1826.01,-238.943 1779.96,-236.704 1739,-235 1257.4,-214.964 675.34,-197.101 493.832,-191.679"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="493.818,-188.177 483.718,-191.377 493.609,-195.174 493.818,-188.177"/>
 </g>
 <!-- Node30&#45;&gt;Node27 -->
 <g id="edge53" class="edge"><title>Node30&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2133.79,-240.933C1959.59,-232.331 1469.16,-208.016 1308,-199 1269.23,-196.831 1224.74,-194.069 1194.95,-192.18"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1194.88,-188.668 1184.67,-191.526 1194.43,-195.654 1194.88,-188.668"/>
+<path fill="none" stroke="midnightblue" d="M1861.88,-240.903C1660.42,-230.857 1029.25,-199.386 875.177,-191.704"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="875.083,-188.195 864.921,-191.193 874.734,-195.186 875.083,-188.195"/>
 </g>
 <!-- Node30&#45;&gt;Node28 -->
 <g id="edge54" class="edge"><title>Node30&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M2207.62,-254.658C2214.98,-262.106 2224.09,-273.187 2231.25,-283.104"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2228.4,-285.133 2236.94,-291.399 2234.17,-281.173 2228.4,-285.133"/>
+<path fill="none" stroke="midnightblue" d="M1944.06,-254.658C1960.16,-262.859 1982.67,-275.462 2000.41,-286.069"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1998.83,-289.202 2009.19,-291.399 2002.46,-283.218 1998.83,-289.202"/>
 </g>
 <!-- Node31&#45;&gt;Node12 -->
 <g id="edge58" class="edge"><title>Node31&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2557.32,-235.076C2543.86,-221.609 2516.72,-195.874 2490,-179 2468.8,-165.609 2442.94,-154.168 2422.69,-146.173"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2423.84,-142.864 2413.25,-142.531 2421.32,-149.395 2423.84,-142.864"/>
+<path fill="none" stroke="midnightblue" d="M2257.56,-235.417C2259.56,-221.453 2261.15,-193.884 2246,-179 2227.61,-160.929 2075.04,-146.249 1983.59,-138.97"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1983.82,-135.477 1973.57,-138.183 1983.27,-142.455 1983.82,-135.477"/>
 </g>
 <!-- Node31&#45;&gt;Node13 -->
 <g id="edge56" class="edge"><title>Node31&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2572.9,-235.187C2590.35,-213.41 2638.53,-156.412 2690,-123 2711.25,-109.208 2736.86,-98.137 2759.5,-89.9162"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2760.73,-93.1931 2769,-86.5679 2758.4,-86.5911 2760.73,-93.1931"/>
+<path fill="none" stroke="midnightblue" d="M2261.04,-235.358C2268.22,-221.802 2279.13,-195.397 2266,-179 2216.49,-117.186 1985.21,-88.8458 1864.22,-78.0634"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1864.19,-74.5481 1853.93,-77.165 1863.58,-81.5215 1864.19,-74.5481"/>
 </g>
 <!-- Node31&#45;&gt;Node19 -->
 <g id="edge60" class="edge"><title>Node31&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2561.81,-235.496C2549.54,-211.761 2511.07,-145.092 2456,-123 2453.36,-121.942 948.696,-79.9617 712.136,-73.3676"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.231,-69.869 702.137,-73.0889 712.036,-76.8663 712.231,-69.869"/>
+<path fill="none" stroke="midnightblue" d="M2239.95,-235.454C2212,-221.022 2152.2,-192.114 2098,-179 1955.3,-144.47 875.52,-84.8887 677.233,-74.1748"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.369,-70.6771 667.195,-73.6335 676.992,-77.6669 677.369,-70.6771"/>
 </g>
 <!-- Node31&#45;&gt;Node20 -->
 <g id="edge59" class="edge"><title>Node31&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M2567.65,-235.325C2569.71,-222.61 2572.25,-198.326 2566,-179 2554.14,-142.342 2524.42,-107.703 2505.56,-88.3721"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2507.78,-85.6446 2498.23,-81.0632 2502.84,-90.6021 2507.78,-85.6446"/>
+<path fill="none" stroke="midnightblue" d="M2278.46,-235.382C2293.77,-228.184 2312.86,-216.288 2322,-199 2337.78,-169.136 2343.52,-149.032 2322,-123 2293.41,-88.4224 2158.81,-77.2973 2093.6,-73.9016"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2093.54,-70.3947 2083.38,-73.4036 2093.2,-77.3864 2093.54,-70.3947"/>
 </g>
 <!-- Node31&#45;&gt;Node27 -->
 <g id="edge61" class="edge"><title>Node31&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2504.18,-241.997C2284.91,-234.861 1544.98,-210.491 1308,-199 1269.22,-197.12 1224.72,-194.303 1194.94,-192.323"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1194.88,-188.811 1184.67,-191.635 1194.41,-195.796 1194.88,-188.811"/>
+<path fill="none" stroke="midnightblue" d="M2194.29,-241.645C1950.6,-232.345 1059.53,-198.34 874.705,-191.286"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="874.637,-187.781 864.511,-190.897 874.37,-194.776 874.637,-187.781"/>
 </g>
 <!-- Node31&#45;&gt;Node29 -->
 <g id="edge57" class="edge"><title>Node31&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M2603.71,-235.444C2645.14,-226.043 2711.76,-210.929 2756.67,-200.739"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2757.49,-204.142 2766.46,-198.516 2755.94,-197.316 2757.49,-204.142"/>
+<path fill="none" stroke="midnightblue" d="M2309.56,-235.444C2369.63,-225.846 2466.99,-210.292 2530.76,-200.104"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2531.37,-203.55 2540.69,-198.516 2530.27,-196.638 2531.37,-203.55"/>
 </g>
 <!-- Node33&#45;&gt;Node11 -->
 <g id="edge91" class="edge"><title>Node33&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M2271.32,-481.345C2244.24,-440.114 2128.13,-263.299 2091.28,-207.17"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2094.12,-205.128 2085.71,-198.69 2088.27,-208.97 2094.12,-205.128"/>
+<path fill="none" stroke="midnightblue" d="M2177.22,-488.019C2095.57,-484.305 1945.05,-473.85 1820,-445 1780.41,-435.867 1773.35,-424.116 1734,-414 1635.07,-388.567 1594.22,-431.169 1507,-378 1471.72,-356.494 1404.98,-249.779 1379.37,-207.395"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1382.31,-205.504 1374.16,-198.732 1376.31,-209.107 1382.31,-205.504"/>
 </g>
 <!-- Node33&#45;&gt;Node12 -->
 <g id="edge93" class="edge"><title>Node33&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2283.47,-481.071C2307.79,-446.786 2393.13,-319.473 2410,-199 2411.23,-190.197 2411.93,-187.678 2410,-179 2407.88,-169.426 2403.49,-159.476 2399.28,-151.374"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2402.3,-149.601 2394.38,-142.557 2396.18,-152.999 2402.3,-149.601"/>
+<path fill="none" stroke="midnightblue" d="M2244.6,-481.462C2272.7,-448.84 2366.93,-329.181 2326,-235 2311.46,-201.545 2299.04,-194.459 2266,-179 2152.24,-125.772 2108.19,-158.298 1983.95,-143.709"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1984.04,-140.192 1973.68,-142.417 1983.17,-147.138 1984.04,-140.192"/>
 </g>
 <!-- Node33&#45;&gt;Node13 -->
 <g id="edge89" class="edge"><title>Node33&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2336.72,-486.354C2392.71,-481.488 2478.04,-470.316 2548,-445 2649.71,-408.195 2672.39,-388.114 2758,-322 2819.19,-274.745 2851.41,-270.425 2881,-199 2896.79,-160.877 2864.45,-118.431 2840.25,-93.6766"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2842.64,-91.1174 2833.06,-86.5863 2837.72,-96.1007 2842.64,-91.1174"/>
+<path fill="none" stroke="midnightblue" d="M2177.1,-484.569C2064.84,-472.725 1834,-439.768 1834,-369 1834,-369 1834,-369 1834,-305.5 1834,-231.714 1812.74,-215.677 1800,-143 1797.3,-127.627 1794.84,-110.271 1793.03,-96.626"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1796.48,-96.0542 1791.72,-86.5876 1789.54,-96.9548 1796.48,-96.0542"/>
 </g>
 <!-- Node33&#45;&gt;Node17 -->
 <g id="edge95" class="edge"><title>Node33&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2217.35,-490.585C2114.66,-490.397 1898.43,-484.747 1721,-445 1638.51,-426.522 1620.21,-412.404 1543,-378 1493.61,-355.993 1480.95,-350.499 1435,-322 1395.68,-297.612 1296.07,-234.997 1267,-199 1241.43,-167.343 1234.5,-118.298 1232.65,-91.5272"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1236.13,-91.0398 1232.12,-81.2342 1229.14,-91.4019 1236.13,-91.0398"/>
+<path fill="none" stroke="midnightblue" d="M2296.53,-488.148C2394.07,-484.33 2583.09,-473.418 2643,-445 2757.15,-390.852 2846,-372.343 2846,-246 2846,-246 2846,-246 2846,-188 2846,-153.864 2846,-114.052 2846,-91.2092"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2849.5,-91.1934 2846,-81.1934 2842.5,-91.1934 2849.5,-91.1934"/>
 </g>
 <!-- Node33&#45;&gt;Node18 -->
 <g id="edge96" class="edge"><title>Node33&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2336.72,-488.766C2402.85,-485.795 2511.76,-476.093 2600,-445 2738.05,-396.357 2775.42,-367.546 2869,-255 2905.8,-210.747 2919.61,-198.724 2934,-143 2938.4,-125.98 2937.55,-105.87 2935.95,-91.4923"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2939.39,-90.8088 2934.6,-81.3597 2932.45,-91.7348 2939.39,-90.8088"/>
+<path fill="none" stroke="midnightblue" d="M2177.41,-487.466C2082.89,-482.819 1893,-470.928 1734,-445 1607.28,-424.337 1576.16,-414.264 1453,-378 1381.13,-356.838 1362.16,-353.106 1294,-322 1193.5,-276.133 1133.52,-294.508 1078,-199 1065.97,-178.3 1085.04,-133.397 1095,-123 1121.22,-95.6434 1163.09,-83.0917 1194.93,-77.3412"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1195.59,-80.7803 1204.89,-75.703 1194.45,-73.8731 1195.59,-80.7803"/>
 </g>
 <!-- Node33&#45;&gt;Node27 -->
 <g id="edge97" class="edge"><title>Node33&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2217.36,-490.516C2114.7,-490.224 1898.5,-484.421 1721,-445 1637.67,-426.493 1618.96,-412.762 1541,-378 1415.9,-322.221 1391.91,-293.38 1268,-235 1242.86,-223.157 1213.76,-211.017 1192.26,-202.336"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1193.54,-199.079 1182.96,-198.604 1190.94,-205.575 1193.54,-199.079"/>
+<path fill="none" stroke="midnightblue" d="M2177.49,-490.518C2014.81,-489.827 1551.86,-473.67 1208,-322 1131.07,-288.066 1119.02,-263.746 1040,-235 971.095,-209.933 950.454,-215.45 879,-199 877.555,-198.667 876.079,-198.326 874.589,-197.979"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="875.241,-194.537 864.706,-195.663 873.643,-201.353 875.241,-194.537"/>
 </g>
 <!-- Node33&#45;&gt;Node28 -->
 <g id="edge94" class="edge"><title>Node33&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M2275.31,-481.198C2270.16,-454.334 2254.51,-372.744 2246.63,-331.668"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2250.04,-330.856 2244.72,-321.695 2243.17,-332.175 2250.04,-330.856"/>
+<path fill="none" stroke="midnightblue" d="M2227.2,-481.442C2195.91,-454.12 2097.78,-368.43 2051.98,-328.441"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2054.16,-325.696 2044.32,-321.755 2049.55,-330.968 2054.16,-325.696"/>
 </g>
 <!-- Node33&#45;&gt;Node29 -->
 <g id="edge90" class="edge"><title>Node33&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M2336.94,-485.951C2385.18,-480.937 2453.79,-469.772 2509,-445 2567.15,-418.911 2569.81,-393.111 2623,-358 2700.57,-306.798 2758.18,-335.291 2805,-255 2813.16,-240.999 2811.85,-222.251 2809.13,-208.488"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2812.52,-207.621 2806.8,-198.706 2805.71,-209.245 2812.52,-207.621"/>
+<path fill="none" stroke="midnightblue" d="M2296.7,-489.785C2389.2,-488.316 2561.56,-480.701 2610,-445 2690.4,-385.74 2743.58,-319.289 2690,-235 2679.84,-219.01 2662.32,-208.603 2645.02,-201.875"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2646.07,-198.533 2635.47,-198.503 2643.73,-205.134 2646.07,-198.533"/>
 </g>
 <!-- Node33&#45;&gt;Node31 -->
 <g id="edge92" class="edge"><title>Node33&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M2336.54,-482.87C2388.34,-475.598 2458.4,-462.848 2480,-445 2537.43,-397.553 2557.46,-304.518 2563.6,-264.75"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2567.07,-265.219 2565,-254.826 2560.13,-264.236 2567.07,-265.219"/>
+<path fill="none" stroke="midnightblue" d="M2237.68,-481.316C2240.41,-446.185 2250.7,-314.119 2254.54,-264.763"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2258.04,-264.822 2255.33,-254.58 2251.07,-264.278 2258.04,-264.822"/>
 </g>
 <!-- Node33&#45;&gt;Node34 -->
 <g id="edge73" class="edge"><title>Node33&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M2225.13,-481.475C2160.76,-470.893 2050.9,-452.836 1980.69,-441.297"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1981.07,-437.812 1970.63,-439.644 1979.93,-444.72 1981.07,-437.812"/>
+<path fill="none" stroke="midnightblue" d="M2257.2,-481.475C2277.55,-472.889 2309.56,-459.383 2335.51,-448.429"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2336.92,-451.636 2344.77,-444.523 2334.2,-445.186 2336.92,-451.636"/>
 </g>
 <!-- Node33&#45;&gt;Node36 -->
 <g id="edge83" class="edge"><title>Node33&#45;&gt;Node36</title>
-<path fill="none" stroke="midnightblue" d="M2217.3,-485.939C2136.49,-479.949 1987.66,-467.172 1851.94,-445.209"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1852.21,-441.706 1841.77,-443.542 1851.07,-448.614 1852.21,-441.706"/>
+<path fill="none" stroke="midnightblue" d="M2281.27,-481.475C2333.33,-471.451 2420.23,-454.719 2480.18,-443.174"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2481.15,-446.552 2490.31,-441.224 2479.82,-439.678 2481.15,-446.552"/>
 </g>
 <!-- Node34&#45;&gt;Node8 -->
 <g id="edge74" class="edge"><title>Node34&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1859.84,-414.475C1818.41,-403.941 1762.47,-389.716 1724.25,-379.998"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1725.01,-376.579 1714.45,-377.506 1723.28,-383.363 1725.01,-376.579"/>
+<path fill="none" stroke="midnightblue" d="M2322.24,-424.363C2179.73,-413.79 1802.37,-385.794 1645.7,-374.171"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1645.94,-370.679 1635.71,-373.43 1645.42,-377.66 1645.94,-370.679"/>
 </g>
 <!-- Node34&#45;&gt;Node17 -->
 <g id="edge82" class="edge"><title>Node34&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1906.66,-414.483C1884.85,-379.033 1822.51,-285.074 1746,-235 1703.89,-207.44 1369.7,-111.48 1263.96,-81.5127"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1264.75,-78.0992 1254.18,-78.7435 1262.85,-84.8346 1264.75,-78.0992"/>
+<path fill="none" stroke="midnightblue" d="M2408.35,-414.333C2464.04,-387.574 2585.01,-325.881 2674,-255 2740.59,-201.964 2805.8,-123.48 2832.89,-89.3612"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2835.78,-91.3497 2839.21,-81.327 2830.28,-87.0204 2835.78,-91.3497"/>
 </g>
 <!-- Node34&#45;&gt;Node29 -->
 <g id="edge81" class="edge"><title>Node34&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1970.68,-425.411C2056.32,-419.955 2225.24,-406.396 2366,-378 2452.3,-360.591 2472.33,-349.383 2556,-322 2594.61,-309.362 2603.15,-302.895 2642,-291 2704.25,-271.938 2736.82,-299.868 2784,-255 2796.56,-243.058 2801.29,-223.445 2803.04,-208.882"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2806.56,-208.783 2803.9,-198.527 2799.59,-208.204 2806.56,-208.783"/>
+<path fill="none" stroke="midnightblue" d="M2390.86,-414.295C2428.58,-372.654 2538.73,-251.028 2579.02,-206.543"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2581.78,-208.707 2585.9,-198.946 2576.59,-204.008 2581.78,-208.707"/>
 </g>
 <!-- Node35 -->
 <g id="node35" class="node"><title>Node35</title>
 <g id="a_node35"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
-<polygon fill="white" stroke="black" points="1630.5,-235.5 1630.5,-254.5 1737.5,-254.5 1737.5,-235.5 1630.5,-235.5"/>
-<text text-anchor="middle" x="1684" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
+<polygon fill="white" stroke="black" points="1206.5,-235.5 1206.5,-254.5 1313.5,-254.5 1313.5,-235.5 1206.5,-235.5"/>
+<text text-anchor="middle" x="1260" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
 </a>
 </g>
 </g>
 <!-- Node34&#45;&gt;Node35 -->
 <g id="edge75" class="edge"><title>Node34&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1896.75,-414.406C1883.69,-404.307 1865.73,-390.363 1850,-378 1796.51,-335.96 1733.77,-285.845 1702.98,-261.21"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1704.84,-258.209 1694.84,-254.691 1700.46,-263.674 1704.84,-258.209"/>
+<path fill="none" stroke="midnightblue" d="M2322.44,-428.494C2155.58,-427.97 1660.94,-422.595 1507,-378 1430.38,-355.803 1420.58,-328.18 1350,-291 1329,-279.94 1304.95,-267.947 1286.99,-259.125"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1288.22,-255.83 1277.7,-254.576 1285.14,-262.117 1288.22,-255.83"/>
 </g>
 <!-- Node35&#45;&gt;Node10 -->
 <g id="edge76" class="edge"><title>Node35&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1673.33,-235.194C1659.05,-222.316 1636.93,-197.832 1650,-179 1686.86,-125.892 1877.54,-92.7394 1971.94,-79.3336"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1972.44,-82.7973 1981.86,-77.9469 1971.47,-75.8647 1972.44,-82.7973"/>
+<path fill="none" stroke="midnightblue" d="M1313.56,-238.476C1387.54,-230.667 1525.13,-215.5 1642,-199 1793.64,-177.591 1831.75,-172.651 1982,-143 2076.04,-124.441 2185.25,-98.1187 2244.43,-83.4519"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2245.33,-86.8359 2254.19,-81.0272 2243.64,-80.0426 2245.33,-86.8359"/>
 </g>
 <!-- Node35&#45;&gt;Node12 -->
 <g id="edge77" class="edge"><title>Node35&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1675.56,-235.313C1663.34,-221.696 1643.76,-195.208 1659,-179 1670.25,-167.033 2140.52,-145 2320.19,-137.001"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2320.49,-140.492 2330.32,-136.552 2320.18,-133.499 2320.49,-140.492"/>
+<path fill="none" stroke="midnightblue" d="M1206.5,-239.291C1148.15,-232.223 1067.4,-215.573 1102,-179 1127.42,-152.139 1654.58,-139.122 1846.17,-135.266"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1846.48,-138.76 1856.4,-135.062 1846.34,-131.762 1846.48,-138.76"/>
 </g>
 <!-- Node35&#45;&gt;Node18 -->
 <g id="edge78" class="edge"><title>Node35&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1691.75,-235.231C1705.43,-220.464 1735.5,-191.063 1768,-179 1911.53,-125.724 2303.6,-157.617 2456,-143 2519.88,-136.873 2535.38,-131.398 2599,-123 2727.76,-106.005 2762.28,-115.46 2889,-87 2892.67,-86.1761 2896.46,-85.1695 2900.22,-84.0745"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2901.45,-87.3584 2909.95,-81.034 2899.36,-80.6772 2901.45,-87.3584"/>
+<path fill="none" stroke="midnightblue" d="M1206.07,-236.927C1161.81,-229.885 1104.2,-217.447 1090,-199 1051.53,-149.027 1147.44,-104.945 1202.89,-84.5355"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1204.18,-87.793 1212.41,-81.1192 1201.81,-81.2049 1204.18,-87.793"/>
 </g>
 <!-- Node35&#45;&gt;Node19 -->
 <g id="edge79" class="edge"><title>Node35&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1630.22,-238.532C1578.33,-232.306 1498.01,-220.146 1431,-199 1410.9,-192.657 1408.36,-184.434 1388,-179 1208.26,-131.045 1154.58,-173.059 971,-143 875.366,-127.341 764.679,-96.9324 711.981,-81.6842"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="712.816,-78.282 702.236,-78.8456 710.858,-85.0027 712.816,-78.282"/>
+<path fill="none" stroke="midnightblue" d="M1223.27,-235.433C1186.42,-226.718 1128.1,-212.595 1078,-199 963.045,-167.808 935.333,-156.401 821,-123 770.445,-108.231 711.595,-91.3028 676.645,-81.2771"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="677.602,-77.9105 667.024,-78.5187 675.672,-84.6394 677.602,-77.9105"/>
 </g>
 <!-- Node35&#45;&gt;Node27 -->
 <g id="edge80" class="edge"><title>Node35&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1630.49,-238.475C1522.91,-227.368 1283.19,-202.616 1194.68,-193.478"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1194.96,-189.988 1184.66,-192.442 1194.24,-196.951 1194.96,-189.988"/>
+<path fill="none" stroke="midnightblue" d="M1206.08,-237.051C1118.23,-225.729 946.775,-203.632 874.452,-194.311"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="874.888,-190.839 864.523,-193.032 873.994,-197.781 874.888,-190.839"/>
 </g>
 <!-- Node36&#45;&gt;Node8 -->
 <g id="edge84" class="edge"><title>Node36&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1761.12,-414.399C1744.29,-404.862 1722.16,-392.325 1705.43,-382.842"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1706.7,-379.543 1696.28,-377.658 1703.25,-385.633 1706.7,-379.543"/>
+<path fill="none" stroke="midnightblue" d="M2490.24,-419.82C2474.66,-417.641 2457.7,-415.499 2442,-414 2288,-399.291 1823.16,-379.198 1645.8,-371.844"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1645.93,-368.347 1635.8,-371.431 1645.65,-375.341 1645.93,-368.347"/>
 </g>
 <!-- Node36&#45;&gt;Node17 -->
 <g id="edge88" class="edge"><title>Node36&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1730.06,-419.676C1687.55,-411.832 1628.2,-398.404 1579,-378 1578.72,-377.886 1285.19,-199.227 1285,-199 1257.15,-166.618 1242.31,-117.509 1235.92,-91.0118"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1239.31,-90.1338 1233.68,-81.1549 1232.48,-91.6813 1239.31,-90.1338"/>
+<path fill="none" stroke="midnightblue" d="M2575.94,-414.346C2610.97,-396.634 2669.12,-363.52 2708,-322 2776.62,-248.72 2823.13,-134.955 2839.49,-90.8449"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2842.87,-91.7925 2843,-81.1984 2836.29,-89.4015 2842.87,-91.7925"/>
 </g>
 <!-- Node36&#45;&gt;Node29 -->
 <g id="edge86" class="edge"><title>Node36&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1841.82,-415.716C1844.58,-415.126 1847.32,-414.551 1850,-414 1897.54,-404.219 2664.14,-273.521 2709,-255 2738.68,-242.745 2768.54,-220.261 2786.65,-205.221"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2789.19,-207.655 2794.54,-198.513 2784.66,-202.32 2789.19,-207.655"/>
+<path fill="none" stroke="midnightblue" d="M2562.02,-414.266C2591.39,-386.928 2652.79,-323.668 2674,-255 2676.62,-246.507 2678.49,-242.673 2674,-235 2665.14,-219.85 2649.09,-209.406 2633.69,-202.424"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2634.83,-199.106 2624.25,-198.512 2632.15,-205.573 2634.83,-199.106"/>
 </g>
 <!-- Node36&#45;&gt;Node32 -->
 <g id="edge87" class="edge"><title>Node36&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M1730.2,-419.007C1694.76,-411.397 1648.82,-398.522 1612,-378 1555.98,-346.773 1503.63,-290.382 1479.67,-262.511"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1482.06,-259.908 1472.93,-254.532 1476.71,-264.428 1482.06,-259.908"/>
+<path fill="none" stroke="midnightblue" d="M2552.76,-414.483C2568.51,-381.817 2607.65,-300.647 2625.22,-264.211"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2628.56,-265.346 2629.75,-254.819 2622.25,-262.306 2628.56,-265.346"/>
 </g>
 <!-- Node36&#45;&gt;Node35 -->
 <g id="edge85" class="edge"><title>Node36&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1778.8,-414.361C1771.47,-400.059 1759.69,-377.36 1749,-358 1730.34,-324.209 1707.47,-285.362 1694.43,-263.442"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1697.31,-261.438 1689.18,-254.642 1691.3,-265.023 1697.31,-261.438"/>
+<path fill="none" stroke="midnightblue" d="M2490.36,-420.742C2285.27,-392.127 1570.86,-292.31 1323.72,-255.841"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1324.12,-252.362 1313.72,-254.361 1323.1,-259.287 1324.12,-252.362"/>
 </g>
 <!-- Node37&#45;&gt;Node35 -->
 <g id="edge99" class="edge"><title>Node37&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1538.08,-481.293C1550.49,-460.077 1583.42,-404.069 1612,-358 1633.02,-324.122 1658.4,-285.054 1672.72,-263.168"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1675.75,-264.935 1678.3,-254.653 1669.89,-261.097 1675.75,-264.935"/>
+<path fill="none" stroke="midnightblue" d="M1431.35,-481.346C1423.54,-467.007 1407.07,-437.565 1391,-414 1351.55,-356.149 1298.81,-291.987 1274.01,-262.484"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1276.64,-260.183 1267.52,-254.8 1271.3,-264.699 1276.64,-260.183"/>
 </g>
 <!-- Node38 -->
 <g id="node38" class="node"><title>Node38</title>
-<polygon fill="white" stroke="#bfbfbf" points="1386.5,-420 1386.5,-439 1445.5,-439 1445.5,-420 1386.5,-420"/>
-<text text-anchor="middle" x="1416" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
+<polygon fill="white" stroke="#bfbfbf" points="1289.5,-420 1289.5,-439 1348.5,-439 1348.5,-420 1289.5,-420"/>
+<text text-anchor="middle" x="1319" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
 </g>
 <!-- Node37&#45;&gt;Node38 -->
 <g id="edge100" class="edge"><title>Node37&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M1516.24,-481.475C1496.78,-471.578 1464.45,-455.142 1441.79,-443.615"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1443.23,-440.422 1432.73,-439.009 1440.06,-446.662 1443.23,-440.422"/>
+<path fill="none" stroke="midnightblue" d="M1419.24,-481.475C1399.78,-471.578 1367.45,-455.142 1344.79,-443.615"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1346.23,-440.422 1335.73,-439.009 1343.06,-446.662 1346.23,-440.422"/>
 </g>
 <!-- Node39&#45;&gt;Node17 -->
 <g id="edge136" class="edge"><title>Node39&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M621.561,-761.45C606.897,-753.579 586.124,-740.753 572,-725 515.731,-662.242 504.139,-638.849 484,-557 449.179,-415.481 435.19,-329.663 546,-235 585.618,-201.155 601.003,-199.282 649,-179 846.63,-95.4893 1109.11,-77.3641 1199.67,-73.5134"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200,-77.0035 1209.85,-73.1112 1199.72,-70.009 1200,-77.0035"/>
+<path fill="none" stroke="midnightblue" d="M1093.88,-770.209C1353.86,-770.791 2516.07,-767.731 2861,-669 2930.83,-649.011 3150,-498.426 3150,-492 3150,-492 3150,-492 3150,-188 3150,-152.864 3134.41,-142.223 3105,-123 3067.92,-98.7643 2939.06,-82.3264 2878.25,-75.7356"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.38,-72.2298 2868.06,-74.6553 2877.64,-79.1907 2878.38,-72.2298"/>
 </g>
 <!-- Node39&#45;&gt;Node26 -->
 <g id="edge137" class="edge"><title>Node39&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M590.161,-761.444C540.649,-749.892 466.557,-724.028 432,-669 334.16,-513.203 337.593,-276.533 340.85,-208.741"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="344.347,-208.894 341.394,-198.719 337.357,-208.515 344.347,-208.894"/>
+<path fill="none" stroke="midnightblue" d="M995.752,-761.454C863.772,-735.999 490.627,-656.253 425,-557 359.435,-457.841 371.248,-407.053 397,-291 403.749,-260.583 418.446,-227.363 428.021,-207.624"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="431.181,-209.131 432.493,-198.618 424.911,-206.018 431.181,-209.131"/>
 </g>
 <!-- Node40 -->
 <g id="node40" class="node"><title>Node40</title>
 <g id="a_node40"><a xlink:href="with_8h.html" target="_top" xlink:title="RAII wrapper function to enter and exit a context object similar to python&#39;s with syntax...">
-<polygon fill="white" stroke="black" points="512,-537.5 512,-556.5 618,-556.5 618,-537.5 512,-537.5"/>
-<text text-anchor="middle" x="565" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/support/with.h</text>
+<polygon fill="white" stroke="black" points="937,-537.5 937,-556.5 1043,-556.5 1043,-537.5 937,-537.5"/>
+<text text-anchor="middle" x="990" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/support/with.h</text>
 </a>
 </g>
 </g>
 <!-- Node39&#45;&gt;Node40 -->
 <g id="edge112" class="edge"><title>Node39&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M622.792,-761.461C609.945,-753.759 592.749,-741.167 584,-725 556.107,-673.453 559.113,-601.146 562.545,-567.123"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="566.069,-567.115 563.727,-556.782 559.114,-566.32 566.069,-567.115"/>
+<path fill="none" stroke="midnightblue" d="M1048.37,-761.232C1054.26,-752.532 1062.61,-738.572 1066,-725 1068.16,-716.377 1067.99,-713.664 1066,-705 1053.53,-650.609 1019.63,-593.174 1001.62,-565.259"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1004.39,-563.101 995.969,-556.669 998.54,-566.948 1004.39,-563.101"/>
 </g>
 <!-- Node41 -->
 <g id="node41" class="node"><title>Node41</title>
 <g id="a_node41"><a xlink:href="tensor_8h.html" target="_top" xlink:title="Dataflow tensor object. ">
-<polygon fill="white" stroke="red" points="710,-649.5 710,-668.5 800,-668.5 800,-649.5 710,-649.5"/>
-<text text-anchor="middle" x="755" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor.h</text>
+<polygon fill="white" stroke="red" points="864,-649.5 864,-668.5 954,-668.5 954,-649.5 864,-649.5"/>
+<text text-anchor="middle" x="909" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor.h</text>
 </a>
 </g>
 </g>
 <!-- Node39&#45;&gt;Node41 -->
 <g id="edge115" class="edge"><title>Node39&#45;&gt;Node41</title>
-<path fill="none" stroke="midnightblue" d="M663.306,-761.409C681.333,-754.038 705.537,-741.914 722,-725 734.943,-711.702 743.885,-692.314 749.164,-678.175"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="752.524,-679.168 752.492,-668.573 745.91,-676.875 752.524,-679.168"/>
+<path fill="none" stroke="midnightblue" d="M994.52,-761.444C971.552,-755.021 945.281,-743.941 928,-725 916.495,-712.39 911.929,-693.176 910.131,-678.905"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="913.598,-678.381 909.203,-668.74 906.627,-679.017 913.598,-678.381"/>
 </g>
 <!-- Node42 -->
 <g id="node42" class="node"><title>Node42</title>
 <g id="a_node42"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
-<polygon fill="white" stroke="red" points="1217,-593.5 1217,-612.5 1297,-612.5 1297,-593.5 1217,-593.5"/>
-<text text-anchor="middle" x="1257" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
+<polygon fill="white" stroke="red" points="1175,-593.5 1175,-612.5 1255,-612.5 1255,-593.5 1175,-593.5"/>
+<text text-anchor="middle" x="1215" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node39&#45;&gt;Node42 -->
 <g id="edge135" class="edge"><title>Node39&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M690.607,-768.064C820.382,-762.167 1155.75,-740.233 1237,-669 1250.16,-657.463 1254.78,-637.497 1256.35,-622.729"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1259.84,-622.89 1257.04,-612.675 1252.86,-622.412 1259.84,-622.89"/>
+<path fill="none" stroke="midnightblue" d="M1053.74,-761.484C1065.54,-752.751 1084.07,-738.563 1099,-725 1137.75,-689.799 1179.33,-644.315 1200.62,-620.386"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1203.5,-622.414 1207.5,-612.604 1198.25,-617.776 1203.5,-622.414"/>
 </g>
 <!-- Node43 -->
 <g id="node43" class="node"><title>Node43</title>
 <g id="a_node43"><a xlink:href="tensor__intrin_8h.html" target="_top" xlink:title="Tensor intrinsic operations. ">
-<polygon fill="white" stroke="red" points="593,-705.5 593,-724.5 713,-724.5 713,-705.5 593,-705.5"/>
-<text text-anchor="middle" x="653" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor_intrin.h</text>
+<polygon fill="white" stroke="red" points="937,-705.5 937,-724.5 1057,-724.5 1057,-705.5 937,-705.5"/>
+<text text-anchor="middle" x="997" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor_intrin.h</text>
 </a>
 </g>
 </g>
 <!-- Node39&#45;&gt;Node43 -->
 <g id="edge132" class="edge"><title>Node39&#45;&gt;Node43</title>
-<path fill="none" stroke="midnightblue" d="M641.312,-761.083C643.167,-753.927 645.835,-743.635 648.154,-734.691"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="651.609,-735.309 650.731,-724.751 644.834,-733.553 651.609,-735.309"/>
+<path fill="none" stroke="midnightblue" d="M1034.57,-761.083C1028.15,-753.377 1018.69,-742.033 1010.88,-732.653"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1013.38,-730.193 1004.29,-724.751 1008.01,-734.674 1013.38,-730.193"/>
 </g>
 <!-- Node40&#45;&gt;Node10 -->
 <g id="edge113" class="edge"><title>Node40&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M575.977,-537.323C625.058,-498.766 830.037,-340.228 1014,-235 1063,-206.972 1073.87,-195.001 1128,-179 1438.31,-87.2801 1831.13,-74.2265 1971.86,-72.6136"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1971.98,-76.1127 1981.94,-72.513 1971.91,-69.113 1971.98,-76.1127"/>
+<path fill="none" stroke="midnightblue" d="M1043.28,-544.957C1257.14,-540.649 2053.72,-523.412 2305,-501 2419.19,-490.816 2749.06,-477.502 2806,-378 2915.23,-187.101 2493.93,-103.511 2341.27,-79.89"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2341.59,-76.3992 2331.18,-78.3562 2340.54,-83.3197 2341.59,-76.3992"/>
 </g>
 <!-- Node40&#45;&gt;Node19 -->
 <g id="edge114" class="edge"><title>Node40&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M541.834,-537.383C523.592,-529.788 498.278,-517.382 480,-501 457.602,-480.925 457.877,-470.547 442,-445 423.93,-415.924 412.733,-411.101 404,-378 401.732,-369.405 403.448,-366.872 404,-358 407.117,-307.932 418,-296.165 418,-246 418,-246 418,-246 418,-188 418,-87.8835 579.744,-73.7611 649.547,-72.3279"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="649.968,-75.823 659.922,-72.1957 649.878,-68.8235 649.968,-75.823"/>
+<path fill="none" stroke="midnightblue" d="M950.575,-537.498C900.944,-524.98 815.7,-497.21 762,-445 688.639,-373.674 662.24,-352.748 632,-255 614.661,-198.954 624.091,-181.131 632,-123 633.479,-112.127 636.672,-100.29 639.636,-90.8109"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="642.968,-91.8806 642.781,-81.2874 636.321,-89.6855 642.968,-91.8806"/>
 </g>
 <!-- Node41&#45;&gt;Node8 -->
 <g id="edge116" class="edge"><title>Node41&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M800.35,-657.094C895.002,-654.591 1120.21,-645.437 1306,-613 1329.47,-608.902 1490.66,-565.289 1513,-557 1567.05,-536.945 1590.85,-543.317 1630,-501 1660.35,-468.191 1673.32,-415.347 1678.29,-387.515"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1681.75,-387.986 1679.91,-377.554 1674.85,-386.862 1681.75,-387.986"/>
+<path fill="none" stroke="midnightblue" d="M907.647,-649.218C904.821,-627.513 900.643,-570.666 928,-537 940.175,-522.018 1234.3,-418.778 1253,-414 1338.66,-392.118 1439.99,-380.188 1506.01,-374.211"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1506.64,-377.669 1516.29,-373.302 1506.02,-370.696 1506.64,-377.669"/>
 </g>
 <!-- Node41&#45;&gt;Node17 -->
 <g id="edge128" class="edge"><title>Node41&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M744.217,-649.264C724.355,-632.113 684,-591.869 684,-548 684,-548 684,-548 684,-428.5 684,-321.701 959.136,-170.076 1055,-123 1102.77,-99.5393 1163.31,-85.2296 1199.78,-78.0944"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200.66,-81.4888 1209.84,-76.1892 1199.36,-74.6111 1200.66,-81.4888"/>
+<path fill="none" stroke="midnightblue" d="M954.094,-657.325C1158.9,-653.585 2021.41,-630.526 2714,-501 2824.22,-480.387 2867.89,-508.939 2960,-445 3017.36,-405.185 3036,-377.325 3036,-307.5 3036,-307.5 3036,-307.5 3036,-188 3036,-115.077 2932.54,-86.8841 2878.31,-77.1152"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.61,-73.6161 2868.17,-75.3992 2877.44,-80.5181 2878.61,-73.6161"/>
 </g>
 <!-- Node41&#45;&gt;Node18 -->
 <g id="edge129" class="edge"><title>Node41&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M800.21,-655.261C900.872,-649.025 1151.07,-632.769 1360,-613 1437.5,-605.667 1456.39,-598.961 1534,-593 1944.66,-561.462 2052.8,-618.838 2460,-557 2763.03,-510.981 2939.5,-621.238 3126,-378 3200.07,-281.392 3121.81,-198.097 3026,-123 3006.45,-107.681 2981.62,-94.4604 2962.54,-85.3931"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2963.95,-82.1916 2953.41,-81.1628 2961.01,-88.5429 2963.95,-82.1916"/>
+<path fill="none" stroke="midnightblue" d="M863.995,-658.265C803.731,-657.079 694.605,-649.461 610,-613 441.165,-540.24 329.995,-380.787 442,-235 500.849,-158.401 767.271,-141.895 862,-123 981.192,-99.2253 1123.87,-83.5333 1194.65,-76.5908"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1195.35,-80.0391 1204.97,-75.5909 1194.68,-73.0717 1195.35,-80.0391"/>
 </g>
 <!-- Node41&#45;&gt;Node19 -->
 <g id="edge130" class="edge"><title>Node41&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M717.333,-649.484C665.21,-636.32 569.954,-607.164 503,-557 354.098,-445.438 331.069,-379.518 286,-199 283.847,-190.376 280.99,-186.342 286,-179 327.749,-117.815 563.683,-85.6336 649.658,-75.8108"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="650.29,-79.262 659.84,-74.6726 649.513,-72.3053 650.29,-79.262"/>
+<path fill="none" stroke="midnightblue" d="M863.853,-658.082C794.963,-656.935 660.293,-649.654 553,-613 506.62,-597.156 498.893,-584.017 458,-557 335.022,-475.753 294.631,-451.367 224,-322 196.821,-272.219 197.401,-255.232 190,-199 185.579,-165.407 172.101,-147.019 196,-123 225.529,-93.3224 517.484,-78.0688 614.696,-73.7831"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="614.944,-77.2757 624.784,-73.3471 614.642,-70.2822 614.944,-77.2757"/>
 </g>
 <!-- Node41&#45;&gt;Node27 -->
 <g id="edge131" class="edge"><title>Node41&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M756.052,-649.482C758.756,-629.284 766.961,-577.171 784,-537 820.831,-450.169 835.187,-428.361 898,-358 955.874,-293.171 975.14,-279.138 1050,-235 1074.65,-220.464 1104.88,-208.551 1127.57,-200.642"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1128.76,-203.933 1137.1,-197.398 1126.5,-197.307 1128.76,-203.933"/>
+<path fill="none" stroke="midnightblue" d="M863.729,-657.549C792.329,-655.772 658.618,-647.758 629,-613 535.431,-503.192 587.693,-409.484 670,-291 703.477,-242.808 768.016,-214.055 807.523,-200.193"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="808.882,-203.428 817.234,-196.909 806.64,-196.797 808.882,-203.428"/>
 </g>
 <!-- Node41&#45;&gt;Node42 -->
 <g id="edge117" class="edge"><title>Node41&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M800.435,-653.113C894.28,-643.018 1108.91,-619.93 1206.74,-609.406"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1207.39,-612.857 1216.96,-608.307 1206.64,-605.897 1207.39,-612.857"/>
+<path fill="none" stroke="midnightblue" d="M954.151,-650.032C1010.3,-640.124 1105.87,-623.259 1164.42,-612.925"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1165.31,-616.322 1174.55,-611.138 1164.1,-609.429 1165.31,-616.322"/>
 </g>
 <!-- Node42&#45;&gt;Node7 -->
 <g id="edge120" class="edge"><title>Node42&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1297.02,-597.535C1382.2,-588.032 1581.79,-565.763 1681.76,-554.61"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1682.15,-558.088 1691.7,-553.501 1681.37,-551.131 1682.15,-558.088"/>
+<path fill="none" stroke="midnightblue" d="M1255.15,-597.16C1334.33,-587.616 1510.95,-566.327 1603.63,-555.156"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1604.18,-558.615 1613.69,-553.944 1603.34,-551.666 1604.18,-558.615"/>
 </g>
 <!-- Node42&#45;&gt;Node8 -->
 <g id="edge118" class="edge"><title>Node42&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1297.21,-594.627C1378.63,-579.033 1559.33,-540.856 1607,-501 1640.09,-473.334 1628.15,-451.19 1650,-414 1655.65,-404.389 1662.64,-394.12 1668.55,-385.823"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1671.4,-387.867 1674.43,-377.717 1665.73,-383.756 1671.4,-387.867"/>
+<path fill="none" stroke="midnightblue" d="M1219.82,-593.227C1224.6,-584.294 1231.92,-569.955 1237,-557 1261.21,-495.207 1229.88,-457.5 1280,-414 1312.92,-385.429 1429.76,-374.979 1506.42,-371.17"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1506.67,-374.663 1516.49,-370.696 1506.34,-367.67 1506.67,-374.663"/>
 </g>
 <!-- Node42&#45;&gt;Node13 -->
 <g id="edge121" class="edge"><title>Node42&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1297.09,-598.879C1322.78,-596.965 1356.84,-594.585 1387,-593 1832.01,-569.608 1947.49,-617.37 2389,-557 2494.52,-542.571 2520.64,-533.688 2622,-501 2753.09,-458.725 2810.42,-443.665 2875,-322 2916.93,-242.996 2955.84,-196.589 2905,-123 2895.55,-109.318 2881.1,-98.8599 2866.63,-91.108"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2868.16,-87.9644 2857.65,-86.6264 2865.04,-94.2265 2868.16,-87.9644"/>
+<path fill="none" stroke="midnightblue" d="M1210.42,-593.354C1182.09,-539.278 1033.64,-247.657 1090,-179 1168.09,-83.8805 1552.25,-72.404 1715.93,-71.918"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1716.39,-75.4174 1726.38,-71.9011 1716.38,-68.4174 1716.39,-75.4174"/>
 </g>
 <!-- Node42&#45;&gt;Node17 -->
 <g id="edge125" class="edge"><title>Node42&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1231.75,-593.489C1181.93,-575.215 1071.6,-527.091 1023,-445 995.04,-397.771 1014.45,-376.83 1012,-322 1007.52,-221.681 1036.54,-180.308 1119,-123 1144.32,-105.403 1176.76,-91.6659 1200.38,-82.9909"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1201.68,-86.2447 1209.92,-79.5864 1199.32,-79.6521 1201.68,-86.2447"/>
+<path fill="none" stroke="midnightblue" d="M1255.39,-601.681C1392.78,-600.284 1854.54,-593.027 2234,-557 2405.26,-540.74 2447.3,-529.234 2617,-501 2804.35,-469.831 2998,-497.42 2998,-307.5 2998,-307.5 2998,-307.5 2998,-188 2998,-128.195 2922.48,-95.3149 2877.91,-81.1157"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.69,-77.6954 2868.1,-78.1337 2876.65,-84.3924 2878.69,-77.6954"/>
 </g>
 <!-- Node42&#45;&gt;Node19 -->
 <g id="edge127" class="edge"><title>Node42&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1216.92,-593.785C1114.19,-571.962 845.211,-509.772 784,-445 685.708,-340.991 679.703,-151.734 680.436,-91.4672"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="683.941,-91.2671 680.647,-81.1972 676.942,-91.1232 683.941,-91.2671"/>
+<path fill="none" stroke="midnightblue" d="M1184.6,-593.473C1157.79,-585.488 1117.97,-572.482 1085,-557 1069.48,-549.71 1068.05,-543.045 1052,-537 966.25,-504.705 937.202,-525.827 849,-501 610.713,-433.926 481.511,-425.224 381,-199 338.397,-103.112 535.591,-79.6403 614.535,-74.1231"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="615.098,-77.5941 624.852,-73.4581 614.647,-70.6086 615.098,-77.5941"/>
 </g>
 <!-- Node42&#45;&gt;Node22 -->
 <g id="edge123" class="edge"><title>Node42&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M1258.9,-593.395C1270.14,-542.5 1327.98,-280.657 1343.92,-208.456"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1347.37,-209.077 1346.11,-198.558 1340.54,-207.568 1347.37,-209.077"/>
+<path fill="none" stroke="midnightblue" d="M1203.24,-593.409C1192.99,-585.244 1178.61,-572.007 1171,-557 1116.96,-450.433 1126.11,-410.341 1132,-291 1133.42,-262.178 1137.12,-228.898 1139.6,-208.66"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1143.08,-208.984 1140.86,-198.625 1136.14,-208.111 1143.08,-208.984"/>
 </g>
 <!-- Node42&#45;&gt;Node26 -->
 <g id="edge126" class="edge"><title>Node42&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1230.25,-593.433C1202.94,-584.603 1159.36,-570.288 1122,-557 1055.74,-533.431 1038.52,-528.98 974,-501 732.799,-396.405 450.995,-248.152 366.893,-203.335"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="368.318,-200.128 357.848,-198.507 365.022,-206.304 368.318,-200.128"/>
+<path fill="none" stroke="midnightblue" d="M1200.2,-593.457C1176.5,-580.037 1128.28,-553.814 1085,-537 945.866,-482.945 894.986,-512.784 762,-445 629.062,-377.24 497.546,-251.195 452.943,-206.355"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="455.16,-203.619 445.645,-198.96 450.178,-208.536 455.16,-203.619"/>
 </g>
 <!-- Node42&#45;&gt;Node29 -->
 <g id="edge122" class="edge"><title>Node42&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1297.1,-598.962C1322.79,-597.081 1356.85,-594.707 1387,-593 1912.64,-563.243 2060.49,-641.062 2568,-501 2631.81,-483.391 2655.55,-487.848 2706,-445 2781.41,-380.954 2795.22,-350.246 2822,-255 2826.5,-239.011 2820.48,-220.785 2814.23,-207.71"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2817.32,-206.062 2809.57,-198.837 2811.12,-209.318 2817.32,-206.062"/>
+<path fill="none" stroke="midnightblue" d="M1255.01,-600.828C1449.63,-594.844 2298.42,-565.446 2554,-501 2674.85,-470.528 2744.1,-486.172 2806,-378 2840.85,-317.092 2848.42,-337.861 2710,-235 2689.16,-219.512 2662.31,-208.647 2639.7,-201.479"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2640.55,-198.081 2629.97,-198.536 2638.52,-204.781 2640.55,-198.081"/>
 </g>
 <!-- Node42&#45;&gt;Node35 -->
 <g id="edge119" class="edge"><title>Node42&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1265.32,-593.463C1273.61,-584.713 1286.46,-570.513 1296,-557 1338.13,-497.329 1324.97,-465.269 1377,-414 1458.78,-333.408 1587.12,-280.252 1648.71,-257.944"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1650.11,-261.16 1658.36,-254.505 1647.76,-254.566 1650.11,-261.16"/>
+<path fill="none" stroke="midnightblue" d="M1216.11,-593.2C1221.97,-546.837 1249.31,-330.569 1257.61,-264.935"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1261.1,-265.171 1258.89,-254.811 1254.16,-264.293 1261.1,-265.171"/>
 </g>
 <!-- Node42&#45;&gt;Node38 -->
 <g id="edge124" class="edge"><title>Node42&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M1277.03,-593.493C1293.65,-585.732 1317.2,-573.039 1334,-557 1368.26,-524.291 1395.06,-474.608 1407.83,-448.298"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1411.04,-449.686 1412.15,-439.15 1404.71,-446.693 1411.04,-449.686"/>
+<path fill="none" stroke="midnightblue" d="M1231.42,-593.355C1244.86,-585.509 1263.48,-572.77 1275,-557 1299.38,-523.637 1311.11,-475.638 1316.01,-449.399"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1319.5,-449.747 1317.76,-439.297 1312.6,-448.556 1319.5,-449.747"/>
 </g>
 <!-- Node43&#45;&gt;Node17 -->
 <g id="edge134" class="edge"><title>Node43&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M653.204,-705.498C653.534,-679.279 652.318,-597.783 627,-537 619.31,-518.538 610.223,-518.19 600,-501 548.783,-414.883 472.812,-380.428 518,-291 582.685,-162.989 1069,-93.0265 1199.73,-76.4034"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200.41,-79.8458 1209.9,-75.1278 1199.54,-72.9003 1200.41,-79.8458"/>
+<path fill="none" stroke="midnightblue" d="M1057.23,-713.559C1363.71,-711.184 2738.92,-698.89 2824,-669 2902.4,-641.457 3112,-513.596 3112,-430.5 3112,-430.5 3112,-430.5 3112,-188 3112,-87.1962 2949.29,-73.4209 2878.38,-72.2036"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.25,-68.7024 2868.22,-72.1054 2878.19,-75.702 2878.25,-68.7024"/>
 </g>
 <!-- Node43&#45;&gt;Node41 -->
 <g id="edge133" class="edge"><title>Node43&#45;&gt;Node41</title>
-<path fill="none" stroke="midnightblue" d="M669.388,-705.324C685.671,-696.703 710.867,-683.364 729.716,-673.386"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="731.452,-676.427 738.653,-668.655 728.177,-670.24 731.452,-676.427"/>
+<path fill="none" stroke="midnightblue" d="M982.861,-705.324C969.134,-696.9 948.064,-683.971 931.936,-674.074"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="933.457,-670.902 923.104,-668.655 929.796,-676.868 933.457,-670.902"/>
 </g>
 <!-- Node45 -->
 <g id="node45" class="node"><title>Node45</title>
 <g id="a_node45"><a xlink:href="compute__dag_8h.html" target="_top" xlink:title="The auto&#45;scheduler&#39;s computational graph and related program analyses. ">
-<polygon fill="white" stroke="black" points="1335,-951.5 1335,-981.5 1447,-981.5 1447,-951.5 1335,-951.5"/>
-<text text-anchor="start" x="1343" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="1391" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">/compute_dag.h</text>
+<polygon fill="white" stroke="black" points="1075,-951.5 1075,-981.5 1187,-981.5 1187,-951.5 1075,-951.5"/>
+<text text-anchor="start" x="1083" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="1131" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">/compute_dag.h</text>
 </a>
 </g>
 </g>
 <!-- Node44&#45;&gt;Node45 -->
 <g id="edge145" class="edge"><title>Node44&#45;&gt;Node45</title>
-<path fill="none" stroke="midnightblue" d="M1432.5,-1018.4C1425.62,-1009.96 1416.74,-999.067 1408.96,-989.522"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1411.51,-987.115 1402.48,-981.577 1406.08,-991.539 1411.51,-987.115"/>
+<path fill="none" stroke="midnightblue" d="M1623.83,-1025.85C1521.77,-1013.77 1306.4,-988.266 1197.31,-975.351"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1197.44,-971.841 1187.09,-974.141 1196.61,-978.793 1197.44,-971.841"/>
 </g>
 <!-- Node47 -->
 <g id="node47" class="node"><title>Node47</title>
 <g id="a_node47"><a xlink:href="target_8h.html" target="_top" xlink:title="Compilation target object. ">
-<polygon fill="white" stroke="black" points="1119.5,-649.5 1119.5,-668.5 1228.5,-668.5 1228.5,-649.5 1119.5,-649.5"/>
-<text text-anchor="middle" x="1174" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target.h</text>
+<polygon fill="white" stroke="black" points="2706.5,-649.5 2706.5,-668.5 2815.5,-668.5 2815.5,-649.5 2706.5,-649.5"/>
+<text text-anchor="middle" x="2761" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target.h</text>
 </a>
 </g>
 </g>
 <!-- Node44&#45;&gt;Node47 -->
 <g id="edge153" class="edge"><title>Node44&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M1448.66,-1018.48C1459.88,-981.894 1484.56,-881.904 1443,-817 1390.38,-734.828 1278.28,-690.491 1216.7,-671.48"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1217.49,-668.062 1206.91,-668.538 1215.48,-674.766 1217.49,-668.062"/>
+<path fill="none" stroke="midnightblue" d="M1736.32,-1032.17C1970.64,-1030.07 2856,-1014.59 2856,-900.5 2856,-900.5 2856,-900.5 2856,-770 2856,-726.739 2813.39,-692.086 2785.25,-673.915"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2787.03,-670.903 2776.69,-668.604 2783.34,-676.851 2787.03,-670.903"/>
 </g>
 <!-- Node45&#45;&gt;Node3 -->
 <g id="edge146" class="edge"><title>Node45&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M1334.84,-961.889C1161.17,-950.724 633.262,-916.783 446.411,-904.77"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="446.388,-901.261 436.184,-904.112 445.939,-908.247 446.388,-901.261"/>
+<path fill="none" stroke="midnightblue" d="M1074.66,-961.693C968.261,-954.295 730.522,-936.777 531,-915 517.587,-913.536 503.265,-911.762 489.582,-909.965"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="489.643,-906.442 479.269,-908.591 488.719,-913.381 489.643,-906.442"/>
 </g>
 <!-- Node45&#45;&gt;Node13 -->
 <g id="edge147" class="edge"><title>Node45&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1413.49,-951.393C1428.66,-941.631 1448.94,-928.089 1466,-915 1583.59,-824.807 1588.87,-763.558 1725,-705 2307.66,-454.372 3112,-1003.27 3112,-369 3112,-369 3112,-369 3112,-305.5 3112,-186.572 2962.53,-118.896 2876.38,-89.7673"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2877.3,-86.3876 2866.71,-86.5705 2875.1,-93.0335 2877.3,-86.3876"/>
+<path fill="none" stroke="midnightblue" d="M1187.09,-960.656C1384.46,-943.164 2064.98,-879.07 2620,-781 2752.39,-757.607 2861.51,-797.514 2901,-669 2975.73,-425.777 1796,-623.444 1796,-369 1796,-369 1796,-369 1796,-305.5 1796,-229.352 1792.76,-139.252 1791.04,-96.8588"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1794.53,-96.5277 1790.62,-86.6808 1787.54,-96.8168 1794.53,-96.5277"/>
 </g>
 <!-- Node45&#45;&gt;Node19 -->
 <g id="edge151" class="edge"><title>Node45&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1334.7,-965.491C1118.29,-965.122 347.143,-960.591 248,-915 168.867,-878.611 114,-859.099 114,-772 114,-772 114,-772 114,-658 114,-582.314 76,-567.686 76,-492 76,-492 76,-492 76,-188 76,-147.145 104.025,-140.377 141,-123 232.266,-80.1092 548.844,-73.6385 649.804,-72.6689"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="649.99,-76.1676 659.96,-72.5833 649.931,-69.1678 649.99,-76.1676"/>
+<path fill="none" stroke="midnightblue" d="M1074.87,-964.173C861.67,-958.403 114,-931.201 114,-833.5 114,-833.5 114,-833.5 114,-770 114,-694.314 76,-679.686 76,-604 76,-604 76,-604 76,-188 76,-148.685 100.807,-140.526 136,-123 220.828,-80.7565 517.597,-73.8489 614.867,-72.7202"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="614.98,-76.2193 624.943,-72.6161 614.907,-69.2197 614.98,-76.2193"/>
 </g>
 <!-- Node45&#45;&gt;Node26 -->
 <g id="edge149" class="edge"><title>Node45&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1334.91,-965.129C1127.24,-963.449 409.151,-954.788 315,-915 266.196,-894.376 228,-886.483 228,-833.5 228,-833.5 228,-833.5 228,-428.5 228,-337.153 296.916,-243.674 327.582,-206.599"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="330.389,-208.7 334.164,-198.8 325.04,-204.185 330.389,-208.7"/>
+<path fill="none" stroke="midnightblue" d="M1074.65,-965.102C958.293,-963.456 695.741,-955.253 617,-915 573.965,-893 545,-881.833 545,-833.5 545,-833.5 545,-833.5 545,-770 545,-630.438 432.084,-631.646 383,-501 374.108,-477.333 375.231,-470.184 373,-445 364.669,-350.958 362.7,-319.404 405,-235 409.984,-225.056 417.024,-214.881 423.232,-206.728"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="426.056,-208.799 429.505,-198.781 420.562,-204.462 426.056,-208.799"/>
 </g>
 <!-- Node45&#45;&gt;Node27 -->
 <g id="edge152" class="edge"><title>Node45&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1365.09,-951.365C1293.18,-910.441 1091.6,-783.814 1018,-613 960.397,-479.307 1012.82,-421.167 1078,-291 1091.25,-264.543 1095.18,-257.834 1114,-235 1122.78,-224.346 1133.89,-213.61 1143.1,-205.297"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1145.42,-207.919 1150.6,-198.679 1140.79,-202.67 1145.42,-207.919"/>
+<path fill="none" stroke="midnightblue" d="M1074.93,-963.835C935.263,-958.17 583,-933.929 583,-833.5 583,-833.5 583,-833.5 583,-770 583,-539.978 664.438,-490.463 779,-291 793.388,-265.949 796.839,-259.591 812,-235 817.741,-225.688 824.333,-215.426 829.781,-207.056"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="832.792,-208.846 835.338,-198.562 826.934,-205.014 832.792,-208.846"/>
 </g>
 <!-- Node45&#45;&gt;Node39 -->
 <g id="edge148" class="edge"><title>Node45&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M1336.31,-951.428C1193.49,-914.679 811.453,-816.375 682.331,-783.15"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="682.964,-779.699 672.407,-780.596 681.219,-786.478 682.964,-779.699"/>
+<path fill="none" stroke="midnightblue" d="M1124.46,-951.271C1108.53,-916.648 1067.78,-828.055 1050.24,-789.911"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1053.3,-788.199 1045.94,-780.577 1046.94,-791.125 1053.3,-788.199"/>
 </g>
 <!-- Node46 -->
 <g id="node46" class="node"><title>Node46</title>
-<polygon fill="white" stroke="#bfbfbf" points="1543,-593.5 1543,-612.5 1629,-612.5 1629,-593.5 1543,-593.5"/>
-<text text-anchor="middle" x="1586" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_set</text>
+<polygon fill="white" stroke="#bfbfbf" points="3036,-593.5 3036,-612.5 3122,-612.5 3122,-593.5 3036,-593.5"/>
+<text text-anchor="middle" x="3079" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_set</text>
 </g>
 <!-- Node45&#45;&gt;Node46 -->
 <g id="edge150" class="edge"><title>Node45&#45;&gt;Node46</title>
-<path fill="none" stroke="midnightblue" d="M1408.53,-951.397C1419.46,-941.948 1433.25,-928.757 1443,-915 1461.6,-888.763 1551,-684.515 1578.16,-622.074"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1581.45,-623.289 1582.22,-612.722 1575.02,-620.499 1581.45,-623.289"/>
+<path fill="none" stroke="midnightblue" d="M1187.09,-964.793C1459,-961.229 2633.35,-944.256 2794,-915 2904,-894.968 3032,-945.308 3032,-833.5 3032,-833.5 3032,-833.5 3032,-714 3032,-678.702 3052.72,-641.786 3066.64,-620.96"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3069.63,-622.796 3072.46,-612.587 3063.88,-618.8 3069.63,-622.796"/>
 </g>
 <!-- Node47&#45;&gt;Node7 -->
 <g id="edge154" class="edge"><title>Node47&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1209,-649.405C1263.21,-636.257 1370.85,-610.804 1463,-593 1538.13,-578.484 1625.3,-564.898 1681.71,-556.53"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1682.5,-559.952 1691.88,-555.029 1681.47,-553.027 1682.5,-559.952"/>
+<path fill="none" stroke="midnightblue" d="M2755.01,-649.226C2744.35,-634.45 2720.5,-605.038 2692,-593 2602.8,-555.327 1927.95,-549.189 1722.3,-548.193"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1722.31,-544.693 1712.29,-548.146 1722.27,-551.693 1722.31,-544.693"/>
 </g>
 <!-- Node47&#45;&gt;Node17 -->
 <g id="edge166" class="edge"><title>Node47&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1119.49,-653.159C1086.97,-647.816 1046.59,-636.587 1018,-613 921.378,-533.294 871.072,-480.326 898,-358 926.935,-226.556 975.466,-195.283 1089,-123 1123.77,-100.865 1169.49,-86.9173 1199.76,-79.4212"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1200.87,-82.7563 1209.78,-77.0359 1199.25,-75.9465 1200.87,-82.7563"/>
+<path fill="none" stroke="midnightblue" d="M2783.81,-649.482C2820.88,-634.827 2895.2,-602.02 2946,-557 3039.27,-474.341 3074,-432.13 3074,-307.5 3074,-307.5 3074,-307.5 3074,-188 3074,-157.205 3072.95,-143.534 3050,-123 3001.77,-79.8482 2922.44,-72.2501 2878.26,-71.6534"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.09,-68.1531 2868.09,-71.6325 2878.08,-75.1531 2878.09,-68.1531"/>
 </g>
 <!-- Node47&#45;&gt;Node27 -->
 <g id="edge168" class="edge"><title>Node47&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1174.71,-649.486C1177.05,-620.739 1184.57,-524.616 1187,-445 1189.71,-356.178 1172.37,-250.766 1164.61,-208.692"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1168.04,-207.956 1162.74,-198.778 1161.16,-209.254 1168.04,-207.956"/>
+<path fill="none" stroke="midnightblue" d="M2706.44,-657.874C2380.06,-656.992 698.83,-650.628 662,-613 655.782,-606.648 660.156,-601.695 662,-593 662.553,-590.39 797.982,-286.5 832.876,-208.222"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="836.233,-209.287 837.108,-198.729 829.84,-206.437 836.233,-209.287"/>
 </g>
 <!-- Node47&#45;&gt;Node40 -->
 <g id="edge155" class="edge"><title>Node47&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M1119.45,-649.62C1063.71,-640.936 974.702,-626.735 898,-613 798.108,-595.112 681.85,-571.862 616.495,-558.568"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="616.951,-555.089 606.454,-556.523 615.554,-561.948 616.951,-555.089"/>
+<path fill="none" stroke="midnightblue" d="M2706.32,-657.511C2443.85,-655.021 1319.59,-642.696 1166,-613 1137.28,-607.447 1062.23,-577.693 1020,-560.428"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1021.09,-557.094 1010.51,-556.536 1018.43,-563.57 1021.09,-557.094"/>
 </g>
 <!-- Node47&#45;&gt;Node46 -->
 <g id="edge167" class="edge"><title>Node47&#45;&gt;Node46</title>
-<path fill="none" stroke="midnightblue" d="M1228.71,-650.829C1308.11,-640.423 1454.32,-621.259 1532.84,-610.968"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1533.53,-614.407 1542.99,-609.637 1532.62,-607.466 1533.53,-614.407"/>
+<path fill="none" stroke="midnightblue" d="M2811.39,-649.444C2869.99,-639.492 2966.31,-623.136 3026.01,-612.999"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3026.71,-616.429 3035.99,-611.304 3025.54,-609.528 3026.71,-616.429"/>
 </g>
 <!-- Node48 -->
 <g id="node48" class="node"><title>Node48</title>
 <g id="a_node48"><a xlink:href="target__kind_8h.html" target="_top" xlink:title="Target kind registry. ">
-<polygon fill="white" stroke="black" points="1027,-593.5 1027,-612.5 1161,-612.5 1161,-593.5 1027,-593.5"/>
-<text text-anchor="middle" x="1094" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target_kind.h</text>
+<polygon fill="white" stroke="black" points="671,-593.5 671,-612.5 805,-612.5 805,-593.5 671,-593.5"/>
+<text text-anchor="middle" x="738" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target_kind.h</text>
 </a>
 </g>
 </g>
 <!-- Node47&#45;&gt;Node48 -->
 <g id="edge156" class="edge"><title>Node47&#45;&gt;Node48</title>
-<path fill="none" stroke="midnightblue" d="M1161.15,-649.324C1148.78,-640.979 1129.87,-628.212 1115.26,-618.352"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1117.07,-615.348 1106.82,-612.655 1113.15,-621.15 1117.07,-615.348"/>
+<path fill="none" stroke="midnightblue" d="M2706.37,-656.542C2425.55,-649.046 1145.03,-614.865 815.509,-606.069"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="815.203,-602.56 805.113,-605.791 815.016,-609.557 815.203,-602.56"/>
 </g>
 <!-- Node48&#45;&gt;Node7 -->
 <g id="edge161" class="edge"><title>Node48&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1161.11,-596.399C1288.01,-585.808 1561.21,-563.006 1681.77,-552.944"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1682.24,-556.417 1691.91,-552.097 1681.66,-549.441 1682.24,-556.417"/>
+<path fill="none" stroke="midnightblue" d="M805.269,-598.073C978.67,-587.95 1438.77,-561.09 1603.38,-551.48"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1604.01,-554.95 1613.79,-550.873 1603.61,-547.961 1604.01,-554.95"/>
 </g>
 <!-- Node48&#45;&gt;Node19 -->
 <g id="edge164" class="edge"><title>Node48&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1026.82,-599.39C950.009,-592.961 824.745,-571.493 746,-501 675.725,-438.09 659.145,-412.329 632,-322 606.543,-237.288 594.553,-204.471 629,-123 635.092,-108.591 647.53,-96.2679 658.713,-87.4025"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="660.958,-90.0949 666.895,-81.3198 656.781,-84.4772 660.958,-90.0949"/>
+<path fill="none" stroke="midnightblue" d="M713.873,-593.484C691.228,-585.176 656.647,-571.677 628,-557 452.613,-467.145 388.342,-464.288 252,-322 228.315,-297.282 222.733,-288.101 214,-255 199.033,-198.275 174.999,-166.826 214,-123 240.645,-93.0586 520.243,-78.0457 614.885,-73.794"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="615.142,-77.2862 624.978,-73.3501 614.834,-70.2929 615.142,-77.2862"/>
 </g>
 <!-- Node48&#45;&gt;Node25 -->
 <g id="edge162" class="edge"><title>Node48&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1161.2,-596.493C1176.57,-595.289 1192.85,-594.059 1208,-593 1334.44,-584.159 2260.07,-595.084 2345,-501 2422.1,-415.584 2344.61,-259.193 2315.25,-207.268"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2318.26,-205.484 2310.23,-198.577 2312.2,-208.987 2318.26,-205.484"/>
+<path fill="none" stroke="midnightblue" d="M805.159,-599.926C1108.06,-590.335 2339.47,-548.711 2505,-501 2555.82,-486.352 2582.79,-490.352 2610,-445 2668.17,-348.056 2746.64,-506.086 2185,-255 2149.35,-239.061 2109.6,-217.525 2084.95,-203.696"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2086.4,-200.497 2075.97,-198.628 2082.96,-206.593 2086.4,-200.497"/>
 </g>
 <!-- Node48&#45;&gt;Node26 -->
 <g id="edge163" class="edge"><title>Node48&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1026.89,-601.015C932.101,-596.746 756.673,-578.035 632,-501 498.973,-418.803 387.546,-259.715 353.046,-207.249"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="355.896,-205.212 347.511,-198.736 350.027,-209.027 355.896,-205.212"/>
+<path fill="none" stroke="midnightblue" d="M721.218,-593.357C682.785,-572.764 587.586,-517.095 534,-445 476.816,-368.064 449.423,-253.402 440.457,-208.747"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="443.859,-207.904 438.527,-198.748 436.986,-209.23 443.859,-207.904"/>
 </g>
 <!-- Node48&#45;&gt;Node27 -->
 <g id="edge165" class="edge"><title>Node48&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1088.66,-593.405C1072.79,-566.811 1028.08,-483.475 1045,-414 1065.36,-330.412 1122.78,-243.207 1148.39,-207.157"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1151.44,-208.915 1154.45,-198.757 1145.76,-204.822 1151.44,-208.915"/>
+<path fill="none" stroke="midnightblue" d="M741.157,-593.34C749.806,-570.901 776.134,-510.569 819,-481 877.572,-440.597 930.702,-500.685 975,-445 1007.97,-403.556 894.68,-256.163 854.562,-206.484"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="857.202,-204.183 848.175,-198.637 851.773,-208.602 857.202,-204.183"/>
 </g>
 <!-- Node49 -->
 <g id="node49" class="node"><title>Node49</title>
 <g id="a_node49"><a xlink:href="attr__registry__map_8h.html" target="_top" xlink:title="Attribute map used in registry. ">
-<polygon fill="white" stroke="black" points="1054,-414.5 1054,-444.5 1178,-444.5 1178,-414.5 1054,-414.5"/>
-<text text-anchor="start" x="1062" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/attr_registry</text>
-<text text-anchor="middle" x="1116" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_map.h</text>
+<polygon fill="white" stroke="black" points="842,-414.5 842,-444.5 966,-444.5 966,-414.5 842,-414.5"/>
+<text text-anchor="start" x="850" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/attr_registry</text>
+<text text-anchor="middle" x="904" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_map.h</text>
 </a>
 </g>
 </g>
 <!-- Node48&#45;&gt;Node49 -->
 <g id="edge157" class="edge"><title>Node48&#45;&gt;Node49</title>
-<path fill="none" stroke="midnightblue" d="M1095.12,-593.26C1098.38,-567.866 1107.93,-493.444 1112.9,-454.65"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1116.37,-455.087 1114.18,-444.723 1109.43,-454.196 1116.37,-455.087"/>
+<path fill="none" stroke="midnightblue" d="M735.305,-593.264C729.224,-571.664 716.904,-515.039 743,-481 763.917,-453.716 799.492,-440.835 831.89,-434.885"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="832.522,-438.328 841.823,-433.253 831.387,-431.421 832.522,-438.328"/>
 </g>
 <!-- Node49&#45;&gt;Node8 -->
 <g id="edge158" class="edge"><title>Node49&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1178.08,-421.962C1284.27,-410.779 1500.06,-388.055 1611.27,-376.343"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1611.8,-379.807 1621.38,-375.279 1611.06,-372.846 1611.8,-379.807"/>
+<path fill="none" stroke="midnightblue" d="M966.016,-423.009C1091.42,-411.906 1374.36,-386.853 1506.09,-375.19"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1506.42,-378.675 1516.07,-374.306 1505.8,-371.702 1506.42,-378.675"/>
 </g>
 <!-- Node49&#45;&gt;Node19 -->
 <g id="edge159" class="edge"><title>Node49&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1098.68,-414.325C1029.28,-357.526 771.58,-146.63 699.715,-87.8162"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="701.499,-84.7533 691.543,-81.1285 697.065,-90.1704 701.499,-84.7533"/>
+<path fill="none" stroke="midnightblue" d="M893.567,-414.103C852.498,-357.435 702.09,-149.896 658.138,-89.2483"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="660.942,-87.1533 652.24,-81.1099 655.274,-91.261 660.942,-87.1533"/>
 </g>
 <!-- Node49&#45;&gt;Node27 -->
 <g id="edge160" class="edge"><title>Node49&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1118.68,-414.295C1126.41,-373.346 1148.73,-255.051 1157.45,-208.826"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1160.9,-209.421 1159.31,-198.946 1154.02,-208.123 1160.9,-209.421"/>
+<path fill="none" stroke="midnightblue" d="M900.248,-414.295C889.431,-373.346 858.183,-255.051 845.973,-208.826"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="849.301,-207.72 843.363,-198.946 842.533,-209.508 849.301,-207.72"/>
 </g>
 <!-- Node50&#45;&gt;Node7 -->
 <g id="edge174" class="edge"><title>Node50&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M1622.51,-1085.39C1669.33,-1066.54 1739,-1028.26 1739,-967.5 1739,-967.5 1739,-967.5 1739,-658 1739,-625.943 1739.86,-588.639 1740.45,-566.747"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1743.96,-566.651 1740.74,-556.557 1736.96,-566.454 1743.96,-566.651"/>
+<path fill="none" stroke="midnightblue" d="M3030.38,-1085.36C3078.95,-1066.79 3150,-1029.09 3150,-967.5 3150,-967.5 3150,-967.5 3150,-658 3150,-627.902 3154.8,-611.418 3131,-593 3074.47,-549.26 1990.49,-547.621 1722.52,-547.887"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1722.21,-544.387 1712.22,-547.898 1722.22,-551.387 1722.21,-544.387"/>
+</g>
+<!-- Node50&#45;&gt;Node17 -->
+<g id="edge175" class="edge"><title>Node50&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M3042.27,-1093.31C3113.21,-1082.02 3226,-1050.96 3226,-967.5 3226,-967.5 3226,-967.5 3226,-188 3226,-157.205 3225.96,-142.34 3202,-123 3152.59,-83.1238 2956.9,-74.7337 2878.62,-72.9694"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2878.45,-69.4653 2868.38,-72.7618 2878.31,-76.4639 2878.45,-69.4653"/>
 </g>
 <!-- Node50&#45;&gt;Node27 -->
-<g id="edge176" class="edge"><title>Node50&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1596.02,-1085.23C1618.16,-1062.55 1657,-1015.89 1657,-967.5 1657,-967.5 1657,-967.5 1657,-658 1657,-627.902 1657.49,-615.939 1638,-593 1576.74,-520.882 1525.95,-551.608 1446,-501 1412.63,-479.877 1406.9,-470.809 1377,-445 1343.67,-416.222 1333.67,-410.543 1304,-378 1250.21,-319 1195.53,-241.003 1172.42,-207.03"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1175.27,-204.992 1166.77,-198.667 1169.47,-208.912 1175.27,-204.992"/>
+<g id="edge177" class="edge"><title>Node50&#45;&gt;Node27</title>
+<path fill="none" stroke="midnightblue" d="M2929.64,-1094.55C2643.03,-1068.78 1346.43,-944.828 981,-781 903.471,-746.243 833,-744.963 833,-660 833,-660 833,-660 833,-546 833,-462.281 951.684,-518.372 992,-445 1043.06,-352.076 914.064,-243.515 861.812,-204.708"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="863.705,-201.757 853.564,-198.69 859.579,-207.412 863.705,-201.757"/>
 </g>
 <!-- Node50&#45;&gt;Node44 -->
 <g id="edge173" class="edge"><title>Node50&#45;&gt;Node44</title>
-<path fill="none" stroke="midnightblue" d="M1551.27,-1085.4C1531.26,-1075.9 1504.65,-1063.28 1482.95,-1052.98"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1484.2,-1049.7 1473.67,-1048.58 1481.2,-1056.03 1484.2,-1049.7"/>
+<path fill="none" stroke="midnightblue" d="M2929.88,-1096.71C2718.91,-1086.21 1973.79,-1049.12 1746.39,-1037.8"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1746.44,-1034.3 1736.27,-1037.3 1746.09,-1041.29 1746.44,-1034.3"/>
 </g>
 <!-- Node50&#45;&gt;Node46 -->
-<g id="edge175" class="edge"><title>Node50&#45;&gt;Node46</title>
-<path fill="none" stroke="midnightblue" d="M1581,-1085.24C1581,-1061.03 1581,-1010.35 1581,-967.5 1581,-967.5 1581,-967.5 1581,-714 1581,-681.915 1583.15,-644.62 1584.63,-622.737"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1588.14,-622.773 1585.35,-612.552 1581.15,-622.281 1588.14,-622.773"/>
+<g id="edge176" class="edge"><title>Node50&#45;&gt;Node46</title>
+<path fill="none" stroke="midnightblue" d="M3004.01,-1085.4C3030.02,-1063.3 3075,-1017.8 3075,-967.5 3075,-967.5 3075,-967.5 3075,-714 3075,-681.927 3076.72,-644.628 3077.9,-622.741"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3081.41,-622.735 3078.48,-612.554 3074.42,-622.341 3081.41,-622.735"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/auto__schedule_8h_source.html b/docs/api/doxygen/auto__schedule_8h_source.html
index d3b1a9b..1207eb4 100644
--- a/docs/api/doxygen/auto__schedule_8h_source.html
+++ b/docs/api/doxygen/auto__schedule_8h_source.html
@@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1TuningOptionsNode_html_ade4f4a9a5dda968e8a81a43c8d8b597e"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#ade4f4a9a5dda968e8a81a43c8d8b597e">tvm::auto_scheduler::TuningOptionsNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> auto_schedule.h:64</div></div>
 <div class="ttc" id="measure_8h_html"><div class="ttname"><a href="measure_8h.html">measure.h</a></div><div class="ttdoc">Distributed measurement infrastructure to measure the runtime costs of tensor programs. These functions are responsible for building the tvm module, uploading it to remote devices, recording the running time costs, and checking the correctness of the output. </div></div>
 <div class="ttc" id="object_8h_html_ac6e7295a4999e2c8e4a2c990beca887a"><div class="ttname"><a href="object_8h.html#ac6e7295a4999e2c8e4a2c990beca887a">TVM_DEFINE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:700</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:206</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:207</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1TuningOptionsNode_html_af6f3c49598d8377e02df4cd4d43ce732"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#af6f3c49598d8377e02df4cd4d43ce732">tvm::auto_scheduler::TuningOptionsNode::num_measure_trials</a></div><div class="ttdeci">int num_measure_trials</div><div class="ttdoc">The number of total measurement trials. </div><div class="ttdef"><b>Definition:</b> auto_schedule.h:40</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1TuningOptionsNode_html_a355d86b2c38f0827ae1b158753d1daa2"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#a355d86b2c38f0827ae1b158753d1daa2">tvm::auto_scheduler::TuningOptionsNode::runner</a></div><div class="ttdeci">ProgramRunner runner</div><div class="ttdoc">ProgramRunner which runs the program and measures time costs. </div><div class="ttdef"><b>Definition:</b> auto_schedule.h:50</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1ProgramBuilder_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1ProgramBuilder.html">tvm::auto_scheduler::ProgramBuilder</a></div><div class="ttdoc">Managed reference to ProgramBuilderNode. </div><div class="ttdef"><b>Definition:</b> measure.h:261</div></div>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode-members.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode-members.html
index 5b312cc..84a1c0b 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode-members.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode-members.html
@@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <p>This is the complete list of members for <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a>, including all inherited members.</p>
 <table class="directory">
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a1fd921f0858b1e157fba3c6a201ae424">_type_key</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc">measured_states_set_</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef">measured_states_set_</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f">measured_states_throughputs_</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b">measured_states_vector_</a></td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#abc2529d0b1cd485876e48037dd19dde1">PreloadMeasuredStates</a>(const String &amp;log_file)</td><td class="entry"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></td><td class="entry"></td></tr>
diff --git a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html
index 0fc4607..eee3ade 100644
--- a/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html
+++ b/docs/api/doxygen/classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html
@@ -147,9 +147,9 @@ Static Public Attributes</h2></td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
 Protected Attributes</h2></td></tr>
-<tr class="memitem:acd9874846a09fdbd21ba9feb5e6f1fcc"><td class="memItemLeft" align="right" valign="top">std::unordered_set&lt; <a class="el" href="classtvm_1_1runtime_1_1String.html">String</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc">measured_states_set_</a></td></tr>
-<tr class="memdesc:acd9874846a09fdbd21ba9feb5e6f1fcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">The set of already measured states. We store the string format of a state for redundancy check. This is used to make sure a measured state will never be measured again.  <a href="#acd9874846a09fdbd21ba9feb5e6f1fcc">More...</a><br /></td></tr>
-<tr class="separator:acd9874846a09fdbd21ba9feb5e6f1fcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab73283e1afd57f212c57340eacf0eef"><td class="memItemLeft" align="right" valign="top">std::unordered_set&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef">measured_states_set_</a></td></tr>
+<tr class="memdesc:aab73283e1afd57f212c57340eacf0eef"><td class="mdescLeft">&#160;</td><td class="mdescRight">The set of already measured states. We store the string format of a state for redundancy check. This is used to make sure a measured state will never be measured again.  <a href="#aab73283e1afd57f212c57340eacf0eef">More...</a><br /></td></tr>
+<tr class="separator:aab73283e1afd57f212c57340eacf0eef"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aab68b70a8b21b353746921487c1cb29b"><td class="memItemLeft" align="right" valign="top">std::vector&lt; <a class="el" href="classtvm_1_1auto__scheduler_1_1State.html">State</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b">measured_states_vector_</a></td></tr>
 <tr class="memdesc:aab68b70a8b21b353746921487c1cb29b"><td class="mdescLeft">&#160;</td><td class="mdescRight">The array of already measured states. The good states can be used as the initial population in evolutionary search.  <a href="#aab68b70a8b21b353746921487c1cb29b">More...</a><br /></td></tr>
 <tr class="separator:aab68b70a8b21b353746921487c1cb29b"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -337,7 +337,7 @@ Protected Attributes</h2></td></tr>
 
 </div>
 </div>
-<a class="anchor" id="acd9874846a09fdbd21ba9feb5e6f1fcc"></a>
+<a class="anchor" id="aab73283e1afd57f212c57340eacf0eef"></a>
 <div class="memitem">
 <div class="memproto">
 <table class="mlabels">
@@ -345,7 +345,7 @@ Protected Attributes</h2></td></tr>
   <td class="mlabels-left">
       <table class="memname">
         <tr>
-          <td class="memname">std::unordered_set&lt;<a class="el" href="classtvm_1_1runtime_1_1String.html">String</a>&gt; tvm::auto_scheduler::SearchPolicyNode::measured_states_set_</td>
+          <td class="memname">std::unordered_set&lt;std::string&gt; tvm::auto_scheduler::SearchPolicyNode::measured_states_set_</td>
         </tr>
       </table>
   </td>
diff --git a/docs/api/doxygen/functions_m.html b/docs/api/doxygen/functions_m.html
index ddb95fb..584e23b 100644
--- a/docs/api/doxygen/functions_m.html
+++ b/docs/api/doxygen/functions_m.html
@@ -223,7 +223,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#a3ba0915aabeb33a6adbcdceb4e6a43b9">tvm::auto_scheduler::TuningOptionsNode</a>
 </li>
 <li>measured_states_set_
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc">tvm::auto_scheduler::SearchPolicyNode</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef">tvm::auto_scheduler::SearchPolicyNode</a>
 </li>
 <li>measured_states_throughputs_
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f">tvm::auto_scheduler::SearchPolicyNode</a>
diff --git a/docs/api/doxygen/functions_vars_m.html b/docs/api/doxygen/functions_vars_m.html
index 7ab72c3..d87fe06 100644
--- a/docs/api/doxygen/functions_vars_m.html
+++ b/docs/api/doxygen/functions_vars_m.html
@@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#a3ba0915aabeb33a6adbcdceb4e6a43b9">tvm::auto_scheduler::TuningOptionsNode</a>
 </li>
 <li>measured_states_set_
-: <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc">tvm::auto_scheduler::SearchPolicyNode</a>
+: <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef">tvm::auto_scheduler::SearchPolicyNode</a>
 </li>
 <li>measured_states_throughputs_
 : <a class="el" href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f">tvm::auto_scheduler::SearchPolicyNode</a>
diff --git a/docs/api/doxygen/measure_8h_source.html b/docs/api/doxygen/measure_8h_source.html
index a75d01f..a2062bb 100644
--- a/docs/api/doxygen/measure_8h_source.html
+++ b/docs/api/doxygen/measure_8h_source.html
@@ -135,7 +135,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1MeasureCallback_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1MeasureCallback.html">tvm::auto_scheduler::MeasureCallback</a></div><div class="ttdoc">Managed reference to MeasureCallbackNode. </div><div class="ttdef"><b>Definition:</b> measure.h:229</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1ProgramMeasurerNode_html_a2fa6c1e2c74e0a8c56e0920756ac73cc"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1ProgramMeasurerNode.html#a2fa6c1e2c74e0a8c56e0920756ac73cc">tvm::auto_scheduler::ProgramMeasurerNode::best_state</a></div><div class="ttdeci">std::unordered_map&lt; std::string, State &gt; best_state</div><div class="ttdoc">Workload key to best state map. </div><div class="ttdef"><b>Definition:</b> measure.h:436</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1BuildResultNode_html_afbca497adcea1b11535cc0f25802e91e"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1BuildResultNode.html#afbca497adcea1b11535cc0f25802e91e">tvm::auto_scheduler::BuildResultNode::args</a></div><div class="ttdeci">Array&lt; te::Tensor &gt; args</div><div class="ttdoc">The arguments. </div><div class="ttdef"><b>Definition:</b> measure.h:121</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:206</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:207</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1LocalBuilderNode_html_ad5098d60dab7232681b56093922244ff"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1LocalBuilderNode.html#ad5098d60dab7232681b56093922244ff">tvm::auto_scheduler::LocalBuilderNode::build_func</a></div><div class="ttdeci">String build_func</div><div class="ttdoc">Build function. </div><div class="ttdef"><b>Definition:</b> measure.h:312</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1RPCRunnerNode_html_ad5c143b5ce09e135fb8c318d3c0042b9"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1RPCRunnerNode.html#ad5c143b5ce09e135fb8c318d3c0042b9">tvm::auto_scheduler::RPCRunnerNode::priority</a></div><div class="ttdeci">int priority</div><div class="ttdoc">The priority of this run request, larger is more prior. </div><div class="ttdef"><b>Definition:</b> measure.h:385</div></div>
 <div class="ttc" id="namespacetvm_1_1auto__scheduler_html_acd2b9ff22c8ef2f009aef57f80926b9aafcd1af9ec66cb99f2d106d7fdc865c8b"><div class="ttname"><a href="namespacetvm_1_1auto__scheduler.html#acd2b9ff22c8ef2f009aef57f80926b9aafcd1af9ec66cb99f2d106d7fdc865c8b">tvm::auto_scheduler::MeasureErrorNO::kNoError</a></div><div class="ttdoc">No error. </div></div>
diff --git a/docs/api/doxygen/measure__record_8h_source.html b/docs/api/doxygen/measure__record_8h_source.html
index bf97c59..31918e0 100644
--- a/docs/api/doxygen/measure__record_8h_source.html
+++ b/docs/api/doxygen/measure__record_8h_source.html
@@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="ttc" id="measure_8h_html"><div class="ttname"><a href="measure_8h.html">measure.h</a></div><div class="ttdoc">Distributed measurement infrastructure to measure the runtime costs of tensor programs. These functions are responsible for building the tvm module, uploading it to remote devices, recording the running time costs, and checking the correctness of the output. </div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1String_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html">tvm::runtime::String</a></div><div class="ttdoc">Reference to string objects. </div><div class="ttdef"><b>Definition:</b> container.h:1178</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1MeasureCallback_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1MeasureCallback.html">tvm::auto_scheduler::MeasureCallback</a></div><div class="ttdoc">Managed reference to MeasureCallbackNode. </div><div class="ttdef"><b>Definition:</b> measure.h:229</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:206</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:207</div></div>
 <div class="ttc" id="namespacetvm_1_1auto__scheduler_html_af78d2ec1dd6edd0636ba56d921a8b00f"><div class="ttname"><a href="namespacetvm_1_1auto__scheduler.html#af78d2ec1dd6edd0636ba56d921a8b00f">tvm::auto_scheduler::WriteMeasureRecords</a></div><div class="ttdeci">void WriteMeasureRecords(std::ostream *os, const Array&lt; MeasureInput &gt; &amp;inputs, const Array&lt; MeasureResult &gt; &amp;results)</div><div class="ttdoc">Append measure records to an output stream. </div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1RecordReader_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1RecordReader.html">tvm::auto_scheduler::RecordReader</a></div><div class="ttdoc">Managed reference to RecordReaderNode. </div><div class="ttdef"><b>Definition:</b> measure_record.h:103</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1RecordReaderNode_html_af196412cddedace59401d2f16f946871"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1RecordReaderNode.html#af196412cddedace59401d2f16f946871">tvm::auto_scheduler::RecordReaderNode::infile</a></div><div class="ttdeci">std::ifstream infile</div><div class="ttdoc">The reading file stream. </div><div class="ttdef"><b>Definition:</b> measure_record.h:71</div></div>
diff --git a/docs/api/doxygen/search/all_d.js b/docs/api/doxygen/search/all_d.js
index a91605e..e222838 100644
--- a/docs/api/doxygen/search/all_d.js
+++ b/docs/api/doxygen/search/all_d.js
@@ -71,7 +71,7 @@ var searchData=
   ['measure_5frecord_2eh',['measure_record.h',['../measure__record_8h.html',1,'']]],
   ['measurecallback',['MeasureCallback',['../classtvm_1_1auto__scheduler_1_1MeasureCallback.html',1,'tvm::auto_scheduler']]],
   ['measurecallbacknode',['MeasureCallbackNode',['../classtvm_1_1auto__scheduler_1_1MeasureCallbackNode.html',1,'tvm::auto_scheduler']]],
-  ['measured_5fstates_5fset_5f',['measured_states_set_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc',1,'tvm::auto_scheduler::SearchPolicyNode']]],
+  ['measured_5fstates_5fset_5f',['measured_states_set_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['measured_5fstates_5fthroughputs_5f',['measured_states_throughputs_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['measured_5fstates_5fvector_5f',['measured_states_vector_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['measureerrorno',['MeasureErrorNO',['../namespacetvm_1_1auto__scheduler.html#acd2b9ff22c8ef2f009aef57f80926b9a',1,'tvm::auto_scheduler']]],
diff --git a/docs/api/doxygen/search/variables_c.js b/docs/api/doxygen/search/variables_c.js
index 0b134c2..bf26ba4 100644
--- a/docs/api/doxygen/search/variables_c.js
+++ b/docs/api/doxygen/search/variables_c.js
@@ -15,7 +15,7 @@ var searchData=
   ['max_5fvalue',['max_value',['../classtvm_1_1arith_1_1ConstIntBoundNode.html#a7187224ffaf688dd1aa0f6069b393f92',1,'tvm::arith::ConstIntBoundNode']]],
   ['max_5fvthread_5fextent',['max_vthread_extent',['../classtvm_1_1auto__scheduler_1_1HardwareParamsNode.html#a566e92938030920506a1b246ec9a0ac4',1,'tvm::auto_scheduler::HardwareParamsNode']]],
   ['measure_5fcallbacks',['measure_callbacks',['../classtvm_1_1auto__scheduler_1_1TuningOptionsNode.html#a3ba0915aabeb33a6adbcdceb4e6a43b9',1,'tvm::auto_scheduler::TuningOptionsNode']]],
-  ['measured_5fstates_5fset_5f',['measured_states_set_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc',1,'tvm::auto_scheduler::SearchPolicyNode']]],
+  ['measured_5fstates_5fset_5f',['measured_states_set_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['measured_5fstates_5fthroughputs_5f',['measured_states_throughputs_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['measured_5fstates_5fvector_5f',['measured_states_vector_',['../classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b',1,'tvm::auto_scheduler::SearchPolicyNode']]],
   ['memo_5f',['memo_',['../classtvm_1_1relay_1_1ExprMutator.html#a605c320fa66c769991738380bc8a69c8',1,'tvm::relay::ExprMutator']]],
diff --git a/docs/api/doxygen/search__policy_8h.html b/docs/api/doxygen/search__policy_8h.html
index b710a13..d9baf52 100644
--- a/docs/api/doxygen/search__policy_8h.html
+++ b/docs/api/doxygen/search__policy_8h.html
@@ -97,12 +97,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <a href="#details">More...</a></p>
 <div class="textblock"><code>#include &lt;<a class="el" href="search__task_8h_source.html">tvm/auto_scheduler/search_task.h</a>&gt;</code><br />
 <code>#include &lt;<a class="el" href="node_8h_source.html">tvm/node/node.h</a>&gt;</code><br />
+<code>#include &lt;string&gt;</code><br />
 <code>#include &lt;unordered_set&gt;</code><br />
 <code>#include &lt;vector&gt;</code><br />
 </div><div class="textblock"><div class="dynheader">
 Include dependency graph for search_policy.h:</div>
 <div class="dyncontent">
-<div class="center"><iframe scrolling="no" frameborder="0" src="search__policy_8h__incl.svg" width="4276" height="1499"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
+<div class="center"><iframe scrolling="no" frameborder="0" src="search__policy_8h__incl.svg" width="4487" height="1499"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
 </div>
 </div>
 </div><div class="textblock"><div class="dynheader">
diff --git a/docs/api/doxygen/search__policy_8h__incl.svg b/docs/api/doxygen/search__policy_8h__incl.svg
index 1614379..716112d 100644
--- a/docs/api/doxygen/search__policy_8h__incl.svg
+++ b/docs/api/doxygen/search__policy_8h__incl.svg
@@ -4,1224 +4,1229 @@
 <!-- Generated by graphviz version 2.38.0 (20140413.2041)
  -->
 <!-- Title: include/tvm/auto_scheduler/search_policy.h Pages: 1 -->
-<svg width="3207pt" height="1124pt"
- viewBox="0.00 0.00 3207.00 1124.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+<svg width="3365pt" height="1124pt"
+ viewBox="0.00 0.00 3365.00 1124.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 <g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 1120)">
 <title>include/tvm/auto_scheduler/search_policy.h</title>
-<polygon fill="white" stroke="none" points="-4,4 -4,-1120 3203,-1120 3203,4 -4,4"/>
+<polygon fill="white" stroke="none" points="-4,4 -4,-1120 3361,-1120 3361,4 -4,4"/>
 <!-- Node1 -->
 <g id="node1" class="node"><title>Node1</title>
-<polygon fill="#bfbfbf" stroke="black" points="20.5,-1085.5 20.5,-1115.5 169.5,-1115.5 169.5,-1085.5 20.5,-1085.5"/>
-<text text-anchor="start" x="28.5" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/auto_scheduler</text>
-<text text-anchor="middle" x="95" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_policy.h</text>
+<polygon fill="#bfbfbf" stroke="black" points="632.5,-1085.5 632.5,-1115.5 781.5,-1115.5 781.5,-1085.5 632.5,-1085.5"/>
+<text text-anchor="start" x="640.5" y="-1103.5" font-family="Helvetica,sans-Serif" font-size="10.00">include/tvm/auto_scheduler</text>
+<text text-anchor="middle" x="707" y="-1092.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_policy.h</text>
 </g>
 <!-- Node2 -->
 <g id="node2" class="node"><title>Node2</title>
 <g id="a_node2"><a xlink:href="search__task_8h.html" target="_top" xlink:title="Meta information and hardware parameters for a search task. ">
-<polygon fill="white" stroke="black" points="96,-1018.5 96,-1048.5 208,-1048.5 208,-1018.5 96,-1018.5"/>
-<text text-anchor="start" x="104" y="-1036.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="152" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_task.h</text>
+<polygon fill="white" stroke="black" points="651,-1018.5 651,-1048.5 763,-1048.5 763,-1018.5 651,-1018.5"/>
+<text text-anchor="start" x="659" y="-1036.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="707" y="-1025.5" font-family="Helvetica,sans-Serif" font-size="10.00">/search_task.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node2 -->
 <g id="edge1" class="edge"><title>Node1&#45;&gt;Node2</title>
-<path fill="none" stroke="midnightblue" d="M107.368,-1085.4C114.838,-1076.88 124.511,-1065.85 132.942,-1056.23"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="135.694,-1058.4 139.656,-1048.58 130.431,-1053.79 135.694,-1058.4"/>
+<path fill="none" stroke="midnightblue" d="M707,-1085.4C707,-1077.64 707,-1067.81 707,-1058.86"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="710.5,-1058.58 707,-1048.58 703.5,-1058.58 710.5,-1058.58"/>
 </g>
 <!-- Node7 -->
 <g id="node7" class="node"><title>Node7</title>
 <g id="a_node7"><a xlink:href="node_8h.html" target="_top" xlink:title="Definitions and helper macros for IR/AST nodes. ">
-<polygon fill="white" stroke="black" points="1593,-537.5 1593,-556.5 1691,-556.5 1691,-537.5 1593,-537.5"/>
-<text text-anchor="middle" x="1642" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
+<polygon fill="white" stroke="black" points="1713,-537.5 1713,-556.5 1811,-556.5 1811,-537.5 1713,-537.5"/>
+<text text-anchor="middle" x="1762" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/node.h</text>
 </a>
 </g>
 </g>
 <!-- Node1&#45;&gt;Node7 -->
 <g id="edge172" class="edge"><title>Node1&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M169.547,-1099.04C555.298,-1096.16 2307,-1077.05 2307,-967.5 2307,-967.5 2307,-967.5 2307,-898.5 2307,-810.637 2231,-803.863 2231,-716 2231,-716 2231,-716 2231,-658 2231,-604.54 1851.21,-566.008 1701.57,-552.901"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1701.47,-549.379 1691.2,-552.001 1700.86,-556.353 1701.47,-549.379"/>
+<path fill="none" stroke="midnightblue" d="M781.822,-1099.39C1187.8,-1098.33 3108,-1086.97 3108,-967.5 3108,-967.5 3108,-967.5 3108,-770 3108,-637.586 2080.8,-567.102 1821.09,-551.398"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1821.29,-547.904 1811.1,-550.798 1820.87,-554.891 1821.29,-547.904"/>
+</g>
+<!-- Node17 -->
+<g id="node17" class="node"><title>Node17</title>
+<polygon fill="white" stroke="#bfbfbf" points="3050,-62 3050,-81 3094,-81 3094,-62 3050,-62"/>
+<text text-anchor="middle" x="3072" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
+</g>
+<!-- Node1&#45;&gt;Node17 -->
+<g id="edge173" class="edge"><title>Node1&#45;&gt;Node17</title>
+<path fill="none" stroke="midnightblue" d="M781.69,-1099.79C1212.13,-1100.95 3357,-1100.11 3357,-967.5 3357,-967.5 3357,-967.5 3357,-188 3357,-152.35 3339.88,-142.445 3310,-123 3245.82,-81.2326 3153.18,-73.2959 3104.58,-72.2208"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3104.39,-68.718 3094.34,-72.0829 3104.29,-75.7173 3104.39,-68.718"/>
 </g>
 <!-- Node27 -->
 <g id="node27" class="node"><title>Node27</title>
-<polygon fill="white" stroke="#bfbfbf" points="501.5,-179.5 501.5,-198.5 548.5,-198.5 548.5,-179.5 501.5,-179.5"/>
-<text text-anchor="middle" x="525" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
+<polygon fill="white" stroke="#bfbfbf" points="916.5,-179.5 916.5,-198.5 963.5,-198.5 963.5,-179.5 916.5,-179.5"/>
+<text text-anchor="middle" x="940" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">vector</text>
 </g>
 <!-- Node1&#45;&gt;Node27 -->
-<g id="edge174" class="edge"><title>Node1&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M75.3159,-1085.31C47.4899,-1063.43 0,-1018.6 0,-967.5 0,-967.5 0,-967.5 0,-546 0,-307.589 375.458,-217.816 491.347,-195.785"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="492.227,-199.181 501.422,-193.917 490.951,-192.299 492.227,-199.181"/>
+<g id="edge175" class="edge"><title>Node1&#45;&gt;Node27</title>
+<path fill="none" stroke="midnightblue" d="M632.45,-1099.42C465.477,-1097.23 76,-1080.05 76,-967.5 76,-967.5 76,-967.5 76,-658 76,-396.596 430.75,-366.768 557,-291 601.344,-264.388 610.082,-251.78 659,-235 745.092,-205.469 852.79,-195.137 906.417,-191.665"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="906.63,-195.158 916.399,-191.058 906.206,-188.171 906.63,-195.158"/>
 </g>
 <!-- Node47 -->
 <g id="node47" class="node"><title>Node47</title>
-<polygon fill="white" stroke="#bfbfbf" points="66,-593.5 66,-612.5 152,-612.5 152,-593.5 66,-593.5"/>
-<text text-anchor="middle" x="109" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_set</text>
+<polygon fill="white" stroke="#bfbfbf" points="104,-593.5 104,-612.5 190,-612.5 190,-593.5 104,-593.5"/>
+<text text-anchor="middle" x="147" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_set</text>
 </g>
 <!-- Node1&#45;&gt;Node47 -->
-<g id="edge173" class="edge"><title>Node1&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M84.2787,-1085.33C67.7672,-1062.05 38,-1013.68 38,-967.5 38,-967.5 38,-967.5 38,-714 38,-675.101 69.7296,-639.052 90.7662,-619.426"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="93.114,-622.021 98.2166,-612.736 88.4374,-616.813 93.114,-622.021"/>
+<g id="edge174" class="edge"><title>Node1&#45;&gt;Node47</title>
+<path fill="none" stroke="midnightblue" d="M632.307,-1097.07C473.141,-1091.41 111.027,-1075.74 62,-1049 22.044,-1027.21 0,-1013.01 0,-967.5 0,-967.5 0,-967.5 0,-770 0,-697.528 79.499,-641.873 121.57,-617.494"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="123.429,-620.464 130.423,-612.506 119.993,-614.366 123.429,-620.464"/>
 </g>
 <!-- Node3 -->
 <g id="node3" class="node"><title>Node3</title>
 <g id="a_node3"><a xlink:href="compute__dag_8h.html" target="_top" xlink:title="The auto&#45;scheduler&#39;s computational graph and related program analyses. ">
-<polygon fill="white" stroke="black" points="356,-951.5 356,-981.5 468,-981.5 468,-951.5 356,-951.5"/>
-<text text-anchor="start" x="364" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="412" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">/compute_dag.h</text>
+<polygon fill="white" stroke="black" points="219,-951.5 219,-981.5 331,-981.5 331,-951.5 219,-951.5"/>
+<text text-anchor="start" x="227" y="-969.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="275" y="-958.5" font-family="Helvetica,sans-Serif" font-size="10.00">/compute_dag.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node3 -->
 <g id="edge2" class="edge"><title>Node2&#45;&gt;Node3</title>
-<path fill="none" stroke="midnightblue" d="M208.096,-1018.48C248.537,-1008.37 303.265,-994.684 345.841,-984.04"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="346.704,-987.432 355.556,-981.611 345.006,-980.641 346.704,-987.432"/>
+<path fill="none" stroke="midnightblue" d="M650.966,-1024.07C571.441,-1012.1 426.1,-990.235 341.309,-977.477"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="341.686,-973.995 331.277,-975.968 340.645,-980.917 341.686,-973.995"/>
 </g>
 <!-- Node48 -->
 <g id="node48" class="node"><title>Node48</title>
 <g id="a_node48"><a xlink:href="target_8h.html" target="_top" xlink:title="Compilation target object. ">
-<polygon fill="white" stroke="black" points="280.5,-649.5 280.5,-668.5 389.5,-668.5 389.5,-649.5 280.5,-649.5"/>
-<text text-anchor="middle" x="335" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target.h</text>
+<polygon fill="white" stroke="black" points="951.5,-649.5 951.5,-668.5 1060.5,-668.5 1060.5,-649.5 951.5,-649.5"/>
+<text text-anchor="middle" x="1006" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target.h</text>
 </a>
 </g>
 </g>
 <!-- Node2&#45;&gt;Node48 -->
 <g id="edge156" class="edge"><title>Node2&#45;&gt;Node48</title>
-<path fill="none" stroke="midnightblue" d="M158.95,-1018.35C187.337,-960.571 294.47,-742.499 326.135,-678.046"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="329.426,-679.283 330.695,-668.764 323.144,-676.196 329.426,-679.283"/>
+<path fill="none" stroke="midnightblue" d="M763.118,-1028.96C890.001,-1019.43 1188,-987.744 1188,-900.5 1188,-900.5 1188,-900.5 1188,-770 1188,-712.424 1120.46,-684.175 1067.67,-670.889"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1068.21,-667.419 1057.67,-668.503 1066.58,-674.228 1068.21,-667.419"/>
 </g>
 <!-- Node4 -->
 <g id="node4" class="node"><title>Node4</title>
 <g id="a_node4"><a xlink:href="loop__state_8h.html" target="_top" xlink:title="The definition of the &quot;state&quot; in the search. ">
-<polygon fill="white" stroke="black" points="554,-884.5 554,-914.5 666,-914.5 666,-884.5 554,-884.5"/>
-<text text-anchor="start" x="562" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="610" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">/loop_state.h</text>
+<polygon fill="white" stroke="black" points="386,-884.5 386,-914.5 498,-914.5 498,-884.5 386,-884.5"/>
+<text text-anchor="start" x="394" y="-902.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="442" y="-891.5" font-family="Helvetica,sans-Serif" font-size="10.00">/loop_state.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node4 -->
 <g id="edge3" class="edge"><title>Node3&#45;&gt;Node4</title>
-<path fill="none" stroke="midnightblue" d="M454.963,-951.396C485.061,-941.515 525.462,-928.252 557.475,-917.743"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="558.711,-921.021 567.121,-914.577 556.528,-914.37 558.711,-921.021"/>
+<path fill="none" stroke="midnightblue" d="M311.237,-951.396C336.184,-941.686 369.525,-928.709 396.296,-918.289"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="397.785,-921.465 405.834,-914.577 395.246,-914.942 397.785,-921.465"/>
 </g>
 <!-- Node13 -->
 <g id="node13" class="node"><title>Node13</title>
 <g id="a_node13"><a xlink:href="c__runtime__api_8h.html" target="_top" xlink:title="tvm/runtime/c_runtime\l_api.h">
-<polygon fill="white" stroke="black" points="1392.5,-56.5 1392.5,-86.5 1519.5,-86.5 1519.5,-56.5 1392.5,-56.5"/>
-<text text-anchor="start" x="1400.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
-<text text-anchor="middle" x="1456" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
+<polygon fill="white" stroke="black" points="1226.5,-56.5 1226.5,-86.5 1353.5,-86.5 1353.5,-56.5 1226.5,-56.5"/>
+<text text-anchor="start" x="1234.5" y="-74.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/c_runtime</text>
+<text text-anchor="middle" x="1290" y="-63.5" font-family="Helvetica,sans-Serif" font-size="10.00">_api.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node13 -->
 <g id="edge150" class="edge"><title>Node3&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M468.291,-959.502C534.964,-951.577 641.249,-936.113 675,-915 713.358,-891.005 736,-878.744 736,-833.5 736,-833.5 736,-833.5 736,-658 736,-461.388 926.854,-497.188 1105,-414 1184,-377.112 1207.43,-374.721 1293,-358 1456.02,-326.142 1515.89,-395.193 1665,-322 1707.86,-300.964 1749.98,-277.377 1728,-235 1686.59,-155.185 1587.17,-111.045 1520.7,-89.5619"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1521.73,-86.2177 1511.14,-86.5552 1519.63,-92.895 1521.73,-86.2177"/>
+<path fill="none" stroke="midnightblue" d="M271.603,-951.337C266.138,-927.272 256,-876.796 256,-833.5 256,-833.5 256,-833.5 256,-714 256,-609.712 332,-596.288 332,-492 332,-492 332,-492 332,-428.5 332,-314.754 304.386,-255.017 389,-179 450.214,-124.006 1011.86,-87.8295 1216.15,-76.394"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1216.4,-79.8858 1226.19,-75.836 1216.01,-72.8966 1216.4,-79.8858"/>
 </g>
 <!-- Node19 -->
 <g id="node19" class="node"><title>Node19</title>
-<polygon fill="white" stroke="#bfbfbf" points="587,-62 587,-81 629,-81 629,-62 587,-62"/>
-<text text-anchor="middle" x="608" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
+<polygon fill="white" stroke="#bfbfbf" points="767,-62 767,-81 809,-81 809,-62 767,-62"/>
+<text text-anchor="middle" x="788" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">utility</text>
 </g>
 <!-- Node3&#45;&gt;Node19 -->
 <g id="edge154" class="edge"><title>Node3&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M355.795,-961.045C283.415,-954.391 162.575,-939.896 126,-915 90.8704,-891.088 76,-875.996 76,-833.5 76,-833.5 76,-833.5 76,-714 76,-638.314 38,-623.686 38,-548 38,-548 38,-548 38,-188 38,-149.577 60.8217,-140.555 95,-123 179.786,-79.4503 478.66,-73.4103 576.638,-72.6097"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="576.812,-76.1087 586.788,-72.5401 576.764,-69.1089 576.812,-76.1087"/>
+<path fill="none" stroke="midnightblue" d="M237.073,-951.415C217.424,-942.882 193.872,-930.614 176,-915 94.9472,-844.186 38,-823.63 38,-716 38,-716 38,-716 38,-188 38,-126.562 101.038,-140.267 160,-123 273.906,-89.6424 646.013,-76.5493 756.681,-73.3357"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="756.951,-76.8295 766.848,-73.0471 756.753,-69.8323 756.951,-76.8295"/>
 </g>
 <!-- Node26 -->
 <g id="node26" class="node"><title>Node26</title>
-<polygon fill="white" stroke="#bfbfbf" points="2847.5,-179.5 2847.5,-198.5 2940.5,-198.5 2940.5,-179.5 2847.5,-179.5"/>
-<text text-anchor="middle" x="2894" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
+<polygon fill="white" stroke="#bfbfbf" points="398.5,-179.5 398.5,-198.5 491.5,-198.5 491.5,-179.5 398.5,-179.5"/>
+<text text-anchor="middle" x="445" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">unordered_map</text>
 </g>
 <!-- Node3&#45;&gt;Node26 -->
 <g id="edge152" class="edge"><title>Node3&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M468.158,-965.833C859.272,-967.797 3161,-973.408 3161,-833.5 3161,-833.5 3161,-833.5 3161,-305.5 3161,-214.63 3029.11,-194.438 2950.73,-190.463"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2950.65,-186.956 2940.51,-190.02 2950.35,-193.95 2950.65,-186.956"/>
+<path fill="none" stroke="midnightblue" d="M264.279,-951.328C247.767,-928.05 218,-879.68 218,-833.5 218,-833.5 218,-833.5 218,-658 218,-582.314 180,-567.686 180,-492 180,-492 180,-492 180,-367 180,-266.928 312.295,-219.906 389.936,-200.928"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="391.119,-204.244 400.046,-198.538 389.509,-197.432 391.119,-204.244"/>
 </g>
 <!-- Node3&#45;&gt;Node27 -->
 <g id="edge155" class="edge"><title>Node3&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M369.321,-951.356C323.964,-934.115 253.461,-900.597 214,-848 177.644,-799.54 180,-776.582 180,-716 180,-716 180,-716 180,-546 180,-368.377 283.86,-334.498 431,-235 450.4,-221.881 474.213,-210.525 493.017,-202.502"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="494.457,-205.693 502.343,-198.619 491.766,-199.231 494.457,-205.693"/>
+<path fill="none" stroke="midnightblue" d="M281.53,-951.388C302.993,-903.668 370,-743.516 370,-604 370,-604 370,-604 370,-546 370,-445.394 607.838,-277.557 699,-235 767.844,-202.862 857.852,-193.663 906.04,-191.039"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="906.408,-194.526 916.228,-190.55 906.072,-187.534 906.408,-194.526"/>
 </g>
 <!-- Node42 -->
 <g id="node42" class="node"><title>Node42</title>
 <g id="a_node42"><a xlink:href="schedule_8h.html" target="_top" xlink:title="Define a schedule. ">
-<polygon fill="white" stroke="black" points="2331.5,-761.5 2331.5,-780.5 2434.5,-780.5 2434.5,-761.5 2331.5,-761.5"/>
-<text text-anchor="middle" x="2383" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/schedule.h</text>
+<polygon fill="white" stroke="black" points="1233.5,-761.5 1233.5,-780.5 1336.5,-780.5 1336.5,-761.5 1233.5,-761.5"/>
+<text text-anchor="middle" x="1285" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/schedule.h</text>
 </a>
 </g>
 </g>
 <!-- Node3&#45;&gt;Node42 -->
 <g id="edge151" class="edge"><title>Node3&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M468.012,-963.913C760.866,-955.358 2109.14,-912.709 2283,-848 2317.38,-835.204 2349.76,-806.404 2367.92,-788.161"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2370.78,-790.238 2375.22,-780.618 2365.75,-785.37 2370.78,-790.238"/>
+<path fill="none" stroke="midnightblue" d="M331.103,-954.752C508.392,-920.786 1055.2,-816.027 1230.39,-782.462"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1231.25,-785.861 1240.41,-780.542 1229.93,-778.986 1231.25,-785.861"/>
 </g>
 <!-- Node3&#45;&gt;Node47 -->
 <g id="edge153" class="edge"><title>Node3&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M355.948,-964.828C269.625,-960.5 114,-938.181 114,-833.5 114,-833.5 114,-833.5 114,-714 114,-681.915 111.851,-644.62 110.371,-622.737"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="113.847,-622.281 109.654,-612.552 106.865,-622.773 113.847,-622.281"/>
+<path fill="none" stroke="midnightblue" d="M248.793,-951.409C234.14,-942.503 216.39,-929.878 204,-915 178.424,-884.289 166,-873.466 166,-833.5 166,-833.5 166,-833.5 166,-714 166,-681.489 157.841,-644.35 152.216,-622.61"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="155.541,-621.498 149.562,-612.751 148.782,-623.317 155.541,-621.498"/>
 </g>
 <!-- Node5 -->
 <g id="node5" class="node"><title>Node5</title>
-<polygon fill="white" stroke="#bfbfbf" points="543.5,-761.5 543.5,-780.5 638.5,-780.5 638.5,-761.5 543.5,-761.5"/>
-<text text-anchor="middle" x="591" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="436.5,-761.5 436.5,-780.5 531.5,-780.5 531.5,-761.5 436.5,-761.5"/>
+<text text-anchor="middle" x="484" y="-768.5" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/common.h</text>
 </g>
 <!-- Node4&#45;&gt;Node5 -->
 <g id="edge4" class="edge"><title>Node4&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M601.642,-884.484C596.283,-874.652 589.819,-860.992 587,-848 582.806,-828.674 584.884,-805.968 587.333,-790.44"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="590.786,-791.012 589.097,-780.553 583.895,-789.782 590.786,-791.012"/>
+<path fill="none" stroke="midnightblue" d="M446.655,-884.479C454.28,-861.514 469.428,-815.889 477.901,-790.37"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="481.253,-791.382 481.082,-780.789 474.609,-789.176 481.253,-791.382"/>
 </g>
 <!-- Node6 -->
 <g id="node6" class="node"><title>Node6</title>
 <g id="a_node6"><a xlink:href="transform__step_8h.html" target="_top" xlink:title="Transformation steps. These steps are used to manipulate LoopState. They are similar to the schedule ...">
-<polygon fill="white" stroke="red" points="596,-817.5 596,-847.5 708,-847.5 708,-817.5 596,-817.5"/>
-<text text-anchor="start" x="604" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
-<text text-anchor="middle" x="652" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform_step.h</text>
+<polygon fill="white" stroke="red" points="504,-817.5 504,-847.5 616,-847.5 616,-817.5 504,-817.5"/>
+<text text-anchor="start" x="512" y="-835.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/auto_scheduler</text>
+<text text-anchor="middle" x="560" y="-824.5" font-family="Helvetica,sans-Serif" font-size="10.00">/transform_step.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node6 -->
 <g id="edge5" class="edge"><title>Node4&#45;&gt;Node6</title>
-<path fill="none" stroke="midnightblue" d="M619.113,-884.396C624.452,-876.134 631.319,-865.507 637.396,-856.102"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="640.417,-857.875 642.904,-847.577 634.537,-854.076 640.417,-857.875"/>
+<path fill="none" stroke="midnightblue" d="M467.604,-884.396C484.536,-875.069 506.94,-862.728 525.445,-852.534"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="527.375,-855.467 534.446,-847.577 523.998,-849.336 527.375,-855.467"/>
 </g>
 <!-- Node9 -->
 <g id="node9" class="node"><title>Node9</title>
 <g id="a_node9"><a xlink:href="runtime_2container_8h.html" target="_top" xlink:title="Common POD(plain old data) container types. ">
-<polygon fill="white" stroke="black" points="2160,-235.5 2160,-254.5 2292,-254.5 2292,-235.5 2160,-235.5"/>
-<text text-anchor="middle" x="2226" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
+<polygon fill="white" stroke="black" points="2530,-235.5 2530,-254.5 2662,-254.5 2662,-235.5 2530,-235.5"/>
+<text text-anchor="middle" x="2596" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node4&#45;&gt;Node9 -->
 <g id="edge145" class="edge"><title>Node4&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M666.304,-898.339C936.189,-897.046 2098.54,-885.407 2443,-781 2490.64,-766.56 2515.11,-768.11 2540,-725 2588.99,-640.155 3040.68,-1267.31 2429,-414 2378.45,-343.484 2291.38,-285.244 2249.65,-259.793"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2251.37,-256.743 2240.99,-254.59 2247.76,-262.742 2251.37,-256.743"/>
+<path fill="none" stroke="midnightblue" d="M498.244,-898.804C733.112,-899.705 1658.59,-899.597 2417,-848 2788.73,-822.71 3067.96,-1001.55 3236,-669 3363.93,-415.833 2836.05,-291.139 2655,-256.376"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2655.59,-252.925 2645.11,-254.5 2654.28,-259.802 2655.59,-252.925"/>
 </g>
 <!-- Node4&#45;&gt;Node19 -->
 <g id="edge148" class="edge"><title>Node4&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M553.836,-897.287C445.444,-891.651 218,-862.386 218,-716 218,-716 218,-716 218,-546 218,-422.635 76,-430.865 76,-307.5 76,-307.5 76,-307.5 76,-188 76,-149.282 99.5543,-140.679 134,-123 211.727,-83.1064 483.674,-74.6665 576.596,-72.9336"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="576.83,-76.4302 586.768,-72.7578 576.709,-69.4312 576.83,-76.4302"/>
+<path fill="none" stroke="midnightblue" d="M417.464,-884.455C403.531,-875.483 386.609,-862.775 375,-848 294.192,-745.152 142,-438.296 142,-307.5 142,-307.5 142,-307.5 142,-188 142,-109.182 230.44,-141.731 307,-123 472.92,-82.4074 678.882,-74.4395 756.472,-72.8788"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="756.615,-76.3769 766.551,-72.6983 756.49,-69.378 756.615,-76.3769"/>
 </g>
 <!-- Node4&#45;&gt;Node26 -->
 <g id="edge147" class="edge"><title>Node4&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M666.011,-898.698C1036.8,-899.653 3123,-899.365 3123,-772 3123,-772 3123,-772 3123,-490 3123,-354.724 2974.06,-242.523 2916.41,-204.16"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2918.26,-201.19 2907.98,-198.645 2914.43,-207.048 2918.26,-201.19"/>
+<path fill="none" stroke="midnightblue" d="M424.679,-884.203C414.406,-874.873 401.891,-861.88 394,-848 353.389,-776.564 294,-574.173 294,-492 294,-492 294,-492 294,-305.5 294,-249.961 359.242,-217.532 403.957,-201.828"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="405.349,-205.053 413.713,-198.549 403.119,-198.418 405.349,-205.053"/>
 </g>
 <!-- Node4&#45;&gt;Node27 -->
 <g id="edge149" class="edge"><title>Node4&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M596.851,-884.324C578.564,-863.536 546.313,-822.708 534,-781 531.483,-772.475 533.399,-769.869 534,-761 540.459,-665.679 563,-643.54 563,-548 563,-548 563,-548 563,-490 563,-475.853 536.052,-272.784 527.543,-209.015"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="530.972,-208.254 526.179,-198.806 524.034,-209.181 530.972,-208.254"/>
+<path fill="none" stroke="midnightblue" d="M435.605,-884.415C425.756,-861.399 408,-814.071 408,-772 408,-772 408,-772 408,-714 408,-585.987 622.022,-306.805 728,-235 782.647,-197.975 861.957,-190.562 906.463,-189.564"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="906.511,-193.064 916.465,-189.436 906.421,-186.065 906.511,-193.064"/>
 </g>
 <!-- Node33 -->
 <g id="node33" class="node"><title>Node33</title>
-<polygon fill="white" stroke="#bfbfbf" points="2078.5,-235.5 2078.5,-254.5 2141.5,-254.5 2141.5,-235.5 2078.5,-235.5"/>
-<text text-anchor="middle" x="2110" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
+<polygon fill="white" stroke="#bfbfbf" points="2372.5,-235.5 2372.5,-254.5 2435.5,-254.5 2435.5,-235.5 2372.5,-235.5"/>
+<text text-anchor="middle" x="2404" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">functional</text>
 </g>
 <!-- Node4&#45;&gt;Node33 -->
 <g id="edge146" class="edge"><title>Node4&#45;&gt;Node33</title>
-<path fill="none" stroke="midnightblue" d="M666.212,-896.266C877.521,-886.691 1642.89,-841.384 2245,-669 2303.91,-652.133 2330.66,-659.133 2371,-613 2390.81,-590.342 2390,-578.098 2390,-548 2390,-548 2390,-548 2390,-428.5 2390,-369.618 2214.02,-289.394 2141.08,-258.676"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2142.08,-255.3 2131.51,-254.677 2139.39,-261.76 2142.08,-255.3"/>
+<path fill="none" stroke="midnightblue" d="M498.166,-897.742C885.573,-892.155 3146,-853.662 3146,-716 3146,-716 3146,-716 3146,-658 3146,-494.879 2590.95,-305.73 2440.97,-257.597"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2441.88,-254.212 2431.29,-254.504 2439.75,-260.88 2441.88,-254.212"/>
 </g>
 <!-- Node6&#45;&gt;Node5 -->
 <g id="edge6" class="edge"><title>Node6&#45;&gt;Node5</title>
-<path fill="none" stroke="midnightblue" d="M637.544,-817.399C628.406,-808.486 616.581,-796.952 607.138,-787.741"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="609.478,-785.135 599.876,-780.658 604.591,-790.146 609.478,-785.135"/>
+<path fill="none" stroke="midnightblue" d="M541.989,-817.399C530.262,-808.218 514.985,-796.258 503.055,-786.918"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="505.09,-784.066 495.059,-780.658 500.775,-789.578 505.09,-784.066"/>
 </g>
 <!-- Node6&#45;&gt;Node7 -->
 <g id="edge7" class="edge"><title>Node6&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M704.39,-817.478C751.053,-801.439 812,-770.129 812,-716 812,-716 812,-716 812,-658 812,-580.167 1393,-555.574 1582.8,-549.616"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1582.98,-553.112 1592.87,-549.306 1582.77,-546.115 1582.98,-553.112"/>
+<path fill="none" stroke="midnightblue" d="M616.175,-818.191C743.514,-788.029 1063.9,-712.176 1332,-649 1471.47,-616.134 1636.44,-577.436 1715.37,-558.93"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1716.53,-562.252 1725.47,-556.562 1714.93,-555.437 1716.53,-562.252"/>
 </g>
 <!-- Node6&#45;&gt;Node27 -->
 <g id="edge144" class="edge"><title>Node6&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M651.532,-817.401C650.934,-803.13 649.641,-780.454 647,-761 617.161,-541.201 549.198,-279.972 530.085,-208.727"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="533.346,-207.377 527.362,-198.634 526.588,-209.201 533.346,-207.377"/>
+<path fill="none" stroke="midnightblue" d="M560,-817.275C560,-795.476 560,-752.495 560,-716 560,-716 560,-716 560,-602 560,-571.902 565.181,-563.738 579,-537 622.724,-452.398 712,-464.233 712,-369 712,-369 712,-369 712,-305.5 712,-219.511 842.651,-197.522 906.151,-191.913"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="906.767,-195.375 916.459,-191.095 906.213,-188.397 906.767,-195.375"/>
 </g>
 <!-- Node6&#45;&gt;Node42 -->
 <g id="edge116" class="edge"><title>Node6&#45;&gt;Node42</title>
-<path fill="none" stroke="midnightblue" d="M708.12,-829.571C967.685,-820.649 2050.65,-783.424 2321.43,-774.117"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2321.59,-777.613 2331.46,-773.771 2321.35,-770.617 2321.59,-777.613"/>
+<path fill="none" stroke="midnightblue" d="M616.286,-826.881C749.687,-815.933 1084.27,-788.474 1223.11,-777.079"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1223.48,-780.56 1233.16,-776.254 1222.91,-773.584 1223.48,-780.56"/>
 </g>
 <!-- Node8 -->
 <g id="node8" class="node"><title>Node8</title>
 <g id="a_node8"><a xlink:href="node_2container_8h.html" target="_top" xlink:title="Array/Map container in the DSL graph. ">
-<polygon fill="white" stroke="black" points="2166.5,-358.5 2166.5,-377.5 2285.5,-377.5 2285.5,-358.5 2166.5,-358.5"/>
-<text text-anchor="middle" x="2226" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
+<polygon fill="white" stroke="black" points="2247.5,-358.5 2247.5,-377.5 2366.5,-377.5 2366.5,-358.5 2247.5,-358.5"/>
+<text text-anchor="middle" x="2307" y="-365.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/container.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node8 -->
 <g id="edge8" class="edge"><title>Node7&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M1691.38,-545.682C1823.42,-544.342 2177.2,-537.36 2214,-501 2244.06,-471.304 2237.17,-416.295 2230.87,-387.565"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2234.23,-386.538 2228.48,-377.634 2227.42,-388.175 2234.23,-386.538"/>
+<path fill="none" stroke="midnightblue" d="M1811.15,-544.344C1911.53,-540.427 2136.65,-528.753 2208,-501 2246.77,-485.92 2258.91,-478.914 2283,-445 2295.24,-427.769 2301.42,-404.043 2304.41,-387.707"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2307.88,-388.178 2306.01,-377.749 2300.97,-387.068 2307.88,-388.178"/>
 </g>
 <!-- Node7&#45;&gt;Node9 -->
 <g id="edge109" class="edge"><title>Node7&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1691.39,-543.303C1805.5,-535.98 2082.29,-511.596 2142,-445 2168.19,-415.786 2143.12,-394.702 2157,-358 2170.79,-321.527 2196.88,-283.886 2212.72,-262.859"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2215.7,-264.735 2219.01,-254.673 2210.15,-260.47 2215.7,-264.735"/>
+<path fill="none" stroke="midnightblue" d="M1811.27,-544.8C1933.17,-541.415 2246.17,-530.077 2346,-501 2396.78,-486.21 2411.08,-479.696 2451,-445 2514.7,-389.633 2566.39,-301.301 2586.71,-263.785"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2589.98,-265.092 2591.59,-254.62 2583.8,-261.801 2589.98,-265.092"/>
 </g>
 <!-- Node11 -->
 <g id="node11" class="node"><title>Node11</title>
 <g id="a_node11"><a xlink:href="runtime_2memory_8h.html" target="_top" xlink:title="Runtime memory management. ">
-<polygon fill="white" stroke="black" points="2279.5,-179.5 2279.5,-198.5 2406.5,-198.5 2406.5,-179.5 2279.5,-179.5"/>
-<text text-anchor="middle" x="2343" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
+<polygon fill="white" stroke="black" points="1930.5,-179.5 1930.5,-198.5 2057.5,-198.5 2057.5,-179.5 1930.5,-179.5"/>
+<text text-anchor="middle" x="1994" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/memory.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node11 -->
 <g id="edge110" class="edge"><title>Node7&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1691.37,-544.747C1825.33,-541.001 2188.76,-528.403 2235,-501 2315.13,-453.516 2314.03,-410.193 2344,-322 2356.56,-285.042 2361.47,-273.647 2356,-235 2354.73,-226.042 2352.11,-216.372 2349.55,-208.3"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2352.86,-207.157 2346.34,-198.803 2346.23,-209.398 2352.86,-207.157"/>
+<path fill="none" stroke="midnightblue" d="M1784.13,-537.433C1841.96,-513.67 1997.19,-440.742 2056,-322 2076.58,-280.44 2035.97,-230.773 2011.19,-205.879"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2013.42,-203.161 2003.81,-198.708 2008.54,-208.184 2013.42,-203.161"/>
 </g>
 <!-- Node12 -->
 <g id="node12" class="node"><title>Node12</title>
 <g id="a_node12"><a xlink:href="object_8h.html" target="_top" xlink:title="A managed object in the TVM runtime. ">
-<polygon fill="white" stroke="black" points="1168.5,-123.5 1168.5,-142.5 1285.5,-142.5 1285.5,-123.5 1168.5,-123.5"/>
-<text text-anchor="middle" x="1227" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
+<polygon fill="white" stroke="black" points="1642.5,-123.5 1642.5,-142.5 1759.5,-142.5 1759.5,-123.5 1642.5,-123.5"/>
+<text text-anchor="middle" x="1701" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/object.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node12 -->
 <g id="edge111" class="edge"><title>Node7&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1592.89,-546.712C1483.91,-547.467 1225.67,-544.468 1152,-501 1028.06,-427.867 1114.73,-304.02 1186,-179 1192.12,-168.257 1201.21,-157.935 1209.28,-149.892"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1212.03,-152.108 1216.86,-142.678 1207.2,-147.039 1212.03,-152.108"/>
+<path fill="none" stroke="midnightblue" d="M1746.54,-537.422C1702.13,-511.764 1574.38,-430.611 1528,-322 1502.82,-263.038 1501.43,-224.098 1547,-179 1569.59,-156.644 1602.64,-145.277 1632.33,-139.545"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1633,-142.98 1642.25,-137.809 1631.8,-136.085 1633,-142.98"/>
 </g>
 <!-- Node7&#45;&gt;Node13 -->
 <g id="edge108" class="edge"><title>Node7&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1592.95,-545.366C1480.55,-543.335 1207.56,-534.951 1123,-501 961.067,-435.982 892.403,-412.366 817,-255 785.753,-189.787 887.782,-197.803 926,-179 978.448,-153.196 988.841,-139.213 1045,-123 1159.87,-89.8372 1298.96,-78.4495 1382.31,-74.5408"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1382.61,-78.0311 1392.44,-74.0897 1382.3,-71.038 1382.61,-78.0311"/>
-</g>
-<!-- Node17 -->
-<g id="node17" class="node"><title>Node17</title>
-<polygon fill="white" stroke="#bfbfbf" points="2721,-62 2721,-81 2765,-81 2765,-62 2721,-62"/>
-<text text-anchor="middle" x="2743" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">string</text>
+<path fill="none" stroke="midnightblue" d="M1712.91,-546.311C1607.24,-546.187 1362.04,-541.411 1291,-501 1166.92,-430.422 1075.77,-373.331 1111,-235 1124.99,-180.071 1130.07,-161.146 1172,-123 1187.86,-108.566 1208.48,-97.8473 1228.03,-90.0903"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1229.39,-93.3172 1237.52,-86.5169 1226.93,-86.7664 1229.39,-93.3172"/>
 </g>
 <!-- Node7&#45;&gt;Node17 -->
 <g id="edge112" class="edge"><title>Node7&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1691.16,-545.136C1823.67,-542.412 2186.05,-532.24 2301,-501 2513.1,-443.359 2603.44,-434.698 2730,-255 2765.01,-205.283 2778.9,-182.426 2766,-123 2763.48,-111.401 2758.06,-99.2696 2753.11,-89.805"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2756.17,-88.1014 2748.27,-81.0413 2750.04,-91.4868 2756.17,-88.1014"/>
+<path fill="none" stroke="midnightblue" d="M1811.05,-546.65C1925.53,-547.339 2218.84,-544.319 2459,-501 2543.96,-485.675 2565.69,-479.116 2645,-445 2850.93,-356.411 2922.42,-328.02 3049,-143 3059.66,-127.42 3065.65,-106.56 3068.83,-91.5788"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3072.33,-91.9291 3070.74,-81.4535 3065.45,-90.6313 3072.33,-91.9291"/>
 </g>
 <!-- Node18 -->
 <g id="node18" class="node"><title>Node18</title>
-<polygon fill="white" stroke="#bfbfbf" points="2016,-62 2016,-81 2084,-81 2084,-62 2016,-62"/>
-<text text-anchor="middle" x="2050" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
+<polygon fill="white" stroke="#bfbfbf" points="2343,-62 2343,-81 2411,-81 2411,-62 2343,-62"/>
+<text text-anchor="middle" x="2377" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">type_traits</text>
 </g>
 <!-- Node7&#45;&gt;Node18 -->
 <g id="edge113" class="edge"><title>Node7&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1691.27,-546.593C1819.62,-547.484 2161.45,-545.486 2264,-501 2439.88,-424.706 2511.37,-380.876 2572,-199 2603.22,-105.333 2225.6,-80.0697 2094.17,-74.1357"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2094.19,-70.6333 2084.04,-73.6951 2093.88,-77.6267 2094.19,-70.6333"/>
+<path fill="none" stroke="midnightblue" d="M1811.08,-545.632C1917.12,-544.148 2175.25,-536.814 2388,-501 2482.83,-485.036 2509.99,-485.954 2597,-445 2741.81,-376.838 2818.92,-353.691 2860,-199 2872.1,-153.435 2829.69,-140.72 2786,-123 2720.56,-96.4588 2512.87,-80.8233 2421.2,-75.0553"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2421.34,-71.5567 2411.14,-74.4323 2420.9,-78.5434 2421.34,-71.5567"/>
 </g>
 <!-- Node7&#45;&gt;Node19 -->
 <g id="edge114" class="edge"><title>Node7&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1592.89,-545.735C1451.57,-544.531 1045.88,-537.87 919,-501 695.787,-436.138 570.868,-417.657 492,-199 473.655,-148.139 539.594,-105.825 579.553,-85.4945"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="581.181,-88.5941 588.605,-81.0357 578.088,-82.3145 581.181,-88.5941"/>
+<path fill="none" stroke="midnightblue" d="M1712.84,-543.652C1536.8,-534.803 944.96,-501.083 883,-445 777.014,-349.068 781.879,-152.893 786.294,-91.3813"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="789.797,-91.4779 787.112,-81.229 782.82,-90.9155 789.797,-91.4779"/>
 </g>
 <!-- Node7&#45;&gt;Node27 -->
 <g id="edge115" class="edge"><title>Node7&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1592.81,-546.188C1457.53,-546.159 1082.28,-542.252 967,-501 864.116,-464.184 856.328,-420.937 767,-358 685.395,-300.505 587.555,-233.025 545.67,-204.207"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="547.605,-201.29 537.383,-198.507 543.639,-207.057 547.605,-201.29"/>
+<path fill="none" stroke="midnightblue" d="M1712.98,-542.357C1656.32,-537.182 1560.76,-525.468 1482,-501 1478.54,-499.924 1367.01,-447.022 1364,-445 1347.02,-433.603 1347,-425.361 1330,-414 1262.65,-368.997 1067,-303.332 1002,-255 983.138,-240.975 964.995,-220.934 953.263,-206.822"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="955.858,-204.465 946.837,-198.908 950.424,-208.878 955.858,-204.465"/>
 </g>
 <!-- Node36 -->
 <g id="node36" class="node"><title>Node36</title>
 <g id="a_node36"><a xlink:href="reflection_8h.html" target="_top" xlink:title="Reflection and serialization of compiler IR/AST nodes. ">
-<polygon fill="white" stroke="black" points="1747.5,-481.5 1747.5,-500.5 1866.5,-500.5 1866.5,-481.5 1747.5,-481.5"/>
-<text text-anchor="middle" x="1807" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
+<polygon fill="white" stroke="black" points="2057.5,-481.5 2057.5,-500.5 2176.5,-500.5 2176.5,-481.5 2057.5,-481.5"/>
+<text text-anchor="middle" x="2117" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/reflection.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node36 -->
 <g id="edge77" class="edge"><title>Node7&#45;&gt;Node36</title>
-<path fill="none" stroke="midnightblue" d="M1668.14,-537.444C1696.02,-528.32 1740.35,-513.813 1771.4,-503.651"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1772.56,-506.953 1780.98,-500.516 1770.38,-500.3 1772.56,-506.953"/>
+<path fill="none" stroke="midnightblue" d="M1811.36,-538.492C1873.83,-528.99 1981.63,-512.592 2051.08,-502.027"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2051.68,-505.476 2061.04,-500.512 2050.63,-498.555 2051.68,-505.476"/>
 </g>
 <!-- Node37 -->
 <g id="node37" class="node"><title>Node37</title>
 <g id="a_node37"><a xlink:href="structural__equal_8h.html" target="_top" xlink:title="Structural equality comparison. ">
-<polygon fill="white" stroke="black" points="1893.5,-414.5 1893.5,-444.5 2004.5,-444.5 2004.5,-414.5 1893.5,-414.5"/>
-<text text-anchor="start" x="1901.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="1949" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
+<polygon fill="white" stroke="black" points="2163.5,-414.5 2163.5,-444.5 2274.5,-444.5 2274.5,-414.5 2163.5,-414.5"/>
+<text text-anchor="start" x="2171.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2219" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_equal.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node37 -->
 <g id="edge106" class="edge"><title>Node7&#45;&gt;Node37</title>
-<path fill="none" stroke="midnightblue" d="M1691,-544.504C1740.04,-541.232 1816.41,-531.205 1875,-501 1897.7,-489.299 1918.26,-468.474 1931.92,-452.481"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1934.73,-454.57 1938.4,-444.632 1929.34,-450.111 1934.73,-454.57"/>
+<path fill="none" stroke="midnightblue" d="M1811.07,-546.612C1909.31,-546.916 2125.83,-542.681 2185,-501 2200.49,-490.087 2209.19,-470.143 2213.91,-454.246"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2217.31,-455.08 2216.46,-444.519 2210.54,-453.303 2217.31,-455.08"/>
 </g>
 <!-- Node39 -->
 <g id="node39" class="node"><title>Node39</title>
 <g id="a_node39"><a xlink:href="structural__hash_8h.html" target="_top" xlink:title="tvm/node/structural\l_hash.h">
-<polygon fill="white" stroke="black" points="2022.5,-414.5 2022.5,-444.5 2133.5,-444.5 2133.5,-414.5 2022.5,-414.5"/>
-<text text-anchor="start" x="2030.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
-<text text-anchor="middle" x="2078" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
+<polygon fill="white" stroke="black" points="2331.5,-414.5 2331.5,-444.5 2442.5,-444.5 2442.5,-414.5 2331.5,-414.5"/>
+<text text-anchor="start" x="2339.5" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/structural</text>
+<text text-anchor="middle" x="2387" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_hash.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node39 -->
 <g id="edge107" class="edge"><title>Node7&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M1691.28,-540.669C1744.28,-534.205 1830.68,-521.549 1903,-501 1951.24,-487.293 2004.37,-464.764 2039.29,-448.869"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2041.01,-451.93 2048.64,-444.575 2038.09,-445.569 2041.01,-451.93"/>
+<path fill="none" stroke="midnightblue" d="M1811.2,-546.328C1929.71,-546.434 2227.8,-542.445 2317,-501 2339.78,-490.417 2359.29,-469.063 2371.88,-452.616"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2374.71,-454.675 2377.82,-444.545 2369.08,-450.528 2374.71,-454.675"/>
 </g>
 <!-- Node40 -->
 <g id="node40" class="node"><title>Node40</title>
 <g id="a_node40"><a xlink:href="repr__printer_8h.html" target="_top" xlink:title="Printer class to print repr string of each AST/IR nodes. ">
-<polygon fill="white" stroke="black" points="1161,-481.5 1161,-500.5 1291,-500.5 1291,-481.5 1161,-481.5"/>
-<text text-anchor="middle" x="1226" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
+<polygon fill="white" stroke="black" points="1300,-481.5 1300,-500.5 1430,-500.5 1430,-481.5 1300,-481.5"/>
+<text text-anchor="middle" x="1365" y="-488.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/repr_printer.h</text>
 </a>
 </g>
 </g>
 <!-- Node7&#45;&gt;Node40 -->
 <g id="edge103" class="edge"><title>Node7&#45;&gt;Node40</title>
-<path fill="none" stroke="midnightblue" d="M1592.65,-539.593C1520.57,-530.238 1385.92,-512.759 1301.39,-501.787"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1301.71,-498.298 1291.34,-500.482 1300.81,-505.24 1301.71,-498.298"/>
+<path fill="none" stroke="midnightblue" d="M1712.92,-539.324C1643.89,-529.934 1517.62,-512.759 1437.68,-501.886"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1438.06,-498.406 1427.68,-500.526 1437.12,-505.342 1438.06,-498.406"/>
 </g>
 <!-- Node8&#45;&gt;Node9 -->
 <g id="edge9" class="edge"><title>Node8&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M2226,-358.298C2226,-338.85 2226,-291.49 2226,-264.904"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2229.5,-264.623 2226,-254.623 2222.5,-264.623 2229.5,-264.623"/>
+<path fill="none" stroke="midnightblue" d="M2327.32,-358.492C2377.36,-337.541 2506.74,-283.372 2565.8,-258.645"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2567.44,-261.752 2575.31,-254.661 2564.74,-255.295 2567.44,-261.752"/>
 </g>
 <!-- Node8&#45;&gt;Node11 -->
 <g id="edge35" class="edge"><title>Node8&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M2231.88,-358.319C2244.6,-339.54 2275.54,-293.71 2301,-255 2311.58,-238.923 2323.47,-220.488 2331.89,-207.367"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2334.89,-209.169 2337.34,-198.861 2329,-205.392 2334.89,-209.169"/>
+<path fill="none" stroke="midnightblue" d="M2297.76,-358.372C2272.67,-335.336 2200.38,-271.654 2130,-235 2101.54,-220.178 2067.23,-208.867 2040.18,-201.292"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2040.77,-197.824 2030.2,-198.572 2038.93,-204.578 2040.77,-197.824"/>
 </g>
 <!-- Node8&#45;&gt;Node12 -->
 <g id="edge36" class="edge"><title>Node8&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2166.26,-365.183C1957.49,-358.202 1269.84,-329.66 1209,-255 1184.84,-225.349 1203.58,-177.534 1216.82,-151.785"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1220,-153.252 1221.69,-142.792 1213.85,-149.92 1220,-153.252"/>
+<path fill="none" stroke="midnightblue" d="M2247.21,-367.172C2170.67,-365.778 2034.83,-357.82 1925,-322 1898.32,-313.3 1895.7,-302.273 1870,-291 1822.51,-270.164 1799.46,-287.448 1759,-255 1726.24,-228.729 1710.86,-179.466 1704.63,-152.613"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1708,-151.657 1702.49,-142.608 1701.15,-153.119 1708,-151.657"/>
 </g>
 <!-- Node8&#45;&gt;Node17 -->
 <g id="edge75" class="edge"><title>Node8&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2264.05,-358.472C2294.77,-350.892 2338.7,-338.46 2375,-322 2522.2,-255.253 2674.79,-130.781 2725.48,-87.6648"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2727.92,-90.1883 2733.23,-81.0256 2723.36,-84.8713 2727.92,-90.1883"/>
+<path fill="none" stroke="midnightblue" d="M2366.52,-359.367C2417.6,-352.087 2492.89,-339.612 2557,-322 2690.82,-285.235 2730.73,-279.177 2844,-199 2884.29,-170.48 2882.72,-148.475 2925,-123 2961.55,-100.98 3009.03,-86.8957 3040,-79.3446"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.89,-82.7296 3049.82,-77.0323 3039.29,-75.9156 3040.89,-82.7296"/>
 </g>
 <!-- Node8&#45;&gt;Node19 -->
 <g id="edge76" class="edge"><title>Node8&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2166.37,-366.298C1988.53,-363.861 1463.8,-354.075 1296,-322 1205.58,-304.716 1186.72,-285.9 1100,-255 924.65,-192.52 715.786,-113.516 638.612,-84.1683"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.619,-80.8069 629.028,-80.5216 637.13,-87.3493 639.619,-80.8069"/>
+<path fill="none" stroke="midnightblue" d="M2247.22,-364.707C2036.14,-356.101 1326.91,-322.697 1111,-255 1094.68,-249.882 882.973,-127.558 811.434,-86.0969"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="813.083,-83.0072 802.676,-81.0194 809.572,-89.063 813.083,-83.0072"/>
 </g>
 <!-- Node22 -->
 <g id="node22" class="node"><title>Node22</title>
-<polygon fill="white" stroke="#bfbfbf" points="2501,-179.5 2501,-198.5 2563,-198.5 2563,-179.5 2501,-179.5"/>
-<text text-anchor="middle" x="2532" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
+<polygon fill="white" stroke="#bfbfbf" points="2773,-179.5 2773,-198.5 2835,-198.5 2835,-179.5 2773,-179.5"/>
+<text text-anchor="middle" x="2804" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">algorithm</text>
 </g>
 <!-- Node8&#45;&gt;Node22 -->
 <g id="edge74" class="edge"><title>Node8&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M2247.21,-358.481C2288.43,-341.513 2381.57,-301.132 2453,-255 2475.91,-240.204 2499.76,-219.77 2515.18,-205.786"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2517.83,-208.104 2522.82,-198.758 2513.09,-202.953 2517.83,-208.104"/>
+<path fill="none" stroke="midnightblue" d="M2342.49,-358.446C2426.96,-337.854 2637.8,-285.015 2704,-255 2734.25,-241.283 2765.86,-219.231 2785.24,-204.678"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2787.41,-207.425 2793.24,-198.576 2783.17,-201.86 2787.41,-207.425"/>
 </g>
 <!-- Node28 -->
 <g id="node28" class="node"><title>Node28</title>
 <g id="a_node28"><a xlink:href="packed__func_8h.html" target="_top" xlink:title="Type&#45;erased function used across TVM API. ">
-<polygon fill="white" stroke="black" points="1543.5,-291.5 1543.5,-321.5 1656.5,-321.5 1656.5,-291.5 1543.5,-291.5"/>
-<text text-anchor="start" x="1551.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
-<text text-anchor="middle" x="1600" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
+<polygon fill="white" stroke="black" points="1934.5,-291.5 1934.5,-321.5 2047.5,-321.5 2047.5,-291.5 1934.5,-291.5"/>
+<text text-anchor="start" x="1942.5" y="-309.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/packed</text>
+<text text-anchor="middle" x="1991" y="-298.5" font-family="Helvetica,sans-Serif" font-size="10.00">_func.h</text>
 </a>
 </g>
 </g>
 <!-- Node8&#45;&gt;Node28 -->
 <g id="edge37" class="edge"><title>Node8&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M2166.26,-361.322C2048.99,-350.176 1789.45,-325.507 1666.75,-313.844"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1667.02,-310.354 1656.73,-312.892 1666.36,-317.323 1667.02,-310.354"/>
+<path fill="none" stroke="midnightblue" d="M2261.72,-358.475C2208.3,-348.415 2118.99,-331.599 2057.65,-320.05"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2058.15,-316.583 2047.68,-318.172 2056.86,-323.462 2058.15,-316.583"/>
 </g>
 <!-- Node10 -->
 <g id="node10" class="node"><title>Node10</title>
-<polygon fill="white" stroke="#bfbfbf" points="981,-62 981,-81 1067,-81 1067,-62 981,-62"/>
-<text text-anchor="middle" x="1024" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1758,-62 1758,-81 1844,-81 1844,-62 1758,-62"/>
+<text text-anchor="middle" x="1801" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">dmlc/logging.h</text>
 </g>
 <!-- Node9&#45;&gt;Node10 -->
 <g id="edge10" class="edge"><title>Node9&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M2196.81,-235.408C2142.67,-219.575 2028.5,-186.704 1988,-179 1619.92,-108.982 1522.34,-128.862 1150,-87 1126.09,-84.3119 1099.64,-81.2769 1077.17,-78.6809"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1077.48,-75.1941 1067.15,-77.5218 1076.68,-82.1478 1077.48,-75.1941"/>
+<path fill="none" stroke="midnightblue" d="M2577.15,-235.474C2542.57,-219.909 2470.15,-187.692 2444,-179 2232.63,-108.727 1966.12,-83.5548 1854.26,-75.6744"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1854.46,-72.1799 1844.24,-74.9861 1853.98,-79.1634 1854.46,-72.1799"/>
 </g>
 <!-- Node9&#45;&gt;Node11 -->
 <g id="edge11" class="edge"><title>Node9&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M2244.54,-235.444C2263.62,-226.636 2293.57,-212.812 2315.44,-202.722"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2316.93,-205.885 2324.55,-198.516 2314,-199.529 2316.93,-205.885"/>
+<path fill="none" stroke="midnightblue" d="M2529.85,-238.067C2416.48,-227.897 2185.86,-207.21 2067.58,-196.6"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2067.8,-193.106 2057.53,-195.699 2067.18,-200.078 2067.8,-193.106"/>
 </g>
 <!-- Node9&#45;&gt;Node12 -->
 <g id="edge25" class="edge"><title>Node9&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2163.95,-235.462C2097.64,-225.991 1997.07,-210.525 1960,-199 1939.87,-192.742 1937.44,-184.155 1917,-179 1653.24,-112.464 1577.02,-166.404 1306,-143 1302.6,-142.706 1299.11,-142.385 1295.6,-142.044"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1295.94,-138.561 1285.64,-141.04 1295.23,-145.526 1295.94,-138.561"/>
+<path fill="none" stroke="midnightblue" d="M2552.44,-235.433C2515.58,-227.635 2461.62,-214.922 2416,-199 2395.72,-191.921 2392.83,-184.248 2372,-179 2314.77,-164.583 1929.39,-144.869 1769.9,-137.218"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1769.88,-133.714 1759.73,-136.732 1769.55,-140.706 1769.88,-133.714"/>
 </g>
 <!-- Node9&#45;&gt;Node17 -->
 <g id="edge30" class="edge"><title>Node9&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2292.27,-241.108C2331.27,-236.463 2379.69,-225.282 2415,-199 2446.31,-175.695 2427.03,-145.391 2459,-123 2499.31,-94.7653 2645.15,-80.1171 2710.7,-74.8369"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2711.17,-78.3107 2720.86,-74.0414 2710.62,-71.332 2711.17,-78.3107"/>
+<path fill="none" stroke="midnightblue" d="M2623.2,-235.354C2642.73,-228.082 2668.73,-216.107 2687,-199 2715.49,-172.321 2698.71,-144.926 2731,-123 2781.02,-89.0335 2964.52,-77.2252 3039.63,-73.7572"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.06,-77.2417 3049.89,-73.3044 3039.75,-70.2485 3040.06,-77.2417"/>
 </g>
 <!-- Node9&#45;&gt;Node18 -->
 <g id="edge32" class="edge"><title>Node9&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2229.58,-235.329C2234.38,-222.191 2241.23,-196.881 2231,-179 2201.61,-127.615 2136.7,-98.5718 2093.14,-84.1993"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2093.97,-80.7898 2083.38,-81.1041 2091.86,-87.4625 2093.97,-80.7898"/>
+<path fill="none" stroke="midnightblue" d="M2581.18,-235.451C2566.53,-226.805 2543.67,-212.784 2525,-199 2474.98,-162.06 2420.42,-112.885 2393.68,-88.1357"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2396.01,-85.528 2386.31,-81.2798 2391.24,-90.6534 2396.01,-85.528"/>
 </g>
 <!-- Node9&#45;&gt;Node19 -->
 <g id="edge33" class="edge"><title>Node9&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2169.23,-235.488C2109.74,-226.175 2020.5,-210.976 1988,-199 1971.19,-192.806 1970.11,-184.328 1953,-179 1917.92,-168.073 1330.63,-125.904 1294,-123 1041.28,-102.961 735.954,-81.4293 639.062,-74.6611"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.277,-71.1677 629.058,-73.9631 638.79,-78.1508 639.277,-71.1677"/>
+<path fill="none" stroke="midnightblue" d="M2558.98,-235.463C2527.71,-227.682 2482.06,-214.979 2444,-199 2427.12,-191.915 2425.34,-184.867 2408,-179 2326.73,-151.496 2111.42,-130.982 2026,-123 1902.69,-111.479 999.368,-79.8184 819.208,-73.5767"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.2,-70.0744 809.085,-73.2264 818.958,-77.0702 819.2,-70.0744"/>
 </g>
 <!-- Node9&#45;&gt;Node22 -->
 <g id="edge26" class="edge"><title>Node9&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M2274.49,-235.444C2334.3,-224.889 2434.92,-207.131 2491.04,-197.228"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2491.74,-200.658 2500.98,-195.474 2490.53,-193.765 2491.74,-200.658"/>
+<path fill="none" stroke="midnightblue" d="M2628.96,-235.444C2665.31,-226.005 2723.86,-210.807 2763.11,-200.616"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2764.09,-203.976 2772.89,-198.075 2762.34,-197.201 2764.09,-203.976"/>
 </g>
 <!-- Node23 -->
 <g id="node23" class="node"><title>Node23</title>
-<polygon fill="white" stroke="#bfbfbf" points="2078.5,-179.5 2078.5,-198.5 2127.5,-198.5 2127.5,-179.5 2078.5,-179.5"/>
-<text text-anchor="middle" x="2103" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstring</text>
+<polygon fill="white" stroke="#bfbfbf" points="2629.5,-179.5 2629.5,-198.5 2678.5,-198.5 2678.5,-179.5 2629.5,-179.5"/>
+<text text-anchor="middle" x="2654" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstring</text>
 </g>
 <!-- Node9&#45;&gt;Node23 -->
 <g id="edge27" class="edge"><title>Node9&#45;&gt;Node23</title>
-<path fill="none" stroke="midnightblue" d="M2206.51,-235.444C2186.36,-226.596 2154.68,-212.687 2131.67,-202.586"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2132.96,-199.332 2122.4,-198.516 2130.15,-205.741 2132.96,-199.332"/>
+<path fill="none" stroke="midnightblue" d="M2605.32,-235.324C2613.89,-227.341 2626.81,-215.313 2637.19,-205.653"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2639.58,-208.21 2644.51,-198.834 2634.81,-203.086 2639.58,-208.21"/>
 </g>
 <!-- Node24 -->
 <g id="node24" class="node"><title>Node24</title>
-<polygon fill="white" stroke="#bfbfbf" points="2145.5,-179.5 2145.5,-198.5 2222.5,-198.5 2222.5,-179.5 2145.5,-179.5"/>
-<text text-anchor="middle" x="2184" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">initializer_list</text>
+<polygon fill="white" stroke="#bfbfbf" points="2534.5,-179.5 2534.5,-198.5 2611.5,-198.5 2611.5,-179.5 2534.5,-179.5"/>
+<text text-anchor="middle" x="2573" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">initializer_list</text>
 </g>
 <!-- Node9&#45;&gt;Node24 -->
 <g id="edge28" class="edge"><title>Node9&#45;&gt;Node24</title>
-<path fill="none" stroke="midnightblue" d="M2219.06,-235.083C2213.07,-227.377 2204.25,-216.033 2196.95,-206.653"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2199.71,-204.496 2190.81,-198.751 2194.18,-208.793 2199.71,-204.496"/>
+<path fill="none" stroke="midnightblue" d="M2592.2,-235.083C2589.09,-227.77 2584.58,-217.181 2580.71,-208.103"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2583.87,-206.58 2576.73,-198.751 2577.43,-209.323 2583.87,-206.58"/>
 </g>
 <!-- Node25 -->
 <g id="node25" class="node"><title>Node25</title>
-<polygon fill="white" stroke="#bfbfbf" points="1506.5,-179.5 1506.5,-198.5 1563.5,-198.5 1563.5,-179.5 1506.5,-179.5"/>
-<text text-anchor="middle" x="1535" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
+<polygon fill="white" stroke="#bfbfbf" points="2306.5,-179.5 2306.5,-198.5 2363.5,-198.5 2363.5,-179.5 2306.5,-179.5"/>
+<text text-anchor="middle" x="2335" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">memory</text>
 </g>
 <!-- Node9&#45;&gt;Node25 -->
 <g id="edge29" class="edge"><title>Node9&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M2159.7,-235.971C2156.42,-235.63 2153.17,-235.304 2150,-235 1932.49,-214.174 1670.9,-197.953 1573.76,-192.231"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1573.73,-188.723 1563.55,-191.632 1573.32,-195.711 1573.73,-188.723"/>
+<path fill="none" stroke="midnightblue" d="M2554.61,-235.491C2510.75,-226.467 2439.48,-211.78 2378,-199 2376.55,-198.699 2375.08,-198.392 2373.59,-198.082"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2374.18,-194.631 2363.68,-196.014 2372.75,-201.483 2374.18,-194.631"/>
 </g>
 <!-- Node9&#45;&gt;Node26 -->
 <g id="edge31" class="edge"><title>Node9&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2292.19,-238.65C2423.3,-228.051 2713.98,-204.552 2837.12,-194.598"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2837.41,-198.086 2847.1,-193.791 2836.85,-191.109 2837.41,-198.086"/>
+<path fill="none" stroke="midnightblue" d="M2529.81,-239.552C2503.16,-237.9 2472.13,-236.149 2444,-235 2245.83,-226.905 808.333,-197.4 502.226,-191.163"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="501.887,-187.655 491.818,-190.951 501.745,-194.654 501.887,-187.655"/>
 </g>
 <!-- Node9&#45;&gt;Node27 -->
 <g id="edge34" class="edge"><title>Node9&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2159.71,-235.794C2156.43,-235.499 2153.18,-235.232 2150,-235 1824.73,-211.285 762.333,-193.713 558.86,-190.521"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="558.825,-187.02 548.772,-190.363 558.716,-194.019 558.825,-187.02"/>
+<path fill="none" stroke="midnightblue" d="M2529.81,-239.634C2503.16,-237.992 2472.13,-236.228 2444,-235 1875.87,-210.191 1733.34,-218.365 1165,-199 1097.14,-196.688 1017.8,-193.371 973.784,-191.476"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="973.786,-187.973 963.644,-191.038 973.484,-194.967 973.786,-187.973"/>
 </g>
 <!-- Node11&#45;&gt;Node12 -->
 <g id="edge12" class="edge"><title>Node11&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M2279.36,-182.493C2263.56,-181.234 2246.67,-179.981 2231,-179 1879.77,-157.024 1458.76,-141.743 1295.95,-136.249"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1295.72,-132.739 1285.6,-135.901 1295.48,-139.735 1295.72,-132.739"/>
+<path fill="none" stroke="midnightblue" d="M1947.57,-179.444C1895.92,-169.925 1812.49,-154.547 1757.19,-144.356"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1757.68,-140.887 1747.21,-142.516 1756.41,-147.771 1757.68,-140.887"/>
 </g>
 <!-- Node11&#45;&gt;Node18 -->
 <g id="edge23" class="edge"><title>Node11&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2335.27,-179.361C2322.22,-165.317 2294.34,-137.635 2265,-123 2209.77,-95.4508 2139,-82.5807 2094.06,-76.8216"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2094.4,-73.3371 2084.05,-75.6017 2093.55,-80.2857 2094.4,-73.3371"/>
+<path fill="none" stroke="midnightblue" d="M2001.62,-179.14C2014.52,-164.778 2042.19,-136.65 2072,-123 2158.5,-83.3931 2271.43,-74.4229 2332.72,-72.6522"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2332.91,-76.1488 2342.83,-72.4126 2332.75,-69.1507 2332.91,-76.1488"/>
 </g>
 <!-- Node11&#45;&gt;Node19 -->
 <g id="edge24" class="edge"><title>Node11&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2279.34,-182.722C2263.55,-181.457 2246.66,-180.143 2231,-179 1589.55,-132.184 804.762,-84.3693 639.462,-74.3921"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.25,-70.8731 629.058,-73.7648 638.829,-77.8604 639.25,-70.8731"/>
+<path fill="none" stroke="midnightblue" d="M1970.98,-179.475C1930.56,-164.938 1843.9,-135.699 1768,-123 1672.72,-107.06 977.038,-79.7255 819.609,-73.6985"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.346,-70.186 809.22,-73.3018 819.079,-77.1809 819.346,-70.186"/>
 </g>
 <!-- Node21 -->
 <g id="node21" class="node"><title>Node21</title>
-<polygon fill="white" stroke="#bfbfbf" points="2319.5,-123.5 2319.5,-142.5 2366.5,-142.5 2366.5,-123.5 2319.5,-123.5"/>
-<text text-anchor="middle" x="2343" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstdlib</text>
+<polygon fill="white" stroke="#bfbfbf" points="1970.5,-123.5 1970.5,-142.5 2017.5,-142.5 2017.5,-123.5 1970.5,-123.5"/>
+<text text-anchor="middle" x="1994" y="-130.5" font-family="Helvetica,sans-Serif" font-size="10.00">cstdlib</text>
 </g>
 <!-- Node11&#45;&gt;Node21 -->
 <g id="edge22" class="edge"><title>Node11&#45;&gt;Node21</title>
-<path fill="none" stroke="midnightblue" d="M2343,-179.083C2343,-172.006 2343,-161.861 2343,-152.986"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2346.5,-152.751 2343,-142.751 2339.5,-152.751 2346.5,-152.751"/>
+<path fill="none" stroke="midnightblue" d="M1994,-179.083C1994,-172.006 1994,-161.861 1994,-152.986"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1997.5,-152.751 1994,-142.751 1990.5,-152.751 1997.5,-152.751"/>
 </g>
 <!-- Node12&#45;&gt;Node10 -->
 <g id="edge13" class="edge"><title>Node12&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1197.92,-123.475C1162.42,-113.07 1102.25,-95.4367 1062.83,-83.8801"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1063.61,-80.4632 1053.03,-81.0091 1061.64,-87.1806 1063.61,-80.4632"/>
+<path fill="none" stroke="midnightblue" d="M1715.33,-123.475C1731.66,-113.755 1758.6,-97.7266 1777.91,-86.2372"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1779.89,-89.1303 1786.7,-81.0091 1776.32,-83.1146 1779.89,-89.1303"/>
 </g>
 <!-- Node12&#45;&gt;Node13 -->
 <g id="edge14" class="edge"><title>Node12&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1259.81,-123.475C1294.23,-114.532 1349.2,-100.249 1392.21,-89.0738"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1393.23,-92.4253 1402.03,-86.523 1391.47,-85.6503 1393.23,-92.4253"/>
+<path fill="none" stroke="midnightblue" d="M1642.11,-123.475C1568.68,-112.844 1443.12,-94.6669 1363.46,-83.1354"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1363.9,-79.6624 1353.5,-81.6934 1362.9,-86.5901 1363.9,-79.6624"/>
 </g>
 <!-- Node12&#45;&gt;Node17 -->
 <g id="edge18" class="edge"><title>Node12&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1285.5,-129.704C1536.65,-119.847 2519.37,-81.2769 2710.64,-73.7701"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2711.02,-77.2581 2720.87,-73.3685 2710.74,-70.2635 2711.02,-77.2581"/>
+<path fill="none" stroke="midnightblue" d="M1759.91,-129.443C1994.97,-119.242 2861.73,-81.6257 3039.87,-73.8946"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.07,-77.3891 3049.91,-73.4587 3039.77,-70.3957 3040.07,-77.3891"/>
 </g>
 <!-- Node12&#45;&gt;Node18 -->
 <g id="edge19" class="edge"><title>Node12&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1285.53,-127.769C1441.93,-116.461 1867.12,-85.7218 2005.69,-75.7036"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2006.2,-79.1756 2015.92,-74.9635 2005.7,-72.1938 2006.2,-79.1756"/>
+<path fill="none" stroke="midnightblue" d="M1759.55,-124.577C1764.43,-124.02 1769.3,-123.486 1774,-123 1982.91,-101.382 2233.29,-82.7299 2332.95,-75.5958"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2333.23,-79.0848 2342.96,-74.8821 2332.73,-72.1025 2333.23,-79.0848"/>
 </g>
 <!-- Node12&#45;&gt;Node19 -->
 <g id="edge20" class="edge"><title>Node12&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1168.49,-126.376C1040.09,-114.034 737.305,-84.9291 639.241,-75.503"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.385,-72.0007 629.096,-74.5278 638.715,-78.9686 639.385,-72.0007"/>
+<path fill="none" stroke="midnightblue" d="M1642.5,-128.187C1467.55,-116.786 952.319,-83.2086 819.514,-74.5538"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.443,-71.0418 809.236,-73.884 818.988,-78.027 819.443,-71.0418"/>
 </g>
 <!-- Node20 -->
 <g id="node20" class="node"><title>Node20</title>
-<polygon fill="white" stroke="#bfbfbf" points="1159,-62 1159,-81 1209,-81 1209,-62 1159,-62"/>
-<text text-anchor="middle" x="1184" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">atomic</text>
+<polygon fill="white" stroke="#bfbfbf" points="1529,-62 1529,-81 1579,-81 1579,-62 1529,-62"/>
+<text text-anchor="middle" x="1554" y="-69" font-family="Helvetica,sans-Serif" font-size="10.00">atomic</text>
 </g>
 <!-- Node12&#45;&gt;Node20 -->
 <g id="edge21" class="edge"><title>Node12&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M1220.84,-123.475C1214.39,-114.55 1204.1,-100.307 1196.03,-89.1425"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1198.84,-87.064 1190.15,-81.0091 1193.17,-91.1642 1198.84,-87.064"/>
+<path fill="none" stroke="midnightblue" d="M1679.94,-123.475C1654.94,-113.357 1613.06,-96.4046 1584.51,-84.8507"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1585.61,-81.5168 1575.02,-81.0091 1582.98,-88.0054 1585.61,-81.5168"/>
 </g>
 <!-- Node14 -->
 <g id="node14" class="node"><title>Node14</title>
-<polygon fill="white" stroke="#bfbfbf" points="1320,-0.5 1320,-19.5 1410,-19.5 1410,-0.5 1320,-0.5"/>
-<text text-anchor="middle" x="1365" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">dlpack/dlpack.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1154,-0.5 1154,-19.5 1244,-19.5 1244,-0.5 1154,-0.5"/>
+<text text-anchor="middle" x="1199" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">dlpack/dlpack.h</text>
 </g>
 <!-- Node13&#45;&gt;Node14 -->
 <g id="edge15" class="edge"><title>Node13&#45;&gt;Node14</title>
-<path fill="none" stroke="midnightblue" d="M1434.43,-56.3993C1420.12,-47.0402 1401.39,-34.7924 1386.99,-25.3771"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1388.53,-22.2009 1378.24,-19.6578 1384.7,-28.0597 1388.53,-22.2009"/>
+<path fill="none" stroke="midnightblue" d="M1268.43,-56.3993C1254.12,-47.0402 1235.39,-34.7924 1220.99,-25.3771"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1222.53,-22.2009 1212.24,-19.6578 1218.7,-28.0597 1222.53,-22.2009"/>
 </g>
 <!-- Node15 -->
 <g id="node15" class="node"><title>Node15</title>
-<polygon fill="white" stroke="#bfbfbf" points="1428.5,-0.5 1428.5,-19.5 1483.5,-19.5 1483.5,-0.5 1428.5,-0.5"/>
-<text text-anchor="middle" x="1456" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stddef.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1262.5,-0.5 1262.5,-19.5 1317.5,-19.5 1317.5,-0.5 1262.5,-0.5"/>
+<text text-anchor="middle" x="1290" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stddef.h</text>
 </g>
 <!-- Node13&#45;&gt;Node15 -->
 <g id="edge16" class="edge"><title>Node13&#45;&gt;Node15</title>
-<path fill="none" stroke="midnightblue" d="M1456,-56.3993C1456,-48.4664 1456,-38.458 1456,-29.8583"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1459.5,-29.6577 1456,-19.6578 1452.5,-29.6578 1459.5,-29.6577"/>
+<path fill="none" stroke="midnightblue" d="M1290,-56.3993C1290,-48.4664 1290,-38.458 1290,-29.8583"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1293.5,-29.6577 1290,-19.6578 1286.5,-29.6578 1293.5,-29.6577"/>
 </g>
 <!-- Node16 -->
 <g id="node16" class="node"><title>Node16</title>
-<polygon fill="white" stroke="#bfbfbf" points="1501.5,-0.5 1501.5,-19.5 1554.5,-19.5 1554.5,-0.5 1501.5,-0.5"/>
-<text text-anchor="middle" x="1528" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
+<polygon fill="white" stroke="#bfbfbf" points="1335.5,-0.5 1335.5,-19.5 1388.5,-19.5 1388.5,-0.5 1335.5,-0.5"/>
+<text text-anchor="middle" x="1362" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">stdint.h</text>
 </g>
 <!-- Node13&#45;&gt;Node16 -->
 <g id="edge17" class="edge"><title>Node13&#45;&gt;Node16</title>
-<path fill="none" stroke="midnightblue" d="M1473.06,-56.3993C1484.06,-47.3076 1498.37,-35.4899 1509.62,-26.1909"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1512.04,-28.726 1517.52,-19.6578 1507.59,-23.33 1512.04,-28.726"/>
+<path fill="none" stroke="midnightblue" d="M1307.06,-56.3993C1318.06,-47.3076 1332.37,-35.4899 1343.62,-26.1909"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1346.04,-28.726 1351.52,-19.6578 1341.59,-23.33 1346.04,-28.726"/>
 </g>
 <!-- Node28&#45;&gt;Node9 -->
 <g id="edge40" class="edge"><title>Node28&#45;&gt;Node9</title>
-<path fill="none" stroke="midnightblue" d="M1656.66,-300.793C1754.69,-292.54 1962.53,-274.564 2149.67,-255.008"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2150.11,-258.48 2159.69,-253.956 2149.38,-251.518 2150.11,-258.48"/>
+<path fill="none" stroke="midnightblue" d="M2047.65,-299.929C2156.79,-289.195 2396.3,-265.64 2519.49,-253.524"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2519.99,-256.992 2529.6,-252.53 2519.31,-250.026 2519.99,-256.992"/>
 </g>
 <!-- Node28&#45;&gt;Node10 -->
 <g id="edge38" class="edge"><title>Node28&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1543.39,-302.627C1449.62,-297.136 1266.68,-283.114 1209,-255 1128.24,-215.639 1061.19,-127.094 1035.38,-89.6929"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1038.23,-87.6615 1029.72,-81.3472 1032.44,-91.5888 1038.23,-87.6615"/>
+<path fill="none" stroke="midnightblue" d="M1979.4,-291.276C1946.08,-250.419 1850.22,-132.854 1814.57,-89.1359"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1817.13,-86.739 1808.1,-81.201 1811.7,-91.1628 1817.13,-86.739"/>
 </g>
 <!-- Node28&#45;&gt;Node12 -->
 <g id="edge65" class="edge"><title>Node28&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1543.34,-298.595C1508.45,-292.034 1464.37,-279.354 1432,-255 1399.89,-230.836 1415.25,-202.984 1383,-179 1357.71,-160.19 1324.75,-149.227 1295.65,-142.844"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1296.03,-139.351 1285.53,-140.772 1294.63,-146.208 1296.03,-139.351"/>
+<path fill="none" stroke="midnightblue" d="M1934.29,-292.941C1874.3,-279.494 1787.39,-259.479 1781,-255 1761.55,-241.365 1727.31,-182.105 1710.65,-151.877"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1713.59,-149.947 1705.72,-142.846 1707.44,-153.301 1713.59,-149.947"/>
 </g>
 <!-- Node28&#45;&gt;Node13 -->
 <g id="edge39" class="edge"><title>Node28&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1549.36,-291.454C1530.02,-283.677 1509.41,-272.028 1496,-255 1459.1,-208.156 1454.57,-134.468 1454.95,-96.6541"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1458.45,-96.6419 1455.18,-86.5649 1451.45,-96.4828 1458.45,-96.6419"/>
+<path fill="none" stroke="midnightblue" d="M1934.11,-295.696C1886.75,-286.922 1817.81,-272.723 1759,-255 1596.42,-206.003 1410.38,-126.217 1330.21,-90.6297"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1331.53,-87.3842 1320.97,-86.514 1328.68,-93.779 1331.53,-87.3842"/>
 </g>
 <!-- Node28&#45;&gt;Node17 -->
 <g id="edge69" class="edge"><title>Node28&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1656.56,-303.743C1800.68,-298.897 2178.89,-283.753 2301,-255 2364.63,-240.017 2380.13,-231.223 2437,-199 2486.19,-171.132 2487.89,-147.157 2539,-123 2596.2,-95.965 2669.51,-82.3846 2710.86,-76.4357"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2711.47,-79.8845 2720.9,-75.0518 2710.52,-72.9501 2711.47,-79.8845"/>
+<path fill="none" stroke="midnightblue" d="M2047.53,-305.64C2189.6,-305.306 2558.23,-299.994 2671,-255 2695.79,-245.109 2741.82,-193.839 2764,-179 2807.64,-149.813 2819.02,-141.901 2868,-123 2926.71,-100.342 2998.92,-85.2913 3039.78,-77.8827"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.47,-81.3143 3049.71,-76.1217 3039.25,-74.4219 3040.47,-81.3143"/>
 </g>
 <!-- Node28&#45;&gt;Node18 -->
 <g id="edge71" class="edge"><title>Node28&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1639.27,-291.466C1659.87,-282.915 1684.75,-270.613 1704,-255 1737.21,-228.067 1728.52,-204.296 1763,-179 1838.54,-123.572 1946.15,-93.9776 2005.84,-80.923"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2006.65,-84.329 2015.7,-78.8216 2005.19,-77.4827 2006.65,-84.329"/>
+<path fill="none" stroke="midnightblue" d="M2005.49,-291.131C2031.39,-266.009 2088.04,-213.5 2143,-179 2209.92,-136.992 2296.17,-102.158 2343.03,-84.6624"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2344.51,-87.844 2352.68,-81.0951 2342.09,-81.2779 2344.51,-87.844"/>
 </g>
 <!-- Node28&#45;&gt;Node19 -->
 <g id="edge72" class="edge"><title>Node28&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1543.18,-303.025C1460.49,-298.474 1302.63,-286.199 1172,-255 1006.25,-215.412 974.953,-172.882 812,-123 751.471,-104.471 679.288,-87.8622 639.048,-79.0812"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.57,-75.6134 629.056,-76.9189 638.09,-82.455 639.57,-75.6134"/>
+<path fill="none" stroke="midnightblue" d="M1934.4,-303.317C1789.69,-297.437 1408.92,-280.006 1285,-255 1257.86,-249.523 1252.28,-243.716 1226,-235 1176.77,-218.675 1162.81,-219.096 1115,-199 1065.52,-178.202 1055.53,-167.944 1008,-143 991.101,-134.131 987.741,-130.036 970,-123 918.676,-102.645 856.132,-87.2194 819.33,-79.0446"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.737,-75.5509 809.22,-76.8379 818.244,-82.3899 819.737,-75.5509"/>
 </g>
 <!-- Node28&#45;&gt;Node25 -->
 <g id="edge68" class="edge"><title>Node28&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1549.62,-291.416C1531.69,-283.711 1513.39,-272.124 1503,-255 1493.27,-238.971 1505.72,-219.571 1517.82,-206.16"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1520.65,-208.276 1525.11,-198.667 1515.63,-203.396 1520.65,-208.276"/>
+<path fill="none" stroke="midnightblue" d="M2032.84,-291.453C2101.33,-268.455 2236.15,-223.19 2299.95,-201.768"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2301.19,-205.043 2309.56,-198.542 2298.96,-198.407 2301.19,-205.043"/>
 </g>
 <!-- Node28&#45;&gt;Node27 -->
 <g id="edge73" class="edge"><title>Node28&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1543.13,-305.282C1413.52,-304.035 1086.58,-296.637 817,-255 780.353,-249.34 772.137,-243.313 736,-235 673.578,-220.641 600.399,-205.386 558.688,-196.839"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="559.286,-193.389 548.787,-194.815 557.884,-200.247 559.286,-193.389"/>
+<path fill="none" stroke="midnightblue" d="M1934.07,-304.971C1809.6,-303.082 1504.2,-294.446 1252,-255 1215.36,-249.27 1207.21,-242.992 1171,-235 1101.19,-219.592 1018.9,-204.224 973.795,-196.04"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="974.154,-192.548 963.691,-194.214 972.909,-199.436 974.154,-192.548"/>
 </g>
 <!-- Node29 -->
 <g id="node29" class="node"><title>Node29</title>
 <g id="a_node29"><a xlink:href="data__type_8h.html" target="_top" xlink:title="tvm/runtime/data_type.h">
-<polygon fill="white" stroke="black" points="1772,-179.5 1772,-198.5 1908,-198.5 1908,-179.5 1772,-179.5"/>
-<text text-anchor="middle" x="1840" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
+<polygon fill="white" stroke="black" points="2152,-179.5 2152,-198.5 2288,-198.5 2288,-179.5 2152,-179.5"/>
+<text text-anchor="middle" x="2220" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/data_type.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node29 -->
 <g id="edge41" class="edge"><title>Node28&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1646.09,-291.418C1673.42,-282.391 1708.38,-269.64 1738,-255 1767.87,-240.233 1799.91,-218.796 1819.94,-204.633"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1822.15,-207.353 1828.25,-198.688 1818.08,-201.66 1822.15,-207.353"/>
+<path fill="none" stroke="midnightblue" d="M2019.08,-291.337C2063.83,-268.768 2150.67,-224.966 2194.05,-203.091"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2195.75,-206.151 2203.1,-198.522 2192.6,-199.901 2195.75,-206.151"/>
 </g>
 <!-- Node30 -->
 <g id="node30" class="node"><title>Node30</title>
 <g id="a_node30"><a xlink:href="runtime_2module_8h.html" target="_top" xlink:title="Runtime container of the functions generated by TVM, This is used to support dynamically link...">
-<polygon fill="white" stroke="red" points="1512,-235.5 1512,-254.5 1636,-254.5 1636,-235.5 1512,-235.5"/>
-<text text-anchor="middle" x="1574" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
+<polygon fill="white" stroke="red" points="1790,-235.5 1790,-254.5 1914,-254.5 1914,-235.5 1790,-235.5"/>
+<text text-anchor="middle" x="1852" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/module.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node30 -->
 <g id="edge46" class="edge"><title>Node28&#45;&gt;Node30</title>
-<path fill="none" stroke="midnightblue" d="M1588,-291.399C1583.41,-283.288 1578.77,-273.007 1575.71,-264.281"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1579.05,-263.251 1572.85,-254.658 1572.34,-265.24 1579.05,-263.251"/>
+<path fill="none" stroke="midnightblue" d="M1952.22,-291.399C1927.94,-281.55 1897.52,-268.501 1876.51,-258.922"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1877.84,-255.683 1867.3,-254.658 1874.9,-262.035 1877.84,-255.683"/>
 </g>
 <!-- Node31 -->
 <g id="node31" class="node"><title>Node31</title>
 <g id="a_node31"><a xlink:href="ndarray_8h.html" target="_top" xlink:title="A device&#45;independent managed NDArray abstraction. ">
-<polygon fill="white" stroke="black" points="1218.5,-235.5 1218.5,-254.5 1341.5,-254.5 1341.5,-235.5 1218.5,-235.5"/>
-<text text-anchor="middle" x="1280" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
+<polygon fill="white" stroke="black" points="1294.5,-235.5 1294.5,-254.5 1417.5,-254.5 1417.5,-235.5 1294.5,-235.5"/>
+<text text-anchor="middle" x="1356" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/ndarray.h</text>
 </a>
 </g>
 </g>
 <!-- Node28&#45;&gt;Node31 -->
 <g id="edge55" class="edge"><title>Node28&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M1543.16,-294.931C1484.71,-284.063 1394.23,-267.24 1336.07,-256.425"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1336.42,-252.931 1325.95,-254.544 1335.14,-259.813 1336.42,-252.931"/>
+<path fill="none" stroke="midnightblue" d="M1934.37,-300.194C1818.65,-289.351 1555.26,-264.671 1427.78,-252.726"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1428.01,-249.232 1417.73,-251.784 1427.35,-256.201 1428.01,-249.232"/>
 </g>
 <!-- Node28&#45;&gt;Node33 -->
 <g id="edge66" class="edge"><title>Node28&#45;&gt;Node33</title>
-<path fill="none" stroke="midnightblue" d="M1656.53,-298.905C1759.91,-286.844 1977.2,-261.493 2068.36,-250.858"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2068.79,-254.331 2078.32,-249.696 2067.98,-247.378 2068.79,-254.331"/>
+<path fill="none" stroke="midnightblue" d="M2047.56,-297.352C2131.75,-285.223 2288.07,-262.702 2362.51,-251.977"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2363.06,-255.434 2372.46,-250.544 2362.06,-248.506 2363.06,-255.434"/>
 </g>
 <!-- Node34 -->
 <g id="node34" class="node"><title>Node34</title>
-<polygon fill="white" stroke="#bfbfbf" points="1828,-235.5 1828,-254.5 1870,-254.5 1870,-235.5 1828,-235.5"/>
-<text text-anchor="middle" x="1849" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">limits</text>
+<polygon fill="white" stroke="#bfbfbf" points="1120,-235.5 1120,-254.5 1162,-254.5 1162,-235.5 1120,-235.5"/>
+<text text-anchor="middle" x="1141" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">limits</text>
 </g>
 <!-- Node28&#45;&gt;Node34 -->
 <g id="edge67" class="edge"><title>Node28&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M1656.85,-292.411C1700.01,-282.392 1760.81,-268.112 1814,-255 1815.27,-254.687 1816.56,-254.366 1817.87,-254.04"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1819.08,-257.342 1827.92,-251.494 1817.36,-250.556 1819.08,-257.342"/>
+<path fill="none" stroke="midnightblue" d="M1934.37,-302.942C1806.01,-296.9 1483.17,-280.319 1214,-255 1200.29,-253.711 1185.18,-251.911 1172.28,-250.26"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1172.42,-246.747 1162.05,-248.922 1171.51,-253.688 1172.42,-246.747"/>
 </g>
 <!-- Node35 -->
 <g id="node35" class="node"><title>Node35</title>
-<polygon fill="white" stroke="#bfbfbf" points="1654.5,-235.5 1654.5,-254.5 1695.5,-254.5 1695.5,-235.5 1654.5,-235.5"/>
-<text text-anchor="middle" x="1675" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
+<polygon fill="white" stroke="#bfbfbf" points="1970.5,-235.5 1970.5,-254.5 2011.5,-254.5 2011.5,-235.5 1970.5,-235.5"/>
+<text text-anchor="middle" x="1991" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tuple</text>
 </g>
 <!-- Node28&#45;&gt;Node35 -->
 <g id="edge70" class="edge"><title>Node28&#45;&gt;Node35</title>
-<path fill="none" stroke="midnightblue" d="M1617.77,-291.399C1629.35,-282.218 1644.42,-270.258 1656.2,-260.918"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1658.43,-263.615 1664.09,-254.658 1654.08,-258.131 1658.43,-263.615"/>
+<path fill="none" stroke="midnightblue" d="M1991,-291.399C1991,-283.466 1991,-273.458 1991,-264.858"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1994.5,-264.658 1991,-254.658 1987.5,-264.658 1994.5,-264.658"/>
 </g>
 <!-- Node29&#45;&gt;Node10 -->
 <g id="edge42" class="edge"><title>Node29&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M1779.67,-179.46C1626.1,-157.723 1222.31,-100.57 1077.03,-80.0063"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1077.42,-76.526 1067.02,-78.5899 1076.44,-83.4569 1077.42,-76.526"/>
+<path fill="none" stroke="midnightblue" d="M2218.82,-179.157C2216.39,-164.819 2209.44,-136.725 2191,-123 2138.87,-84.194 1948.62,-75.1768 1854.49,-73.1039"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1854.39,-69.6012 1844.32,-72.8988 1854.24,-76.5998 1854.39,-69.6012"/>
 </g>
 <!-- Node29&#45;&gt;Node13 -->
 <g id="edge43" class="edge"><title>Node29&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1831.89,-179.154C1818.17,-164.814 1788.88,-136.715 1758,-123 1684.71,-90.4498 1592.93,-78.7257 1529.9,-74.586"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1529.84,-71.0762 1519.65,-73.9629 1529.42,-78.0633 1529.84,-71.0762"/>
+<path fill="none" stroke="midnightblue" d="M2200.07,-179.429C2165.42,-164.96 2091.5,-135.999 2026,-123 2009.89,-119.804 1547.08,-89.3079 1363.75,-77.3124"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1363.86,-73.8125 1353.66,-76.6522 1363.41,-80.7976 1363.86,-73.8125"/>
 </g>
 <!-- Node29&#45;&gt;Node17 -->
 <g id="edge44" class="edge"><title>Node29&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1898.56,-179.492C1987.43,-166.674 2161.69,-141.902 2310,-123 2459.6,-103.933 2638.66,-83.9513 2710.67,-76.0316"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2711.34,-79.4795 2720.9,-74.9091 2710.58,-72.5213 2711.34,-79.4795"/>
+<path fill="none" stroke="midnightblue" d="M2281.59,-179.454C2371.85,-166.949 2545.35,-142.982 2693,-123 2821.36,-105.628 2974.25,-85.398 3039.69,-76.7604"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.33,-80.2063 3049.78,-75.4281 3039.41,-73.2664 3040.33,-80.2063"/>
 </g>
 <!-- Node29&#45;&gt;Node18 -->
 <g id="edge45" class="edge"><title>Node29&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1855.78,-179.319C1892.13,-159.328 1981.95,-109.929 2025.52,-85.9667"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2027.24,-89.0105 2034.32,-81.1245 2023.87,-82.8769 2027.24,-89.0105"/>
+<path fill="none" stroke="midnightblue" d="M2231.8,-179.319C2258.51,-159.67 2323.84,-111.609 2357,-87.2169"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2359.08,-90.0272 2365.06,-81.282 2354.93,-84.3886 2359.08,-90.0272"/>
 </g>
 <!-- Node30&#45;&gt;Node11 -->
 <g id="edge48" class="edge"><title>Node30&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1636.31,-235.87C1639.25,-235.559 1642.15,-235.267 1645,-235 1904.79,-210.58 1970.72,-217.451 2231,-199 2243.36,-198.124 2256.48,-197.128 2269.23,-196.127"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2269.65,-199.604 2279.34,-195.324 2269.1,-192.626 2269.65,-199.604"/>
+<path fill="none" stroke="midnightblue" d="M1874.5,-235.444C1898.08,-226.478 1935.32,-212.314 1961.96,-202.183"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1963.5,-205.342 1971.6,-198.516 1961.01,-198.8 1963.5,-205.342"/>
 </g>
 <!-- Node30&#45;&gt;Node12 -->
 <g id="edge49" class="edge"><title>Node30&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1576.92,-235.121C1580.88,-221.24 1585.94,-194.398 1572,-179 1567.39,-173.907 1394.96,-153.311 1295.66,-141.83"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1296.03,-138.35 1285.7,-140.68 1295.23,-145.304 1296.03,-138.35"/>
+<path fill="none" stroke="midnightblue" d="M1840.37,-235.319C1823.57,-222.799 1791.51,-198.981 1764,-179 1749.82,-168.702 1733.75,-157.224 1721.39,-148.437"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1723.3,-145.503 1713.12,-142.57 1719.25,-151.212 1723.3,-145.503"/>
 </g>
 <!-- Node30&#45;&gt;Node13 -->
 <g id="edge47" class="edge"><title>Node30&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1580.03,-235.21C1588.03,-222.352 1600.16,-197.892 1591,-179 1571.44,-138.66 1528.37,-108.999 1496.11,-91.3702"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1497.38,-88.0828 1486.9,-86.5027 1494.11,-94.271 1497.38,-88.0828"/>
+<path fill="none" stroke="midnightblue" d="M1848.95,-235.362C1840.36,-212.438 1813.55,-149.971 1768,-123 1734.08,-102.917 1489.86,-84.9707 1364.24,-76.9463"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1364.13,-73.4327 1353.93,-76.2932 1363.69,-80.4187 1364.13,-73.4327"/>
 </g>
 <!-- Node30&#45;&gt;Node17 -->
 <g id="edge51" class="edge"><title>Node30&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1594.59,-235.449C1628.9,-221.531 1700.23,-194.028 1763,-179 2127.72,-91.6771 2586.12,-75.8146 2710.58,-73.057"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2711,-76.5491 2720.92,-72.8415 2710.85,-69.5506 2711,-76.5491"/>
+<path fill="none" stroke="midnightblue" d="M1895.58,-235.459C1938.91,-226.819 2007.23,-212.803 2066,-199 2100.42,-190.915 2108.32,-185.889 2143,-179 2490.03,-110.061 2919.51,-81.3134 3039.52,-74.2903"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3040.07,-77.765 3049.85,-73.6954 3039.66,-70.7766 3040.07,-77.765"/>
 </g>
 <!-- Node30&#45;&gt;Node25 -->
 <g id="edge50" class="edge"><title>Node30&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M1567.56,-235.083C1562.05,-227.455 1553.97,-216.264 1547.24,-206.941"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1550.01,-204.809 1541.32,-198.751 1544.34,-208.907 1550.01,-204.809"/>
+<path fill="none" stroke="midnightblue" d="M1914.28,-238.725C2014.69,-230.054 2209.06,-212.547 2296.35,-198.84"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2297.14,-202.256 2306.45,-197.188 2296.01,-195.348 2297.14,-202.256"/>
 </g>
 <!-- Node30&#45;&gt;Node26 -->
 <g id="edge52" class="edge"><title>Node30&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M1636.31,-235.78C1639.24,-235.494 1642.15,-235.231 1645,-235 1764.54,-225.29 2609.27,-198.785 2837.36,-191.739"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2837.55,-195.235 2847.44,-191.428 2837.33,-188.239 2837.55,-195.235"/>
+<path fill="none" stroke="midnightblue" d="M1789.58,-240.8C1753.48,-238.995 1707.18,-236.755 1666,-235 1217.39,-215.881 675.864,-197.613 501.789,-191.86"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="501.695,-188.355 491.585,-191.524 501.464,-195.352 501.695,-188.355"/>
 </g>
 <!-- Node30&#45;&gt;Node27 -->
 <g id="edge53" class="edge"><title>Node30&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1511.91,-240.804C1315.06,-230.67 709.004,-199.472 558.899,-191.745"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="559.058,-188.249 548.892,-191.23 558.698,-195.239 559.058,-188.249"/>
+<path fill="none" stroke="midnightblue" d="M1789.67,-240.31C1612.32,-229.808 1108.95,-200.003 973.767,-191.999"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="973.798,-188.495 963.608,-191.398 973.384,-195.483 973.798,-188.495"/>
 </g>
 <!-- Node30&#45;&gt;Node28 -->
 <g id="edge54" class="edge"><title>Node30&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M1582.71,-254.658C1587.37,-261.805 1592.52,-272.297 1596.31,-281.897"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1593.04,-283.146 1599.68,-291.399 1599.63,-280.805 1593.04,-283.146"/>
+<path fill="none" stroke="midnightblue" d="M1877.16,-254.658C1898.85,-263.16 1930.21,-276.393 1954.6,-287.228"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1953.34,-290.501 1963.9,-291.399 1956.21,-284.114 1953.34,-290.501"/>
 </g>
 <!-- Node31&#45;&gt;Node12 -->
 <g id="edge58" class="edge"><title>Node31&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1267.4,-235.227C1256.85,-227.127 1242.36,-214.093 1235,-199 1227.99,-184.63 1226.27,-166.434 1226.14,-152.951"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1229.64,-152.985 1226.32,-142.922 1222.64,-152.855 1229.64,-152.985"/>
+<path fill="none" stroke="midnightblue" d="M1368,-235.385C1388.09,-221.375 1430.27,-193.741 1470,-179 1522.64,-159.469 1585.33,-147.939 1632.11,-141.449"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1632.69,-144.902 1642.14,-140.101 1631.76,-137.964 1632.69,-144.902"/>
 </g>
 <!-- Node31&#45;&gt;Node13 -->
 <g id="edge56" class="edge"><title>Node31&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1313.16,-235.422C1334.97,-228.456 1363.07,-216.821 1383,-199 1415.15,-170.247 1436.81,-123.85 1447.72,-95.9541"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1451,-97.1723 1451.25,-86.5805 1444.45,-94.703 1451,-97.1723"/>
+<path fill="none" stroke="midnightblue" d="M1352.64,-235.26C1342.82,-209.757 1313.98,-134.807 1299.1,-96.1543"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1302.33,-94.7984 1295.47,-86.7228 1295.8,-97.3126 1302.33,-94.7984"/>
 </g>
 <!-- Node31&#45;&gt;Node19 -->
 <g id="edge63" class="edge"><title>Node31&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M1252.25,-235.478C1184.15,-214.714 1003.11,-160.47 850,-123 774.775,-104.59 685.364,-87.0432 639.139,-78.2893"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="639.625,-74.8194 629.15,-76.4074 638.329,-81.6984 639.625,-74.8194"/>
+<path fill="none" stroke="midnightblue" d="M1306.47,-235.431C1267.41,-227.936 1211.87,-215.639 1165,-199 1091.94,-173.066 1081.13,-148.724 1008,-123 942.429,-99.9354 862.107,-84.5888 818.954,-77.3377"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.503,-73.881 809.067,-75.7094 818.365,-80.788 819.503,-73.881"/>
 </g>
 <!-- Node31&#45;&gt;Node20 -->
 <g id="edge62" class="edge"><title>Node31&#45;&gt;Node20</title>
-<path fill="none" stroke="midnightblue" d="M1261.69,-235.369C1233.41,-220.877 1180.15,-188.69 1159,-143 1150.85,-125.406 1160.71,-104.355 1170.35,-89.8639"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1173.44,-91.5495 1176.45,-81.3903 1167.77,-87.457 1173.44,-91.5495"/>
+<path fill="none" stroke="midnightblue" d="M1359.22,-235.413C1367.78,-213.663 1393.14,-155.808 1432,-123 1457.2,-101.719 1492.62,-88.4062 1518.81,-80.8277"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1519.98,-84.1333 1528.7,-78.1076 1518.13,-77.3837 1519.98,-84.1333"/>
 </g>
 <!-- Node31&#45;&gt;Node27 -->
 <g id="edge64" class="edge"><title>Node31&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1218.22,-239.581C1065.9,-228.687 676.264,-200.819 558.934,-192.427"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="558.981,-188.922 548.757,-191.699 558.482,-195.904 558.981,-188.922"/>
+<path fill="none" stroke="midnightblue" d="M1294.17,-235.974C1205.04,-224.404 1043.51,-203.436 973.669,-194.37"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="974.028,-190.888 963.66,-193.071 973.127,-197.83 974.028,-190.888"/>
 </g>
 <!-- Node31&#45;&gt;Node29 -->
 <g id="edge57" class="edge"><title>Node31&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1341.53,-238.067C1443.89,-228.196 1648.99,-208.419 1761.57,-197.563"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1762.22,-201.017 1771.84,-196.573 1761.55,-194.049 1762.22,-201.017"/>
+<path fill="none" stroke="midnightblue" d="M1417.79,-240.138C1571.65,-230.522 1971.72,-205.518 2141.73,-194.892"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2142.09,-198.376 2151.85,-194.259 2141.65,-191.39 2142.09,-198.376"/>
 </g>
 <!-- Node32 -->
 <g id="node32" class="node"><title>Node32</title>
 <g id="a_node32"><a xlink:href="serializer_8h.html" target="_top" xlink:title="Serializer extension to support TVM data types Include this file to enable serialization of DLDataTyp...">
-<polygon fill="white" stroke="red" points="1244,-179.5 1244,-198.5 1374,-198.5 1374,-179.5 1244,-179.5"/>
-<text text-anchor="middle" x="1309" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/serializer.h</text>
+<polygon fill="white" stroke="red" points="1174,-179.5 1174,-198.5 1304,-198.5 1304,-179.5 1174,-179.5"/>
+<text text-anchor="middle" x="1239" y="-186.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/runtime/serializer.h</text>
 </a>
 </g>
 </g>
 <!-- Node31&#45;&gt;Node32 -->
 <g id="edge59" class="edge"><title>Node31&#45;&gt;Node32</title>
-<path fill="none" stroke="midnightblue" d="M1279.62,-235.083C1282.08,-227.534 1287.62,-216.495 1293.41,-207.23"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1296.44,-208.989 1299.17,-198.751 1290.65,-205.054 1296.44,-208.989"/>
+<path fill="none" stroke="midnightblue" d="M1332.37,-235.444C1311.64,-226.754 1281.97,-213.183 1261.56,-203.131"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1262.88,-199.875 1252.37,-198.516 1259.74,-206.131 1262.88,-199.875"/>
 </g>
 <!-- Node32&#45;&gt;Node13 -->
 <g id="edge60" class="edge"><title>Node32&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1320.05,-179.319C1343.22,-161.115 1397.43,-118.523 1429.96,-92.9606"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1432.42,-95.4757 1438.12,-86.5453 1428.1,-89.9714 1432.42,-95.4757"/>
+<path fill="none" stroke="midnightblue" d="M1242.83,-179.319C1250.56,-161.812 1268.25,-121.749 1279.64,-95.9702"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1282.96,-97.107 1283.8,-86.5453 1276.56,-94.2794 1282.96,-97.107"/>
 </g>
 <!-- Node32&#45;&gt;Node31 -->
 <g id="edge61" class="edge"><title>Node32&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M1309.43,-198.751C1307.02,-206.248 1301.5,-217.275 1295.72,-226.566"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1292.66,-224.84 1289.96,-235.083 1298.46,-228.764 1292.66,-224.84"/>
+<path fill="none" stroke="midnightblue" d="M1262.86,-198.655C1283.49,-207.307 1312.83,-220.727 1333.15,-230.726"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1331.81,-233.971 1342.32,-235.324 1334.95,-227.713 1331.81,-233.971"/>
 </g>
 <!-- Node36&#45;&gt;Node11 -->
 <g id="edge96" class="edge"><title>Node36&#45;&gt;Node11</title>
-<path fill="none" stroke="midnightblue" d="M1866.72,-487.051C1934.53,-482.544 2047.95,-471.47 2142,-445 2213.07,-424.999 2246.14,-434.214 2294,-378 2336.42,-328.176 2342.69,-245.899 2343.23,-208.971"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2346.73,-208.678 2343.25,-198.673 2339.73,-208.668 2346.73,-208.678"/>
+<path fill="none" stroke="midnightblue" d="M2118.92,-481.494C2126.23,-446.933 2149.04,-315.066 2092,-235 2080.73,-219.176 2062.49,-208.786 2044.78,-202.025"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2045.64,-198.619 2035.05,-198.631 2043.34,-205.229 2045.64,-198.619"/>
 </g>
 <!-- Node36&#45;&gt;Node12 -->
 <g id="edge98" class="edge"><title>Node36&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M1768.3,-481.435C1680.91,-461.216 1462.9,-405.833 1296,-322 1248.19,-297.987 1221.19,-302.197 1196,-255 1180.1,-225.201 1185.97,-211.253 1196,-179 1199.23,-168.622 1205.78,-158.521 1212.02,-150.527"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1214.79,-152.682 1218.52,-142.766 1209.42,-148.19 1214.79,-152.682"/>
+<path fill="none" stroke="midnightblue" d="M2057.3,-486.363C1935.39,-475.336 1659.38,-431.144 1541,-255 1505.74,-202.536 1600.9,-163.643 1659.28,-145.449"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1660.45,-148.75 1669.01,-142.5 1658.42,-142.051 1660.45,-148.75"/>
 </g>
 <!-- Node36&#45;&gt;Node13 -->
 <g id="edge94" class="edge"><title>Node36&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M1747.4,-484.619C1689.33,-478.43 1598.95,-466.275 1523,-445 1280.28,-377.01 1137.57,-417.552 1012,-199 973.424,-131.861 1246,-94.0078 1382.02,-79.4791"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1382.79,-82.918 1392.37,-78.391 1382.06,-75.9564 1382.79,-82.918"/>
+<path fill="none" stroke="midnightblue" d="M2057.13,-489.677C1924.1,-488.3 1607.79,-481.196 1508,-445 1419.82,-413.016 1207.84,-282.444 1165,-199 1141.43,-153.099 1201.9,-113.22 1246.73,-91.0602"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1248.52,-94.084 1256.03,-86.6047 1245.5,-87.7719 1248.52,-94.084"/>
 </g>
 <!-- Node36&#45;&gt;Node17 -->
 <g id="edge100" class="edge"><title>Node36&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M1866.74,-488.201C2005.96,-481.83 2359.74,-452.932 2618,-322 2685.84,-287.605 2710.1,-270.15 2737,-199 2749.14,-166.873 2753.7,-157.24 2751,-123 2750.16,-112.314 2748.33,-100.474 2746.64,-90.9452"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2750.06,-90.2104 2744.77,-81.0292 2743.18,-91.5037 2750.06,-90.2104"/>
+<path fill="none" stroke="midnightblue" d="M2176.78,-489.693C2259.13,-487.902 2411.41,-479.646 2536,-445 2740.74,-388.065 2771.86,-320.798 2946,-199 2981.57,-174.125 2995.82,-174.185 3026,-143 3041.36,-127.13 3054.62,-105.429 3062.9,-90.3111"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3066.22,-91.525 3067.8,-81.0496 3060.03,-88.249 3066.22,-91.525"/>
 </g>
 <!-- Node36&#45;&gt;Node18 -->
 <g id="edge101" class="edge"><title>Node36&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M1815.65,-481.479C1858.94,-438.811 2050,-250.241 2050,-246 2050,-246 2050,-246 2050,-188 2050,-153.864 2050,-114.052 2050,-91.2092"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2053.5,-91.1934 2050,-81.1934 2046.5,-91.1934 2053.5,-91.1934"/>
+<path fill="none" stroke="midnightblue" d="M2176.53,-488.96C2324.95,-482.649 2709.14,-442.511 2844,-199 2886.66,-121.976 2546.28,-86.271 2421.6,-75.8651"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2421.51,-72.3466 2411.26,-75.0193 2420.94,-79.3232 2421.51,-72.3466"/>
 </g>
 <!-- Node36&#45;&gt;Node27 -->
 <g id="edge102" class="edge"><title>Node36&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M1747.47,-489.286C1620.68,-487.123 1328,-478.542 1235,-445 1212.5,-436.884 1212.61,-424.253 1191,-414 1137.22,-388.487 1118.57,-396.524 1062,-378 914.831,-329.806 877.233,-318.517 736,-255 718.594,-247.172 715.797,-241.892 698,-235 650.983,-216.792 593.968,-203.571 558.58,-196.34"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="559.255,-192.906 548.763,-194.375 557.881,-199.77 559.255,-192.906"/>
+<path fill="none" stroke="midnightblue" d="M2057.34,-490.038C1909.8,-489.52 1531.09,-484.28 1412,-445 1387.88,-437.045 1385.88,-426.888 1364,-414 1264.11,-355.172 1239.45,-339.157 1134,-291 1093.31,-272.415 1079.86,-275.303 1040,-255 1010.72,-240.087 979.313,-218.685 959.668,-204.57"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="961.667,-201.696 951.52,-198.647 957.551,-207.358 961.667,-201.696"/>
 </g>
 <!-- Node36&#45;&gt;Node28 -->
 <g id="edge99" class="edge"><title>Node36&#45;&gt;Node28</title>
-<path fill="none" stroke="midnightblue" d="M1797.29,-481.442C1766.3,-454.12 1669.11,-368.43 1623.75,-328.441"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1625.98,-325.742 1616.17,-321.755 1621.35,-330.993 1625.98,-325.742"/>
+<path fill="none" stroke="midnightblue" d="M2100.13,-481.477C2085.99,-473.624 2066.07,-460.808 2053,-445 2024.47,-410.488 2006.39,-360.732 1997.53,-331.495"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2000.84,-330.34 1994.68,-321.719 1994.12,-332.299 2000.84,-330.34"/>
 </g>
 <!-- Node36&#45;&gt;Node29 -->
 <g id="edge95" class="edge"><title>Node36&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1806.37,-481.306C1805.63,-466.909 1805.31,-437.385 1813,-414 1839.02,-334.924 1889.12,-335.039 1912,-255 1914.44,-246.453 1916.31,-242.775 1912,-235 1903.91,-220.405 1888.9,-209.918 1874.66,-202.761"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1876.05,-199.546 1865.5,-198.528 1873.11,-205.9 1876.05,-199.546"/>
+<path fill="none" stroke="midnightblue" d="M2119.97,-481.345C2134.04,-440.37 2194.08,-265.486 2213.74,-208.228"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2217.08,-209.285 2217.02,-198.69 2210.46,-207.012 2217.08,-209.285"/>
 </g>
 <!-- Node36&#45;&gt;Node31 -->
 <g id="edge97" class="edge"><title>Node36&#45;&gt;Node31</title>
-<path fill="none" stroke="midnightblue" d="M1788.55,-481.459C1709.9,-445.044 1402.31,-302.629 1307.79,-258.865"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1309.12,-255.624 1298.57,-254.598 1306.17,-261.976 1309.12,-255.624"/>
+<path fill="none" stroke="midnightblue" d="M2057.16,-490.131C1932.79,-489.599 1650.77,-483.981 1564,-445 1471.8,-403.579 1395.46,-303.402 1367.47,-263.158"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1370.35,-261.18 1361.82,-254.901 1364.58,-265.131 1370.35,-261.18"/>
 </g>
 <!-- Node36&#45;&gt;Node37 -->
 <g id="edge78" class="edge"><title>Node36&#45;&gt;Node37</title>
-<path fill="none" stroke="midnightblue" d="M1827.35,-481.475C1847.84,-472.889 1880.07,-459.383 1906.21,-448.429"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1907.66,-451.616 1915.53,-444.523 1904.96,-445.16 1907.66,-451.616"/>
+<path fill="none" stroke="midnightblue" d="M2131.61,-481.475C2145.82,-473.191 2167.87,-460.325 2186.27,-449.591"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2188.09,-452.585 2194.96,-444.523 2184.56,-446.539 2188.09,-452.585"/>
 </g>
 <!-- Node36&#45;&gt;Node39 -->
 <g id="edge88" class="edge"><title>Node36&#45;&gt;Node39</title>
-<path fill="none" stroke="midnightblue" d="M1846.5,-481.425C1885.95,-472.849 1948.6,-459.199 2012.49,-445.108"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2013.32,-448.508 2022.33,-442.935 2011.82,-441.672 2013.32,-448.508"/>
+<path fill="none" stroke="midnightblue" d="M2155.68,-481.475C2198.9,-471.951 2269.6,-456.371 2321.48,-444.938"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2322.25,-448.352 2331.27,-442.782 2320.75,-441.516 2322.25,-448.352"/>
 </g>
 <!-- Node37&#45;&gt;Node8 -->
 <g id="edge79" class="edge"><title>Node37&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M2004.84,-415.799C2007.6,-415.187 2010.33,-414.585 2013,-414 2068.2,-401.916 2131.58,-388.598 2174.75,-379.608"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2175.65,-382.996 2184.73,-377.533 2174.23,-376.143 2175.65,-382.996"/>
+<path fill="none" stroke="midnightblue" d="M2239.85,-414.399C2253.7,-405.04 2271.81,-392.792 2285.74,-383.377"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2287.87,-386.158 2294.2,-377.658 2283.95,-380.36 2287.87,-386.158"/>
 </g>
 <!-- Node37&#45;&gt;Node17 -->
 <g id="edge87" class="edge"><title>Node37&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2004.78,-415.532C2007.56,-414.991 2010.31,-414.476 2013,-414 2136.98,-392.064 2172.8,-412.106 2294,-378 2449,-334.382 2484.47,-301.08 2609,-199 2654.13,-162.01 2702.97,-113.52 2727.32,-88.6897"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2730.13,-90.8288 2734.61,-81.227 2725.12,-85.9403 2730.13,-90.8288"/>
+<path fill="none" stroke="midnightblue" d="M2274.68,-416.505C2353.74,-398.895 2502.63,-363.589 2626,-322 2699.44,-297.242 2715.76,-285.526 2787,-255 2843.7,-230.704 2859.75,-228.371 2914,-199 2954.11,-177.283 2964.42,-171.539 3000,-143 3021.19,-126.006 3043.16,-103.695 3057.17,-88.767"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3059.84,-91.0266 3064.08,-81.3135 3054.71,-86.2677 3059.84,-91.0266"/>
 </g>
 <!-- Node37&#45;&gt;Node29 -->
 <g id="edge86" class="edge"><title>Node37&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M1954,-414.333C1965.11,-380.117 1988.01,-291.62 1950,-235 1939.08,-218.734 1921.13,-208.344 1902.86,-201.708"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1903.91,-198.369 1893.32,-198.569 1901.72,-205.018 1903.91,-198.369"/>
+<path fill="none" stroke="midnightblue" d="M2222.21,-414.247C2230.7,-375.556 2252.54,-269.176 2244,-235 2241.56,-225.245 2236.56,-215.29 2231.76,-207.231"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2234.69,-205.322 2226.37,-198.768 2228.79,-209.083 2234.69,-205.322"/>
 </g>
 <!-- Node38 -->
 <g id="node38" class="node"><title>Node38</title>
 <g id="a_node38"><a xlink:href="functor_8h.html" target="_top" xlink:title="Defines the Functor data structures. ">
-<polygon fill="white" stroke="black" points="826.5,-235.5 826.5,-254.5 933.5,-254.5 933.5,-235.5 826.5,-235.5"/>
-<text text-anchor="middle" x="880" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
+<polygon fill="white" stroke="black" points="1550.5,-235.5 1550.5,-254.5 1657.5,-254.5 1657.5,-235.5 1550.5,-235.5"/>
+<text text-anchor="middle" x="1604" y="-242.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/functor.h</text>
 </a>
 </g>
 </g>
 <!-- Node37&#45;&gt;Node38 -->
 <g id="edge80" class="edge"><title>Node37&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M1893.5,-425.428C1719.43,-415.276 1186.17,-380.101 1024,-322 1000.09,-313.434 998.215,-303.306 976,-291 954.237,-278.944 928.693,-267.074 909.428,-258.555"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="910.814,-255.341 900.25,-254.539 908.008,-261.754 910.814,-255.341"/>
+<path fill="none" stroke="midnightblue" d="M2170.24,-414.462C2100.2,-394.253 1967.08,-355.685 1854,-322 1778.5,-299.511 1690.4,-272.563 1641.53,-257.552"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1642.3,-254.128 1631.72,-254.536 1640.25,-260.82 1642.3,-254.128"/>
 </g>
 <!-- Node38&#45;&gt;Node10 -->
 <g id="edge81" class="edge"><title>Node38&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M874.666,-235.376C862.218,-214.031 834.199,-157.942 860,-123 885.153,-88.9357 932.932,-77.1302 970.457,-73.3674"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="971.069,-76.8286 980.742,-72.5075 970.485,-69.8529 971.069,-76.8286"/>
+<path fill="none" stroke="midnightblue" d="M1603.37,-235.339C1602.29,-213.417 1602.59,-155.189 1633,-123 1662.54,-91.736 1710.61,-79.5975 1747.78,-74.9976"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1748.39,-78.4522 1757.95,-73.8904 1747.63,-71.4933 1748.39,-78.4522"/>
 </g>
 <!-- Node38&#45;&gt;Node12 -->
 <g id="edge82" class="edge"><title>Node38&#45;&gt;Node12</title>
-<path fill="none" stroke="midnightblue" d="M894.518,-235.328C918.283,-221.487 967.323,-194.4 1012,-179 1059.73,-162.547 1115.59,-151.077 1158.41,-143.836"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1159.15,-147.261 1168.45,-142.175 1158.01,-140.355 1159.15,-147.261"/>
+<path fill="none" stroke="midnightblue" d="M1611.61,-235.368C1627.76,-217.055 1665.68,-174.049 1686.57,-150.362"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1689.44,-152.407 1693.42,-142.591 1684.18,-147.777 1689.44,-152.407"/>
 </g>
 <!-- Node38&#45;&gt;Node18 -->
 <g id="edge83" class="edge"><title>Node38&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M888.488,-235.064C902.229,-221.104 930.768,-194.156 960,-179 1041.57,-136.709 1068.38,-138.134 1159,-123 1324.63,-95.3406 1848.61,-78.3145 2005.31,-73.7457"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2005.63,-77.2381 2015.52,-73.4505 2005.42,-70.241 2005.63,-77.2381"/>
+<path fill="none" stroke="midnightblue" d="M1624.49,-235.38C1678.49,-213.037 1829.55,-152.919 1961,-123 2094.3,-92.6599 2256.05,-79.6515 2332.66,-74.878"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2333.12,-78.3565 2342.89,-74.2582 2332.7,-71.3693 2333.12,-78.3565"/>
 </g>
 <!-- Node38&#45;&gt;Node19 -->
 <g id="edge84" class="edge"><title>Node38&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M866.511,-235.495C822.736,-207.894 684.332,-120.629 630.102,-86.4357"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="631.896,-83.4289 621.57,-81.056 628.162,-89.3502 631.896,-83.4289"/>
+<path fill="none" stroke="midnightblue" d="M1566.37,-235.429C1510.94,-222.844 1404.07,-198.72 1313,-179 1194.5,-153.339 1164.83,-147.09 1046,-123 964.111,-106.399 867.405,-87.7163 818.95,-78.4187"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="819.568,-74.9735 809.088,-76.5281 818.25,-81.8483 819.568,-74.9735"/>
 </g>
 <!-- Node38&#45;&gt;Node27 -->
 <g id="edge85" class="edge"><title>Node38&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M826.469,-235.857C752.312,-224.577 620.494,-204.526 558.712,-195.128"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="559.131,-191.652 548.718,-193.608 558.078,-198.572 559.131,-191.652"/>
+<path fill="none" stroke="midnightblue" d="M1550.22,-239.627C1418.31,-228.899 1081.59,-201.515 973.765,-192.746"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="974.021,-189.255 963.77,-191.933 973.453,-196.232 974.021,-189.255"/>
 </g>
 <!-- Node39&#45;&gt;Node8 -->
 <g id="edge89" class="edge"><title>Node39&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M2113.07,-414.399C2138.02,-404.372 2171.21,-391.028 2195.14,-381.405"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2196.49,-384.635 2204.46,-377.658 2193.88,-378.141 2196.49,-384.635"/>
+<path fill="none" stroke="midnightblue" d="M2368.04,-414.399C2355.58,-405.129 2339.3,-393.025 2326.69,-383.647"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2328.75,-380.817 2318.64,-377.658 2324.58,-386.434 2328.75,-380.817"/>
 </g>
 <!-- Node39&#45;&gt;Node17 -->
 <g id="edge93" class="edge"><title>Node39&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2133.66,-422.483C2226.3,-411.142 2416.76,-382.137 2567,-322 2647.68,-289.705 2685.81,-279.317 2719,-199 2734.03,-162.632 2739.74,-116.463 2741.84,-91.1703"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2745.33,-91.3562 2742.57,-81.1284 2738.35,-90.8476 2745.33,-91.3562"/>
+<path fill="none" stroke="midnightblue" d="M2424.88,-414.415C2497.02,-387.086 2658.39,-323.501 2787,-255 2890.8,-199.715 3006.51,-119.317 3052.05,-86.8718"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3054.1,-89.708 3060.2,-81.0438 3050.03,-84.0144 3054.1,-89.708"/>
 </g>
 <!-- Node39&#45;&gt;Node29 -->
 <g id="edge91" class="edge"><title>Node39&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M2073.88,-414.301C2062.89,-378.835 2029.47,-285.598 1969,-235 1949.26,-218.485 1923.08,-207.886 1899.47,-201.155"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1900.09,-197.699 1889.53,-198.5 1898.29,-204.462 1900.09,-197.699"/>
+<path fill="none" stroke="midnightblue" d="M2386.92,-414.266C2386.32,-399.488 2383.87,-376.05 2375,-358 2342.06,-290.981 2273.79,-231.712 2239.93,-205.013"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2241.78,-202.015 2231.73,-198.654 2237.49,-207.547 2241.78,-202.015"/>
 </g>
 <!-- Node39&#45;&gt;Node33 -->
 <g id="edge92" class="edge"><title>Node39&#45;&gt;Node33</title>
-<path fill="none" stroke="midnightblue" d="M2080.46,-414.483C2086.16,-381.957 2100.3,-301.343 2106.72,-264.683"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2110.17,-265.273 2108.45,-254.819 2103.28,-264.064 2110.17,-265.273"/>
+<path fill="none" stroke="midnightblue" d="M2395,-414.438C2400.13,-404.585 2406.31,-390.92 2409,-378 2417.27,-338.3 2411.73,-290.463 2407.51,-264.673"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2410.95,-264.015 2405.78,-254.77 2404.06,-265.225 2410.95,-264.015"/>
 </g>
 <!-- Node39&#45;&gt;Node38 -->
 <g id="edge90" class="edge"><title>Node39&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M2022.41,-415.696C2019.23,-415.09 2016.08,-414.519 2013,-414 1660.52,-354.56 1566.35,-382.189 1214,-322 1107.94,-303.883 984.965,-273.413 921.96,-257.1"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="922.568,-253.642 912.009,-254.512 920.806,-260.416 922.568,-253.642"/>
+<path fill="none" stroke="midnightblue" d="M2331.28,-417.897C2220.03,-396.498 1974.02,-347.98 1892,-322 1858.4,-311.356 1852.63,-301.55 1819,-291 1769.14,-275.362 1711.07,-263.572 1667.85,-255.992"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1668.21,-252.501 1657.76,-254.25 1667.01,-259.4 1668.21,-252.501"/>
 </g>
 <!-- Node40&#45;&gt;Node38 -->
 <g id="edge104" class="edge"><title>Node40&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M1197.66,-481.448C1174.28,-473.739 1140.73,-461.144 1114,-445 1022.33,-389.629 930.493,-298.678 895.155,-262.037"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="897.573,-259.502 888.132,-254.695 892.515,-264.34 897.573,-259.502"/>
+<path fill="none" stroke="midnightblue" d="M1373.51,-481.316C1408.64,-445.443 1542.78,-308.503 1588.57,-261.751"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1591.1,-264.173 1595.6,-254.58 1586.1,-259.275 1591.1,-264.173"/>
 </g>
 <!-- Node41 -->
 <g id="node41" class="node"><title>Node41</title>
-<polygon fill="white" stroke="#bfbfbf" points="1123.5,-420 1123.5,-439 1182.5,-439 1182.5,-420 1123.5,-420"/>
-<text text-anchor="middle" x="1153" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
+<polygon fill="white" stroke="#bfbfbf" points="1262.5,-420 1262.5,-439 1321.5,-439 1321.5,-420 1262.5,-420"/>
+<text text-anchor="middle" x="1292" y="-427" font-family="Helvetica,sans-Serif" font-size="10.00">iostream</text>
 </g>
 <!-- Node40&#45;&gt;Node41 -->
 <g id="edge105" class="edge"><title>Node40&#45;&gt;Node41</title>
-<path fill="none" stroke="midnightblue" d="M1215.54,-481.475C1204.05,-472.108 1185.37,-456.884 1171.41,-445.508"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1173.4,-442.614 1163.44,-439.009 1168.98,-448.04 1173.4,-442.614"/>
+<path fill="none" stroke="midnightblue" d="M1354.54,-481.475C1343.05,-472.108 1324.37,-456.884 1310.41,-445.508"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1312.4,-442.614 1302.44,-439.009 1307.98,-448.04 1312.4,-442.614"/>
 </g>
 <!-- Node42&#45;&gt;Node17 -->
 <g id="edge142" class="edge"><title>Node42&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2434.66,-768.498C2614.04,-762.608 3199,-737.46 3199,-660 3199,-660 3199,-660 3199,-188 3199,-100.547 2879.84,-78.5819 2775.54,-73.7387"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2775.45,-70.2311 2765.3,-73.2867 2775.14,-77.2243 2775.45,-70.2311"/>
+<path fill="none" stroke="midnightblue" d="M1336.93,-768.075C1620.12,-757.253 2971.18,-701.288 3133,-613 3206.49,-572.906 3319,-422.275 3319,-369 3319,-369 3319,-369 3319,-188 3319,-94.3111 3171.37,-76.4515 3104.38,-73.1702"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3104.49,-69.6719 3094.36,-72.7594 3104.2,-76.666 3104.49,-69.6719"/>
 </g>
 <!-- Node42&#45;&gt;Node26 -->
 <g id="edge143" class="edge"><title>Node42&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2434.67,-761.915C2578.15,-738.018 2971,-662.163 2971,-548 2971,-548 2971,-548 2971,-428.5 2971,-342.226 2924.81,-246.519 2903.98,-207.748"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2906.93,-205.851 2899.05,-198.765 2900.79,-209.216 2906.93,-205.851"/>
+<path fill="none" stroke="midnightblue" d="M1233.47,-768.696C1050.92,-763.401 446,-739.834 446,-660 446,-660 446,-660 446,-546 446,-416.664 444.444,-384.336 444,-255 443.969,-246.111 443.901,-243.888 444,-235 444.096,-226.396 444.294,-216.869 444.489,-208.804"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="447.992,-208.713 444.751,-198.626 440.995,-208.532 447.992,-208.713"/>
 </g>
 <!-- Node43 -->
 <g id="node43" class="node"><title>Node43</title>
 <g id="a_node43"><a xlink:href="with_8h.html" target="_top" xlink:title="RAII wrapper function to enter and exit a context object similar to python&#39;s with syntax...">
-<polygon fill="white" stroke="black" points="284,-537.5 284,-556.5 390,-556.5 390,-537.5 284,-537.5"/>
-<text text-anchor="middle" x="337" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/support/with.h</text>
+<polygon fill="white" stroke="black" points="588,-537.5 588,-556.5 694,-556.5 694,-537.5 588,-537.5"/>
+<text text-anchor="middle" x="641" y="-544.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/support/with.h</text>
 </a>
 </g>
 </g>
 <!-- Node42&#45;&gt;Node43 -->
 <g id="edge117" class="edge"><title>Node42&#45;&gt;Node43</title>
-<path fill="none" stroke="midnightblue" d="M2331.02,-766.454C2021.82,-745.293 436.549,-635.833 392,-613 371.712,-602.602 355.908,-581.143 346.548,-565.723"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="349.352,-563.577 341.345,-556.639 343.278,-567.056 349.352,-563.577"/>
+<path fill="none" stroke="midnightblue" d="M1233.33,-761.467C1132.91,-743.58 906.021,-696.727 732,-613 704.185,-599.617 675.821,-577.788 658.318,-563.164"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="660.53,-560.451 650.648,-556.633 655.992,-565.781 660.53,-560.451"/>
 </g>
 <!-- Node44 -->
 <g id="node44" class="node"><title>Node44</title>
 <g id="a_node44"><a xlink:href="tensor_8h.html" target="_top" xlink:title="Dataflow tensor object. ">
-<polygon fill="white" stroke="red" points="2399,-649.5 2399,-668.5 2489,-668.5 2489,-649.5 2399,-649.5"/>
-<text text-anchor="middle" x="2444" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor.h</text>
+<polygon fill="white" stroke="red" points="1341,-649.5 1341,-668.5 1431,-668.5 1431,-649.5 1341,-649.5"/>
+<text text-anchor="middle" x="1386" y="-656.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor.h</text>
 </a>
 </g>
 </g>
 <!-- Node42&#45;&gt;Node44 -->
 <g id="edge120" class="edge"><title>Node42&#45;&gt;Node44</title>
-<path fill="none" stroke="midnightblue" d="M2384.26,-761.078C2386.39,-748.054 2391.53,-723.39 2402,-705 2408.25,-694.022 2417.69,-683.586 2426.03,-675.534"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2428.57,-677.952 2433.56,-668.603 2423.83,-672.802 2428.57,-677.952"/>
+<path fill="none" stroke="midnightblue" d="M1288.34,-761.21C1293.7,-747.917 1305.25,-722.408 1321,-705 1332.26,-692.552 1347.6,-681.727 1360.55,-673.815"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1362.61,-676.665 1369.46,-668.587 1359.07,-670.627 1362.61,-676.665"/>
 </g>
 <!-- Node45 -->
 <g id="node45" class="node"><title>Node45</title>
 <g id="a_node45"><a xlink:href="tir_2expr_8h.html" target="_top" xlink:title="TIR expressions. ">
-<polygon fill="white" stroke="red" points="2282,-593.5 2282,-612.5 2362,-612.5 2362,-593.5 2282,-593.5"/>
-<text text-anchor="middle" x="2322" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
+<polygon fill="white" stroke="red" points="1213,-593.5 1213,-612.5 1293,-612.5 1293,-593.5 1213,-593.5"/>
+<text text-anchor="middle" x="1253" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/tir/expr.h</text>
 </a>
 </g>
 </g>
 <!-- Node42&#45;&gt;Node45 -->
 <g id="edge141" class="edge"><title>Node42&#45;&gt;Node45</title>
-<path fill="none" stroke="midnightblue" d="M2379.72,-761.075C2370.08,-734.832 2341.68,-657.545 2328.66,-622.117"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2331.88,-620.747 2325.15,-612.568 2325.31,-623.162 2331.88,-620.747"/>
+<path fill="none" stroke="midnightblue" d="M1283.28,-761.075C1278.24,-734.945 1263.45,-658.211 1256.58,-622.577"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1259.98,-621.725 1254.65,-612.568 1253.11,-623.05 1259.98,-621.725"/>
 </g>
 <!-- Node46 -->
 <g id="node46" class="node"><title>Node46</title>
 <g id="a_node46"><a xlink:href="tensor__intrin_8h.html" target="_top" xlink:title="Tensor intrinsic operations. ">
-<polygon fill="white" stroke="red" points="2411,-705.5 2411,-724.5 2531,-724.5 2531,-705.5 2411,-705.5"/>
-<text text-anchor="middle" x="2471" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor_intrin.h</text>
+<polygon fill="white" stroke="red" points="1330,-705.5 1330,-724.5 1450,-724.5 1450,-705.5 1330,-705.5"/>
+<text text-anchor="middle" x="1390" y="-712.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/te/tensor_intrin.h</text>
 </a>
 </g>
 </g>
 <!-- Node42&#45;&gt;Node46 -->
 <g id="edge138" class="edge"><title>Node42&#45;&gt;Node46</title>
-<path fill="none" stroke="midnightblue" d="M2397.14,-761.324C2410.87,-752.9 2431.94,-739.971 2448.06,-730.074"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2450.2,-732.868 2456.9,-724.655 2446.54,-726.902 2450.2,-732.868"/>
+<path fill="none" stroke="midnightblue" d="M1301.87,-761.324C1318.71,-752.664 1344.81,-739.242 1364.24,-729.249"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1365.88,-732.341 1373.17,-724.655 1362.68,-726.116 1365.88,-732.341"/>
 </g>
 <!-- Node43&#45;&gt;Node10 -->
 <g id="edge118" class="edge"><title>Node43&#45;&gt;Node10</title>
-<path fill="none" stroke="midnightblue" d="M337.772,-537.367C342.324,-491.917 369.815,-278.694 492,-179 565.309,-119.185 851.179,-87.6638 970.852,-76.865"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="971.232,-80.3451 980.883,-75.9734 970.613,-73.3726 971.232,-80.3451"/>
+<path fill="none" stroke="midnightblue" d="M683.835,-537.453C755.621,-522.53 904.225,-489.064 1025,-445 1210.27,-377.405 1257.48,-357.438 1426,-255 1473.7,-226.004 1480.03,-210.669 1526,-179 1564.8,-152.273 1572.82,-141.845 1616,-123 1658.86,-104.295 1710.37,-90.914 1748.15,-82.6453"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1748.88,-86.0671 1757.93,-80.5509 1747.42,-79.2223 1748.88,-86.0671"/>
 </g>
 <!-- Node43&#45;&gt;Node19 -->
 <g id="edge119" class="edge"><title>Node43&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M326.524,-537.409C287.388,-504.284 152,-380.007 152,-246 152,-246 152,-246 152,-188 152,-142.874 188.682,-141.144 230,-123 292.095,-95.7324 496.879,-79.7664 576.212,-74.4759"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="576.795,-77.9453 586.546,-73.8002 576.338,-70.9603 576.795,-77.9453"/>
+<path fill="none" stroke="midnightblue" d="M632.821,-537.263C605.935,-507.591 522,-406.99 522,-307.5 522,-307.5 522,-307.5 522,-188 522,-86.7173 686.263,-73.292 756.623,-72.1871"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="756.711,-75.6866 766.682,-72.1042 756.653,-68.6869 756.711,-75.6866"/>
 </g>
 <!-- Node44&#45;&gt;Node8 -->
 <g id="edge121" class="edge"><title>Node44&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M2442.21,-649.388C2437.75,-628.987 2424.97,-576.466 2404,-537 2371.59,-476.004 2361.61,-458.761 2309,-414 2293.35,-400.681 2273.11,-389.614 2256.54,-381.787"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2257.83,-378.525 2247.27,-377.561 2254.92,-384.894 2257.83,-378.525"/>
+<path fill="none" stroke="midnightblue" d="M1431.21,-657.816C1624.15,-655.859 2373.05,-635.924 2468,-445 2474.14,-432.664 2476.33,-424.976 2468,-414 2456.28,-398.56 2412.97,-386.982 2374.21,-379.439"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2374.43,-375.919 2363.96,-377.513 2373.14,-382.799 2374.43,-375.919"/>
 </g>
 <!-- Node44&#45;&gt;Node17 -->
 <g id="edge134" class="edge"><title>Node44&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2489.16,-658.712C2573.33,-658.931 2759.24,-654.179 2909,-613 2974.37,-595.026 3047,-615.796 3047,-548 3047,-548 3047,-548 3047,-428.5 3047,-345.649 3085,-328.851 3085,-246 3085,-246 3085,-246 3085,-188 3085,-157.205 3084.8,-142.538 3061,-123 3017.74,-87.4951 2847.63,-76.637 2775.55,-73.5909"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2775.39,-70.0817 2765.26,-73.1813 2775.11,-77.0762 2775.39,-70.0817"/>
+<path fill="none" stroke="midnightblue" d="M1431.08,-657.741C1691.85,-656.125 2998.35,-646.381 3076,-613 3180.21,-568.201 3284.9,-215.323 3219,-123 3193,-86.5754 3138.99,-76.1506 3104.18,-73.3256"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3104.25,-69.8228 3094.04,-72.6725 3103.8,-76.8084 3104.25,-69.8228"/>
 </g>
 <!-- Node44&#45;&gt;Node18 -->
 <g id="edge135" class="edge"><title>Node44&#45;&gt;Node18</title>
-<path fill="none" stroke="midnightblue" d="M2489.31,-656.533C2603.68,-651.604 2895,-630.911 2895,-548 2895,-548 2895,-548 2895,-428.5 2895,-396.555 2901.99,-389.167 2909,-358 2926.89,-278.469 3002.76,-240.275 2949,-179 2891.89,-113.913 2266.92,-81.9641 2094.07,-74.3321"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2094.19,-70.8343 2084.05,-73.8948 2093.89,-77.8277 2094.19,-70.8343"/>
+<path fill="none" stroke="midnightblue" d="M1431.22,-657.934C1689.9,-657.413 2973.25,-652.821 3046,-613 3129.05,-567.54 3158.82,-501.221 3122,-414 3049.88,-243.164 2990.59,-202.369 2823,-123 2752.5,-89.6127 2519.49,-77.5605 2421.28,-73.893"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2421.21,-70.3884 2411.09,-73.5249 2420.96,-77.3839 2421.21,-70.3884"/>
 </g>
 <!-- Node44&#45;&gt;Node19 -->
 <g id="edge136" class="edge"><title>Node44&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2398.88,-657.636C2180.49,-655.467 1232.21,-641.274 951,-557 752.146,-497.407 737.586,-387.671 651,-199 639.631,-174.228 634.959,-168.742 626,-143 620.037,-125.867 615.1,-105.771 611.914,-91.4271"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="615.266,-90.3682 609.748,-81.3239 608.422,-91.8354 615.266,-90.3682"/>
+<path fill="none" stroke="midnightblue" d="M1340.74,-656.969C1242.93,-654.196 1004.78,-644.508 808,-613 499.869,-563.664 323.419,-543.302 204,-255 165.311,-161.597 209.839,-182.427 368,-123 439.533,-96.1221 672.301,-79.5719 756.903,-74.3194"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="757.153,-77.8108 766.921,-73.7076 756.726,-70.8238 757.153,-77.8108"/>
 </g>
 <!-- Node44&#45;&gt;Node27 -->
 <g id="edge137" class="edge"><title>Node44&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M2398.85,-658.057C2153.88,-658.19 989.76,-656.512 836,-613 788.101,-599.445 775.454,-590.899 739,-557 709.206,-529.294 571.794,-276.709 534.411,-207.478"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="537.473,-205.782 529.646,-198.642 531.312,-209.105 537.473,-205.782"/>
+<path fill="none" stroke="midnightblue" d="M1340.69,-657.073C1216.07,-654.141 874.814,-643.392 835,-613 761.469,-556.87 744.999,-501.843 774,-414 803.923,-323.364 886.241,-239.452 922.482,-205.683"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="925.255,-207.889 930.259,-198.55 920.523,-202.73 925.255,-207.889"/>
 </g>
 <!-- Node44&#45;&gt;Node45 -->
 <g id="edge122" class="edge"><title>Node44&#45;&gt;Node45</title>
-<path fill="none" stroke="midnightblue" d="M2424.67,-649.444C2404.68,-640.596 2373.26,-626.687 2350.44,-616.586"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2351.8,-613.363 2341.24,-612.516 2348.97,-619.764 2351.8,-613.363"/>
+<path fill="none" stroke="midnightblue" d="M1364.93,-649.444C1342.94,-640.517 1308.27,-626.439 1283.34,-616.317"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1284.56,-613.035 1273.98,-612.516 1281.92,-619.521 1284.56,-613.035"/>
 </g>
 <!-- Node45&#45;&gt;Node7 -->
 <g id="edge125" class="edge"><title>Node45&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M2281.68,-596.904C2269.87,-595.515 2256.93,-594.094 2245,-593 2005.47,-571.031 1944.23,-582.026 1705,-557 1703.73,-556.867 1702.45,-556.729 1701.16,-556.584"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1701.48,-553.098 1691.14,-555.384 1700.65,-560.048 1701.48,-553.098"/>
+<path fill="none" stroke="midnightblue" d="M1293.06,-595.019C1297.75,-594.291 1302.48,-593.6 1307,-593 1448.4,-574.245 1615.48,-559.648 1702.51,-552.612"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1703.04,-556.081 1712.72,-551.792 1702.48,-549.104 1703.04,-556.081"/>
 </g>
 <!-- Node45&#45;&gt;Node8 -->
 <g id="edge123" class="edge"><title>Node45&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M2324.74,-593.409C2330.73,-573.052 2343.34,-520.621 2328,-481 2311.69,-438.877 2271.36,-402.862 2246.57,-383.72"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2248.62,-380.879 2238.52,-377.671 2244.41,-386.475 2248.62,-380.879"/>
+<path fill="none" stroke="midnightblue" d="M1293.26,-600.485C1465.78,-593.656 2143.11,-563.318 2346,-501 2396.56,-485.471 2423.79,-490.352 2451,-445 2458.09,-433.186 2459.16,-425.101 2451,-414 2433.8,-390.601 2404.48,-379.029 2376.77,-373.429"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2377.12,-369.936 2366.66,-371.625 2375.89,-376.828 2377.12,-369.936"/>
 </g>
 <!-- Node45&#45;&gt;Node13 -->
 <g id="edge126" class="edge"><title>Node45&#45;&gt;Node13</title>
-<path fill="none" stroke="midnightblue" d="M2362.26,-599.024C2460.6,-590.655 2705,-562.738 2705,-492 2705,-492 2705,-492 2705,-428.5 2705,-302.84 2669.79,-257.917 2572,-179 2501.16,-121.835 2464.77,-138.034 2375,-123 2212.9,-95.854 1717.89,-79.7262 1529.68,-74.4377"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1529.7,-70.9371 1519.61,-74.1569 1529.51,-77.9343 1529.7,-70.9371"/>
+<path fill="none" stroke="midnightblue" d="M1212.97,-598.391C1098.28,-585.894 779.263,-535.008 820,-358 839.839,-271.799 839.051,-235.631 907,-179 995.81,-104.982 1132.38,-82.2311 1216.19,-75.3463"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1216.69,-78.8183 1226.39,-74.565 1216.15,-71.8388 1216.69,-78.8183"/>
 </g>
 <!-- Node45&#45;&gt;Node17 -->
 <g id="edge131" class="edge"><title>Node45&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2362.11,-601.003C2455.73,-598.173 2686.02,-588.163 2756,-557 2851.61,-514.425 2848.48,-463.385 2909,-378 2963.56,-301.014 3034.44,-258.106 2983,-179 2936.4,-107.346 2829.32,-83.523 2775.35,-75.9041"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2775.66,-72.4159 2765.29,-74.587 2774.75,-79.3566 2775.66,-72.4159"/>
+<path fill="none" stroke="midnightblue" d="M1293.12,-601.797C1498.29,-600.604 2431.79,-593.242 2719,-557 2831.97,-542.745 2886.42,-579.393 2969,-501 3089.4,-386.707 3079.7,-158.343 3073.94,-91.3712"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3077.4,-90.7411 3072.98,-81.1129 3070.43,-91.3968 3077.4,-90.7411"/>
 </g>
 <!-- Node45&#45;&gt;Node19 -->
 <g id="edge133" class="edge"><title>Node45&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M2281.88,-601.847C2075.36,-600.896 1136.84,-594.528 1013,-557 883.597,-517.786 846.12,-487.649 767,-378 694.465,-277.477 635.134,-139.408 615.193,-90.5342"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="618.345,-88.9928 611.356,-81.0305 611.854,-91.6136 618.345,-88.9928"/>
+<path fill="none" stroke="midnightblue" d="M1212.9,-600.947C1145.71,-598.309 1006.67,-589.094 894,-557 756.725,-517.895 332,-388.736 332,-246 332,-246 332,-246 332,-188 332,-100.153 654.042,-78.3851 756.853,-73.6742"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="757.082,-77.1677 766.921,-73.236 756.778,-70.1743 757.082,-77.1677"/>
 </g>
 <!-- Node45&#45;&gt;Node22 -->
 <g id="edge128" class="edge"><title>Node45&#45;&gt;Node22</title>
-<path fill="none" stroke="midnightblue" d="M2327.14,-593.458C2332.5,-584.47 2341.07,-569.867 2348,-557 2419.33,-424.653 2498.04,-261.238 2523.53,-207.809"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2526.76,-209.164 2527.91,-198.631 2520.45,-206.154 2526.76,-209.164"/>
+<path fill="none" stroke="midnightblue" d="M1293,-601.571C1549.8,-598.562 2956,-578.151 2956,-492 2956,-492 2956,-492 2956,-428.5 2956,-330.403 2863.42,-240.159 2822.77,-205.258"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2824.84,-202.426 2814.93,-198.668 2820.33,-207.783 2824.84,-202.426"/>
 </g>
 <!-- Node45&#45;&gt;Node26 -->
 <g id="edge132" class="edge"><title>Node45&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M2362.01,-599.943C2449.3,-595.056 2654.22,-581.302 2719,-557 2759.98,-541.628 2774.23,-536.372 2800,-501 2804.51,-494.805 2869.16,-274.803 2888.55,-208.637"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2891.99,-209.35 2891.44,-198.769 2885.27,-207.383 2891.99,-209.35"/>
+<path fill="none" stroke="midnightblue" d="M1212.9,-599.383C1132.41,-592.768 947.179,-570.594 810,-501 651.737,-420.709 503.962,-258.495 458.943,-206.462"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="461.346,-203.887 452.179,-198.575 456.032,-208.444 461.346,-203.887"/>
 </g>
 <!-- Node45&#45;&gt;Node29 -->
 <g id="edge127" class="edge"><title>Node45&#45;&gt;Node29</title>
-<path fill="none" stroke="midnightblue" d="M2281.93,-600.663C2087.77,-593.903 1250.15,-561.415 1152,-501 1126.39,-485.234 1122.83,-473.752 1114,-445 1109.95,-431.83 1105.01,-424.442 1114,-414 1136.39,-387.983 1692.01,-331.483 1725,-322 1796.74,-301.379 1838.08,-317.426 1879,-255 1889.96,-238.284 1874.19,-218.525 1859.55,-205.216"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1861.59,-202.36 1851.7,-198.547 1857.05,-207.692 1861.59,-202.36"/>
+<path fill="none" stroke="midnightblue" d="M1293.07,-601.86C1471.06,-600.726 2190.35,-590.581 2394,-501 2431.75,-484.393 2449.63,-481.93 2468,-445 2495.45,-389.805 2570.08,-369.551 2444,-235 2433.42,-223.707 2352.49,-209.46 2290.92,-200.056"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2291.24,-196.566 2280.83,-198.532 2290.2,-203.487 2291.24,-196.566"/>
 </g>
 <!-- Node45&#45;&gt;Node34 -->
 <g id="edge130" class="edge"><title>Node45&#45;&gt;Node34</title>
-<path fill="none" stroke="midnightblue" d="M2283.84,-593.491C2187.34,-571.206 1937.49,-508.463 1884,-445 1839.74,-392.496 1842.7,-303.934 1846.55,-265.155"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1850.07,-265.144 1847.72,-254.814 1843.12,-264.357 1850.07,-265.144"/>
+<path fill="none" stroke="midnightblue" d="M1212.91,-594.587C1162.37,-582.658 1082,-553.951 1082,-492 1082,-492 1082,-492 1082,-367 1082,-326.148 1109.51,-284.671 1126.96,-262.469"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1129.69,-264.658 1133.29,-254.693 1124.26,-260.239 1129.69,-264.658"/>
 </g>
 <!-- Node45&#45;&gt;Node38 -->
 <g id="edge124" class="edge"><title>Node45&#45;&gt;Node38</title>
-<path fill="none" stroke="midnightblue" d="M2281.74,-601.539C2081.7,-599.117 1199.52,-586.813 1081,-557 999.621,-536.53 963.126,-521.662 929,-445 901.059,-382.232 887.39,-300.93 882.36,-264.769"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="885.809,-264.147 881.024,-254.695 878.869,-265.068 885.809,-264.147"/>
+<path fill="none" stroke="midnightblue" d="M1249.99,-593.252C1240.78,-564.764 1215.77,-473.097 1253,-414 1257.76,-406.448 1494.02,-296.8 1576.19,-258.83"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1577.81,-261.937 1585.42,-254.566 1574.88,-255.582 1577.81,-261.937"/>
 </g>
 <!-- Node45&#45;&gt;Node41 -->
 <g id="edge129" class="edge"><title>Node45&#45;&gt;Node41</title>
-<path fill="none" stroke="midnightblue" d="M2281.89,-596.837C2093.95,-572.591 1305.16,-470.155 1197,-445 1193.53,-444.192 1189.94,-443.229 1186.37,-442.189"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1187.12,-438.754 1176.53,-439.118 1185.03,-445.437 1187.12,-438.754"/>
+<path fill="none" stroke="midnightblue" d="M1254.99,-593.26C1261.06,-566.536 1279.49,-485.517 1287.82,-448.862"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1291.26,-449.547 1290.06,-439.019 1284.43,-447.994 1291.26,-449.547"/>
 </g>
 <!-- Node46&#45;&gt;Node17 -->
 <g id="edge140" class="edge"><title>Node46&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M2531.27,-709.501C2685.97,-697.149 3085,-659.873 3085,-604 3085,-604 3085,-604 3085,-490 3085,-407.149 3123,-390.351 3123,-307.5 3123,-307.5 3123,-307.5 3123,-188 3123,-154.31 3112.02,-141.707 3084,-123 3033.71,-89.4253 2850.37,-77.3903 2775.34,-73.8094"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2775.23,-70.301 2765.08,-73.3408 2774.91,-77.2937 2775.23,-70.301"/>
+<path fill="none" stroke="midnightblue" d="M1450.29,-713.133C1736.81,-708.656 2953.18,-685.488 3105,-613 3186.62,-574.028 3281,-336.449 3281,-246 3281,-246 3281,-246 3281,-188 3281,-108.383 3163.38,-83.2204 3104.61,-75.6169"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3104.71,-72.1038 3094.37,-74.3923 3103.88,-79.0543 3104.71,-72.1038"/>
 </g>
 <!-- Node46&#45;&gt;Node44 -->
 <g id="edge139" class="edge"><title>Node46&#45;&gt;Node44</title>
-<path fill="none" stroke="midnightblue" d="M2466.54,-705.083C2462.85,-697.691 2457.48,-686.953 2452.91,-677.811"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2455.98,-676.13 2448.38,-668.751 2449.72,-679.261 2455.98,-676.13"/>
+<path fill="none" stroke="midnightblue" d="M1389.34,-705.083C1388.82,-698.006 1388.06,-687.861 1387.41,-678.986"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1390.88,-678.465 1386.65,-668.751 1383.9,-678.982 1390.88,-678.465"/>
 </g>
 <!-- Node48&#45;&gt;Node7 -->
 <g id="edge157" class="edge"><title>Node48&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M385.529,-649.45C470.455,-635.407 647.32,-607.566 798,-593 1091.59,-564.618 1444.49,-553.063 1582.55,-549.408"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1582.99,-552.898 1592.89,-549.139 1582.81,-545.9 1582.99,-552.898"/>
+<path fill="none" stroke="midnightblue" d="M1026.66,-649.407C1062.2,-635.04 1137.5,-606.4 1204,-593 1383.16,-556.901 1600.19,-549.554 1702.79,-548.198"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1702.99,-551.696 1712.95,-548.079 1702.91,-544.696 1702.99,-551.696"/>
 </g>
 <!-- Node48&#45;&gt;Node17 -->
 <g id="edge169" class="edge"><title>Node48&#45;&gt;Node17</title>
-<path fill="none" stroke="midnightblue" d="M389.709,-657.614C672.393,-655.496 1969.82,-644.21 2371,-613 2518.02,-601.563 3009,-577.964 3009,-430.5 3009,-430.5 3009,-430.5 3009,-367 3009,-255.534 3047.16,-179.379 2951,-123 2894.85,-90.0789 2818.16,-78.5664 2775.33,-74.5784"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2775.46,-71.0772 2765.2,-73.7182 2774.87,-78.0521 2775.46,-71.0772"/>
+<path fill="none" stroke="midnightblue" d="M1060.88,-655.893C1346.39,-644.807 2655.52,-592.409 2833,-557 2934.05,-536.839 2984.97,-534.521 3036,-445 3091.48,-347.669 3087.01,-310.961 3091,-199 3092.2,-165.244 3097.04,-156.232 3091,-123 3088.96,-111.765 3084.55,-99.7786 3080.5,-90.3041"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="3083.67,-88.8328 3076.36,-81.1636 3077.29,-91.7174 3083.67,-88.8328"/>
 </g>
 <!-- Node48&#45;&gt;Node27 -->
 <g id="edge171" class="edge"><title>Node48&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M325.585,-649.373C305.818,-630.17 262.788,-582.035 275,-537 315.775,-386.629 343.547,-345.879 453,-235 465.827,-222.006 483.098,-211.051 497.509,-203.204"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="499.251,-206.243 506.49,-198.506 496.007,-200.04 499.251,-206.243"/>
+<path fill="none" stroke="midnightblue" d="M1008.24,-649.49C1016.18,-617.986 1041.7,-505.108 1025,-414 1010.26,-333.597 968.058,-244.633 949.245,-207.635"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="952.295,-205.912 944.601,-198.628 946.073,-209.12 952.295,-205.912"/>
 </g>
 <!-- Node48&#45;&gt;Node43 -->
 <g id="edge158" class="edge"><title>Node48&#45;&gt;Node43</title>
-<path fill="none" stroke="midnightblue" d="M335.157,-649.368C335.48,-631.617 336.224,-590.666 336.662,-566.597"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="340.161,-566.653 336.844,-556.591 333.162,-566.526 340.161,-566.653"/>
+<path fill="none" stroke="midnightblue" d="M951.286,-650.452C905.802,-643.341 839.743,-631.06 784,-613 741.067,-599.091 693.884,-576.002 665.886,-561.414"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="667.301,-558.203 656.822,-556.638 664.037,-564.396 667.301,-558.203"/>
 </g>
 <!-- Node48&#45;&gt;Node47 -->
 <g id="edge170" class="edge"><title>Node48&#45;&gt;Node47</title>
-<path fill="none" stroke="midnightblue" d="M299.19,-649.444C260.012,-640.083 197.123,-625.056 154.485,-614.868"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="155.182,-611.436 144.643,-612.516 153.556,-618.245 155.182,-611.436"/>
+<path fill="none" stroke="midnightblue" d="M951.287,-654.561C795.95,-644.795 353.574,-616.986 200.164,-607.342"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="200.254,-603.841 190.054,-606.707 199.815,-610.827 200.254,-603.841"/>
 </g>
 <!-- Node49 -->
 <g id="node49" class="node"><title>Node49</title>
 <g id="a_node49"><a xlink:href="target__kind_8h.html" target="_top" xlink:title="Target kind registry. ">
-<polygon fill="white" stroke="black" points="401,-593.5 401,-612.5 535,-612.5 535,-593.5 401,-593.5"/>
-<text text-anchor="middle" x="468" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target_kind.h</text>
+<polygon fill="white" stroke="black" points="844,-593.5 844,-612.5 978,-612.5 978,-593.5 844,-593.5"/>
+<text text-anchor="middle" x="911" y="-600.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/target/target_kind.h</text>
 </a>
 </g>
 </g>
 <!-- Node48&#45;&gt;Node49 -->
 <g id="edge159" class="edge"><title>Node48&#45;&gt;Node49</title>
-<path fill="none" stroke="midnightblue" d="M356.074,-649.444C378.06,-640.517 412.734,-626.439 437.664,-616.317"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="439.076,-619.521 447.024,-612.516 436.442,-613.035 439.076,-619.521"/>
+<path fill="none" stroke="midnightblue" d="M990.737,-649.324C975.779,-640.822 952.745,-627.729 935.273,-617.797"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="936.649,-614.553 926.226,-612.655 933.19,-620.639 936.649,-614.553"/>
 </g>
 <!-- Node49&#45;&gt;Node7 -->
 <g id="edge164" class="edge"><title>Node49&#45;&gt;Node7</title>
-<path fill="none" stroke="midnightblue" d="M535.177,-596.625C552.691,-595.327 571.546,-594.022 589,-593 967.263,-570.855 1422.57,-555.092 1582.77,-549.876"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1583.02,-553.37 1592.9,-549.548 1582.79,-546.374 1583.02,-553.37"/>
+<path fill="none" stroke="midnightblue" d="M978.132,-597.74C1139.94,-587.473 1549.42,-561.489 1702.79,-551.757"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="1703.19,-555.239 1712.95,-551.113 1702.75,-548.253 1703.19,-555.239"/>
 </g>
 <!-- Node49&#45;&gt;Node19 -->
 <g id="edge167" class="edge"><title>Node49&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M459.162,-593.484C446.126,-580.968 420.917,-556.929 399,-537 265.061,-415.213 114,-427.029 114,-246 114,-246 114,-246 114,-188 114,-147.769 140.93,-140.818 177,-123 247.596,-88.126 490.261,-76.5339 576.928,-73.4542"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="577.06,-76.9518 586.935,-73.1122 576.821,-69.9559 577.06,-76.9518"/>
+<path fill="none" stroke="midnightblue" d="M897.464,-593.416C857.468,-567.138 740.012,-483.148 698,-378 655.303,-271.138 741.516,-136.111 775.255,-89.3449"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="778.139,-91.331 781.249,-81.203 772.502,-87.1808 778.139,-91.331"/>
 </g>
 <!-- Node49&#45;&gt;Node25 -->
 <g id="edge165" class="edge"><title>Node49&#45;&gt;Node25</title>
-<path fill="none" stroke="midnightblue" d="M488.579,-593.323C553.176,-566.147 757.8,-480.528 929,-414 1145.91,-329.709 1409.26,-234.917 1501.31,-202.009"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="1502.69,-205.233 1510.93,-198.573 1500.34,-198.641 1502.69,-205.233"/>
+<path fill="none" stroke="midnightblue" d="M978.08,-599.979C1128.77,-595.155 1505.53,-581.504 1820,-557 2054.39,-538.736 2121.26,-570.03 2346,-501 2459.99,-465.987 2553.2,-403.268 2513,-291 2502.14,-260.676 2493.48,-253.342 2467,-235 2451.62,-224.348 2406.72,-210.161 2373.54,-200.587"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2374.24,-197.147 2363.66,-197.773 2372.32,-203.879 2374.24,-197.147"/>
 </g>
 <!-- Node49&#45;&gt;Node26 -->
 <g id="edge166" class="edge"><title>Node49&#45;&gt;Node26</title>
-<path fill="none" stroke="midnightblue" d="M535.216,-601.137C872.551,-596.487 2372.49,-571.948 2567,-501 2724.94,-443.389 2847.86,-263.844 2883.5,-207.261"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2886.5,-209.065 2888.79,-198.722 2880.55,-205.374 2886.5,-209.065"/>
+<path fill="none" stroke="midnightblue" d="M872.416,-593.433C838.605,-585.466 788.383,-572.51 746,-557 726.206,-549.757 722.226,-545.639 703,-537 666.323,-520.52 652.221,-525.054 620,-501 536.825,-438.907 514.429,-415.806 470,-322 452.259,-284.541 447.101,-235.483 445.606,-208.978"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="449.095,-208.638 445.154,-198.804 442.102,-208.949 449.095,-208.638"/>
 </g>
 <!-- Node49&#45;&gt;Node27 -->
 <g id="edge168" class="edge"><title>Node49&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M462.808,-593.205C449.439,-569.984 414.04,-504.707 402,-445 399.277,-431.494 399.513,-427.551 402,-414 417.364,-330.296 420.272,-304.062 470,-235 478.646,-222.992 491.263,-212.358 502.233,-204.447"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="504.314,-207.263 510.569,-198.711 500.347,-201.496 504.314,-207.263"/>
+<path fill="none" stroke="midnightblue" d="M908.87,-593.221C903.241,-569.505 888.051,-502.089 883,-445 874.641,-350.52 892.576,-325.49 921,-235 923.859,-225.898 927.874,-216.106 931.478,-207.987"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="934.714,-209.326 935.704,-198.777 928.352,-206.406 934.714,-209.326"/>
 </g>
 <!-- Node50 -->
 <g id="node50" class="node"><title>Node50</title>
 <g id="a_node50"><a xlink:href="attr__registry__map_8h.html" target="_top" xlink:title="Attribute map used in registry. ">
-<polygon fill="white" stroke="black" points="411,-414.5 411,-444.5 535,-444.5 535,-414.5 411,-414.5"/>
-<text text-anchor="start" x="419" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/attr_registry</text>
-<text text-anchor="middle" x="473" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_map.h</text>
+<polygon fill="white" stroke="black" points="892,-414.5 892,-444.5 1016,-444.5 1016,-414.5 892,-414.5"/>
+<text text-anchor="start" x="900" y="-432.5" font-family="Helvetica,sans-Serif" font-size="10.00">tvm/node/attr_registry</text>
+<text text-anchor="middle" x="954" y="-421.5" font-family="Helvetica,sans-Serif" font-size="10.00">_map.h</text>
 </a>
 </g>
 </g>
 <!-- Node49&#45;&gt;Node50 -->
 <g id="edge160" class="edge"><title>Node49&#45;&gt;Node50</title>
-<path fill="none" stroke="midnightblue" d="M468.436,-593.375C468.882,-584.319 469.569,-569.661 470,-557 471.212,-521.427 472.092,-480.211 472.574,-454.744"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="476.077,-454.605 472.762,-444.542 469.078,-454.476 476.077,-454.605"/>
+<path fill="none" stroke="midnightblue" d="M913.191,-593.26C919.558,-567.866 938.218,-493.444 947.945,-454.65"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="951.397,-455.274 950.434,-444.723 944.607,-453.571 951.397,-455.274"/>
 </g>
 <!-- Node50&#45;&gt;Node8 -->
 <g id="edge161" class="edge"><title>Node50&#45;&gt;Node8</title>
-<path fill="none" stroke="midnightblue" d="M535.133,-426.391C804.607,-417.245 1871.42,-381.035 2155.95,-371.378"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="2156.26,-374.869 2166.13,-371.032 2156.02,-367.873 2156.26,-374.869"/>
+<path fill="none" stroke="midnightblue" d="M1016.13,-425.382C1076.6,-422.372 1171.1,-417.734 1253,-414 1623.93,-397.088 2068.37,-378.74 2237.27,-371.837"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="2237.42,-375.334 2247.27,-371.429 2237.14,-368.34 2237.42,-375.334"/>
 </g>
 <!-- Node50&#45;&gt;Node19 -->
 <g id="edge162" class="edge"><title>Node50&#45;&gt;Node19</title>
-<path fill="none" stroke="midnightblue" d="M410.894,-417.141C327.589,-397.911 190,-350.355 190,-246 190,-246 190,-246 190,-188 190,-107.721 480.066,-81.0417 576.931,-74.3705"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="577.239,-77.8579 586.985,-73.7028 576.775,-70.8733 577.239,-77.8579"/>
+<path fill="none" stroke="midnightblue" d="M947.243,-414.366C942.417,-404.249 935.781,-390.299 930,-378 878.652,-268.753 817.802,-137.09 796.146,-90.1633"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="799.294,-88.6306 791.926,-81.0166 792.937,-91.5631 799.294,-88.6306"/>
 </g>
 <!-- Node50&#45;&gt;Node27 -->
 <g id="edge163" class="edge"><title>Node50&#45;&gt;Node27</title>
-<path fill="none" stroke="midnightblue" d="M470.094,-414.121C464.091,-380.905 453.019,-296.947 480,-235 485.134,-223.212 494.9,-212.842 504.025,-205.037"/>
-<polygon fill="midnightblue" stroke="midnightblue" points="506.435,-207.592 512.074,-198.623 502.072,-202.118 506.435,-207.592"/>
+<path fill="none" stroke="midnightblue" d="M949.102,-414.408C938.628,-382.467 915.801,-302.117 926,-235 927.368,-226.001 930.19,-216.325 932.945,-208.26"/>
+<polygon fill="midnightblue" stroke="midnightblue" points="936.265,-209.372 936.4,-198.778 929.688,-206.976 936.265,-209.372"/>
 </g>
 </g>
 </svg>
diff --git a/docs/api/doxygen/search__policy_8h_source.html b/docs/api/doxygen/search__policy_8h_source.html
index 1d037fa..41d3822 100644
--- a/docs/api/doxygen/search__policy_8h_source.html
+++ b/docs/api/doxygen/search__policy_8h_source.html
@@ -89,33 +89,33 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">search_policy.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<a href="search__policy_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or m [...]
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html">tvm::auto_scheduler::SearchCallbackNode</a></div><div class="ttdoc">Callback function to be called by the search process. This interface allows to do extra initializatio...</div><div class="ttdef"><b>Definition:</b> search_policy.h:82</div></div>
-<div class="ttc" id="structtvm_1_1auto__scheduler_1_1SearchPolicyKey_html"><div class="ttname"><a href="structtvm_1_1auto__scheduler_1_1SearchPolicyKey.html">tvm::auto_scheduler::SearchPolicyKey</a></div><div class="ttdoc">Attribute keys of ops used for SearchPolicy. </div><div class="ttdef"><b>Definition:</b> search_policy.h:133</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_acd9874846a09fdbd21ba9feb5e6f1fcc"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#acd9874846a09fdbd21ba9feb5e6f1fcc">tvm::auto_scheduler::SearchPolicyNode::measured_states_set_</a></div><div class="ttdeci">std::unordered_set&lt; String &gt; measured_states_set_</div><div class="ttdoc">The set of already measured states. We store the string format of a state for redundancy check... [...]
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode_html_abdcef8d2b2e1c93e933913579e420b8a"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html#abdcef8d2b2e1c93e933913579e420b8a">tvm::auto_scheduler::PreloadMeasuredStatesNode::filename</a></div><div class="ttdeci">String filename</div><div class="ttdoc">The name of the record log file. </div><div class="ttdef"><b>Definition:</b> search_policy.h:108</div></div>
+<a href="search__policy_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or m [...]
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html">tvm::auto_scheduler::SearchCallbackNode</a></div><div class="ttdoc">Callback function to be called by the search process. This interface allows to do extra initializatio...</div><div class="ttdef"><b>Definition:</b> search_policy.h:83</div></div>
+<div class="ttc" id="structtvm_1_1auto__scheduler_1_1SearchPolicyKey_html"><div class="ttname"><a href="structtvm_1_1auto__scheduler_1_1SearchPolicyKey.html">tvm::auto_scheduler::SearchPolicyKey</a></div><div class="ttdoc">Attribute keys of ops used for SearchPolicy. </div><div class="ttdef"><b>Definition:</b> search_policy.h:134</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode_html_abdcef8d2b2e1c93e933913579e420b8a"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html#abdcef8d2b2e1c93e933913579e420b8a">tvm::auto_scheduler::PreloadMeasuredStatesNode::filename</a></div><div class="ttdeci">String filename</div><div class="ttdoc">The name of the record log file. </div><div class="ttdef"><b>Definition:</b> search_policy.h:109</div></div>
 <div class="ttc" id="namespacetvm_html"><div class="ttname"><a href="namespacetvm.html">tvm</a></div><div class="ttdef"><b>Definition:</b> analyzer.h:36</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_aab73283e1afd57f212c57340eacf0eef"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab73283e1afd57f212c57340eacf0eef">tvm::auto_scheduler::SearchPolicyNode::measured_states_set_</a></div><div class="ttdeci">std::unordered_set&lt; std::string &gt; measured_states_set_</div><div class="ttdoc">The set of already measured states. We store the string format of a state for redundancy che [...]
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1State_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1State.html">tvm::auto_scheduler::State</a></div><div class="ttdoc">Managed reference to StateNode. </div><div class="ttdef"><b>Definition:</b> loop_state.h:273</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a47000a055992988ae674b5219ae5f607"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a47000a055992988ae674b5219ae5f607">tvm::auto_scheduler::SearchPolicyNode::search_task</a></div><div class="ttdeci">SearchTask search_task</div><div class="ttdoc">The current search task. </div><div class="ttdef"><b>Definition:</b> search_policy.h:149</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a47000a055992988ae674b5219ae5f607"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a47000a055992988ae674b5219ae5f607">tvm::auto_scheduler::SearchPolicyNode::search_task</a></div><div class="ttdeci">SearchTask search_task</div><div class="ttdoc">The current search task. </div><div class="ttdef"><b>Definition:</b> search_policy.h:150</div></div>
 <div class="ttc" id="object_8h_html_aaaa3dc5b6dc33f84b2d28f9a81267212"><div class="ttname"><a href="object_8h.html#aaaa3dc5b6dc33f84b2d28f9a81267212">TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS</a></div><div class="ttdeci">#define TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS(TypeName, ParentType, ObjectName)</div><div class="ttdef"><b>Definition:</b> object.h:731</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_aab68b70a8b21b353746921487c1cb29b"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b">tvm::auto_scheduler::SearchPolicyNode::measured_states_vector_</a></div><div class="ttdeci">std::vector&lt; State &gt; measured_states_vector_</div><div class="ttdoc">The array of already measured states. The good states can be used as the initial population in evol [...]
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_aab68b70a8b21b353746921487c1cb29b"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#aab68b70a8b21b353746921487c1cb29b">tvm::auto_scheduler::SearchPolicyNode::measured_states_vector_</a></div><div class="ttdeci">std::vector&lt; State &gt; measured_states_vector_</div><div class="ttdoc">The array of already measured states. The good states can be used as the initial population in evol [...]
 <div class="ttc" id="classtvm_1_1AttrVisitor_html"><div class="ttname"><a href="classtvm_1_1AttrVisitor.html">tvm::AttrVisitor</a></div><div class="ttdoc">Visitor class for to get the attributesof a AST/IR node. The content is going to be called for each f...</div><div class="ttdef"><b>Definition:</b> reflection.h:52</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html_a5cf3b19490db48b070c0a30bde2148a8"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html#a5cf3b19490db48b070c0a30bde2148a8">tvm::auto_scheduler::SearchCallbackNode::Callback</a></div><div class="ttdeci">virtual void Callback(SearchPolicyNode *policy)=0</div><div class="ttdoc">Run the registered callback function. </div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html_afd25bd9a77cd2e9f14008de2e83198c2"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html#afd25bd9a77cd2e9f14008de2e83198c2">tvm::auto_scheduler::SearchCallbackNode::TVM_DECLARE_BASE_OBJECT_INFO</a></div><div class="ttdeci">TVM_DECLARE_BASE_OBJECT_INFO(SearchCallbackNode, Object)</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallback_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallback.html">tvm::auto_scheduler::SearchCallback</a></div><div class="ttdoc">Managed reference to SearchCallbackNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:98</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html_aa5980b4b3e1ec125e60762499f2d77b4"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html#aa5980b4b3e1ec125e60762499f2d77b4">tvm::auto_scheduler::SearchCallbackNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> search_policy.h:90</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallback_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallback.html">tvm::auto_scheduler::SearchCallback</a></div><div class="ttdoc">Managed reference to SearchCallbackNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:99</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchCallbackNode_html_aa5980b4b3e1ec125e60762499f2d77b4"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchCallbackNode.html#aa5980b4b3e1ec125e60762499f2d77b4">tvm::auto_scheduler::SearchCallbackNode::_type_key</a></div><div class="ttdeci">static constexpr const char * _type_key</div><div class="ttdef"><b>Definition:</b> search_policy.h:91</div></div>
 <div class="ttc" id="classtvm_1_1runtime_1_1String_html"><div class="ttname"><a href="classtvm_1_1runtime_1_1String.html">tvm::runtime::String</a></div><div class="ttdoc">Reference to string objects. </div><div class="ttdef"><b>Definition:</b> container.h:1178</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></div><div class="ttdoc">The base class of search policies. </div><div class="ttdef"><b>Definition:</b> search_policy.h:146</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:206</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html">tvm::auto_scheduler::SearchPolicyNode</a></div><div class="ttdoc">The base class of search policies. </div><div class="ttdef"><b>Definition:</b> search_policy.h:147</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicy_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicy.html">tvm::auto_scheduler::SearchPolicy</a></div><div class="ttdoc">Managed reference to SearchPolicyNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:207</div></div>
 <div class="ttc" id="object_8h_html_a3aea9b3f65aeb9150c0fa7800e5573c6"><div class="ttname"><a href="object_8h.html#a3aea9b3f65aeb9150c0fa7800e5573c6">TVM_DECLARE_FINAL_OBJECT_INFO</a></div><div class="ttdeci">#define TVM_DECLARE_FINAL_OBJECT_INFO(TypeName, ParentType)</div><div class="ttdoc">helper macro to declare type information in a final class. </div><div class="ttdef"><b>Definition:</b> object.h:658</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1ProgramMeasurer_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1ProgramMeasurer.html">tvm::auto_scheduler::ProgramMeasurer</a></div><div class="ttdoc">Managed reference to ProgramMeasurerNode. </div><div class="ttdef"><b>Definition:</b> measure.h:485</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a626eea16092d3c1a7d86497ee712f064"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a626eea16092d3c1a7d86497ee712f064">tvm::auto_scheduler::SearchPolicyNode::verbose</a></div><div class="ttdeci">int verbose</div><div class="ttdoc">Verbose level to control the screen output during schedule search. 0 for silent, 1 to output state &amp; ...</div><div class="ttdef"><b>Definition:</b> se [...]
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates.html">tvm::auto_scheduler::PreloadMeasuredStates</a></div><div class="ttdoc">Managed reference to PreloadMeasuredStatesNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:120</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a626eea16092d3c1a7d86497ee712f064"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a626eea16092d3c1a7d86497ee712f064">tvm::auto_scheduler::SearchPolicyNode::verbose</a></div><div class="ttdeci">int verbose</div><div class="ttdoc">Verbose level to control the screen output during schedule search. 0 for silent, 1 to output state &amp; ...</div><div class="ttdef"><b>Definition:</b> se [...]
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStates.html">tvm::auto_scheduler::PreloadMeasuredStates</a></div><div class="ttdoc">Managed reference to PreloadMeasuredStatesNode. </div><div class="ttdef"><b>Definition:</b> search_policy.h:121</div></div>
 <div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchTask_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchTask.html">tvm::auto_scheduler::SearchTask</a></div><div class="ttdoc">Managed reference to SearchTaskNode. </div><div class="ttdef"><b>Definition:</b> search_task.h:132</div></div>
 <div class="ttc" id="search__task_8h_html"><div class="ttname"><a href="search__task_8h.html">search_task.h</a></div><div class="ttdoc">Meta information and hardware parameters for a search task. </div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html">tvm::auto_scheduler::PreloadMeasuredStatesNode</a></div><div class="ttdoc">Preload measured states from a log file. This can resume the state of the search policy. </div><div class="ttdef"><b>Definition:</b> search_policy.h:105</div></div>
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a5d1b9cf934cfee1f4161f45ff2f12f4f"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f">tvm::auto_scheduler::SearchPolicyNode::measured_states_throughputs_</a></div><div class="ttdeci">std::vector&lt; float &gt; measured_states_throughputs_</div><div class="ttdoc">The throughputs of already measured states. </div><div class="ttdef"><b>Definition:</b> s [...]
-<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a3d69031f58fb0b5056ecf02a1be282bb"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a3d69031f58fb0b5056ecf02a1be282bb">tvm::auto_scheduler::SearchPolicyNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> search_policy.h:156</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode_html"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1PreloadMeasuredStatesNode.html">tvm::auto_scheduler::PreloadMeasuredStatesNode</a></div><div class="ttdoc">Preload measured states from a log file. This can resume the state of the search policy. </div><div class="ttdef"><b>Definition:</b> search_policy.h:106</div></div>
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a5d1b9cf934cfee1f4161f45ff2f12f4f"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a5d1b9cf934cfee1f4161f45ff2f12f4f">tvm::auto_scheduler::SearchPolicyNode::measured_states_throughputs_</a></div><div class="ttdeci">std::vector&lt; float &gt; measured_states_throughputs_</div><div class="ttdoc">The throughputs of already measured states. </div><div class="ttdef"><b>Definition:</b> s [...]
+<div class="ttc" id="classtvm_1_1auto__scheduler_1_1SearchPolicyNode_html_a3d69031f58fb0b5056ecf02a1be282bb"><div class="ttname"><a href="classtvm_1_1auto__scheduler_1_1SearchPolicyNode.html#a3d69031f58fb0b5056ecf02a1be282bb">tvm::auto_scheduler::SearchPolicyNode::VisitAttrs</a></div><div class="ttdeci">void VisitAttrs(AttrVisitor *v)</div><div class="ttdef"><b>Definition:</b> search_policy.h:157</div></div>
 </div><!-- fragment --></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/docs/api/javadoc/org/apache/tvm/class-use/Function.html b/docs/api/javadoc/org/apache/tvm/class-use/Function.html
index 6a49602..ac4f579 100644
--- a/docs/api/javadoc/org/apache/tvm/class-use/Function.html
+++ b/docs/api/javadoc/org/apache/tvm/class-use/Function.html
@@ -134,26 +134,26 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
-<td class="colLast"><span class="typeNameLabel">APIInternal.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/APIInternal.html#get-java.lang.String-">get</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<td class="colLast"><span class="typeNameLabel">API.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/API.html#get-java.lang.String-">get</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get a tvm api function according by name.</div>
 </td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
-<td class="colLast"><span class="typeNameLabel">API.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/API.html#get-java.lang.String-">get</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
+<td class="colLast"><span class="typeNameLabel">APIInternal.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/APIInternal.html#get-java.lang.String-">get</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get a tvm api function according by name.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code><a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Module.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Module.html#getFunction-java.lang.String-">getFunction</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Function.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Function.html#getFunction-java.lang.String-">getFunction</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get registered function.</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Module.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Module.html#getFunction-java.lang.String-">getFunction</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/tvm/Function.html" title="class in org.apache.tvm">Function</a></code></td>
 <td class="colLast"><span class="typeNameLabel">Module.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Module.html#getFunction-java.lang.String-boolean-">getFunction</a></span>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
diff --git a/docs/api/javadoc/org/apache/tvm/class-use/Module.html b/docs/api/javadoc/org/apache/tvm/class-use/Module.html
index 2adfa65..4ca74db 100644
--- a/docs/api/javadoc/org/apache/tvm/class-use/Module.html
+++ b/docs/api/javadoc/org/apache/tvm/class-use/Module.html
@@ -112,13 +112,13 @@
 <tbody>
 <tr class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/tvm/Module.html" title="class in org.apache.tvm">Module</a></code></td>
-<td class="colLast"><span class="typeNameLabel">Module.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Module.html#asModule--">asModule</a></span>()</code>
-<div class="block">Easy for user to get the instance from returned TVMValue.</div>
-</td>
+<td class="colLast"><span class="typeNameLabel">TVMValue.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/TVMValue.html#asModule--">asModule</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/tvm/Module.html" title="class in org.apache.tvm">Module</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TVMValue.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/TVMValue.html#asModule--">asModule</a></span>()</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">Module.</span><code><span class="memberNameLink"><a href="../../../../org/apache/tvm/Module.html#asModule--">asModule</a></span>()</code>
+<div class="block">Easy for user to get the instance from returned TVMValue.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/tvm/Module.html" title="class in org.apache.tvm">Module</a></code></td>
diff --git a/docs/api/python/auto_scheduler.html b/docs/api/python/auto_scheduler.html
index 27f3ad3..88fe5c6 100644
--- a/docs/api/python/auto_scheduler.html
+++ b/docs/api/python/auto_scheduler.html
@@ -141,6 +141,8 @@
 <li class="toctree-l2"><a class="reference internal" href="autotvm.html">tvm.autotvm</a></li>
 <li class="toctree-l2 current"><a class="current reference internal" href="#">tvm.auto_scheduler</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#module-tvm.auto_scheduler.auto_schedule">tvm.auto_scheduler.auto_schedule</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#tvm-auto-scheduler-workload-registry">tvm.auto_scheduler.workload_registry</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#module-tvm.auto_scheduler.measure">tvm.auto_scheduler.measure</a></li>
 </ul>
 </li>
 <li class="toctree-l2"><a class="reference internal" href="rpc.html">tvm.rpc</a></li>
@@ -312,7 +314,7 @@ Can be the a function or the function name.</p></li>
 
 <dl class="py function">
 <dt id="tvm.auto_scheduler.auto_schedule.auto_schedule">
-<code class="sig-prename descclassname">tvm.auto_scheduler.auto_schedule.</code><code class="sig-name descname">auto_schedule</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task</span></em>, <em class="sig-param"><span class="n">search_policy</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">tuning_options</span><span class="o">=</span><span class="default_value">auto_scheduler.TuningOptions(4239 [...]
+<code class="sig-prename descclassname">tvm.auto_scheduler.auto_schedule.</code><code class="sig-name descname">auto_schedule</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">task</span></em>, <em class="sig-param"><span class="n">search_policy</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">tuning_options</span><span class="o">=</span><span class="default_value">auto_scheduler.TuningOptions(1786 [...]
 <dd><p>Run auto scheduling search for a task</p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters</dt>
@@ -332,6 +334,175 @@ Can be the a function or the function name.</p></li>
 </dd></dl>
 
 </div>
+<div class="section" id="tvm-auto-scheduler-workload-registry">
+<h2>tvm.auto_scheduler.workload_registry<a class="headerlink" href="#tvm-auto-scheduler-workload-registry" title="Permalink to this headline">¶</a></h2>
+<dl class="py function">
+<dt id="tvm.auto_scheduler.workload_registry.register_workload">
+<code class="sig-prename descclassname">tvm.auto_scheduler.workload_registry.</code><code class="sig-name descname">register_workload</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">func_name</span></em>, <em class="sig-param"><span class="n">f</span><span class="o">=</span><span class="default_value">None</span></em>, <em class="sig-param"><span class="n">override</span><span class="o">=</span><span class="default_value">False</span></em><span class="sig-pare [...]
+<dd><p>Register a function that generates a certain workload.</p>
+<p>The input function should take hashable and jsonable arguments
+(int, float, tuple of int, tvm.tensor.Tensor, …) and return a list of tvm.tensor.Tensor.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>func_name</strong> (<em>Union</em><em>[</em><a class="reference internal" href="relay/index.html#tvm.relay.Function" title="tvm.relay.Function"><em>Function</em></a><em>, </em><a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.8)"><em>str</em></a><em>]</em>) – The generation function that returns the compute declaration Tensors or its function name.</p></li>
+<li><p><strong>f</strong> (<em>Optional</em><em>[</em><a class="reference internal" href="relay/index.html#tvm.relay.Function" title="tvm.relay.Function"><em>Function</em></a><em>]</em>) – The generation function to be registered.</p></li>
+<li><p><strong>override</strong> (<em>boolean = False</em>) – Whether override existing entry.</p></li>
+</ul>
+</dd>
+</dl>
+<p class="rubric">Examples</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span class="nd">@auto_scheduler.register_workload</span>
+<span class="k">def</span> <span class="nf">matmul</span><span class="p">(</span><span class="n">N</span><span class="p">,</span> <span class="n">M</span><span class="p">,</span> <span class="n">K</span><span class="p">):</span>
+    <span class="n">A</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;A&#39;</span><span class="p">)</span>
+    <span class="n">B</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">placeholder</span><span class="p">((</span><span class="n">K</span><span class="p">,</span> <span class="n">M</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;B&#39;</span><span class="p">)</span>
+    <span class="n">k</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">reduce_axis</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="n">K</span><span class="p">),</span> <span class="n">name</span><span class="o">=</span><span class="s1">&#39;k&#39;</span><span class="p">)</span>
+    <span class="n">C</span> <span class="o">=</span> <span class="n">te</span><span class="o">.</span><span class="n">compute</span><span class="p">((</span><span class="n">N</span><span class="p">,</span> <span class="n">M</span><span class="p">),</span> <span class="k">lambda</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">:</span> <span class="n">tvm</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span c [...]
+    <span class="k">return</span> <span class="p">[</span><span class="n">A</span><span class="p">,</span> <span class="n">B</span><span class="p">,</span> <span class="n">C</span><span class="p">]</span>
+</pre></div>
+</div>
+</dd></dl>
+
+</div>
+<div class="section" id="module-tvm.auto_scheduler.measure">
+<span id="tvm-auto-scheduler-measure"></span><h2>tvm.auto_scheduler.measure<a class="headerlink" href="#module-tvm.auto_scheduler.measure" title="Permalink to this headline">¶</a></h2>
+<p>Distributed measurement infrastructure to measure the runtime costs of tensor programs.</p>
+<p>These functions are responsible for building the tvm module, uploading it to
+remote devices, recording the running time costs, and checking the correctness of the output.</p>
+<p>We separate the measurement into two steps: build and run.
+A builder builds the executable binary files and a runner runs the binary files to
+get the measurement results. The flow of data structures is</p>
+<blockquote>
+<div><p>.                <cite>ProgramBuilder</cite>                 <cite>ProgramRunner</cite>
+<cite>MeasureInput</cite> —————–&gt; <cite>BuildResult</cite> —————-&gt; <cite>MeasureResult</cite></p>
+</div></blockquote>
+<p>We implement these in python to utilize python’s multiprocessing and error handling.</p>
+<dl class="py class">
+<dt id="tvm.auto_scheduler.measure.LocalRPCMeasureContext">
+<em class="property">class </em><code class="sig-prename descclassname">tvm.auto_scheduler.measure.</code><code class="sig-name descname">LocalRPCMeasureContext</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">priority</span><span class="o">=</span><span class="default_value">1</span></em>, <em class="sig-param"><span class="n">n_parallel</span><span class="o">=</span><span class="default_value">1</span></em>, <em class="sig-param"><span class="n">timeout</span [...]
+<dd><p>A context wrapper for running RPCRunner locally.
+This will launch a local RPC Tracker and local RPC Server.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>priority</strong> (<em>int = 1</em>) – The priority of this run request, larger is more prior.</p></li>
+<li><p><strong>n_parallel</strong> (<em>int = 1</em>) – The number of tasks run in parallel.</p></li>
+<li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run.
+This is used in a wrapper of the multiprocessing.Process.join().</p></li>
+<li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average.
+We call these runs as one <cite>repeat</cite> of measurement.</p></li>
+<li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement.
+In total, the generated code will be run (1 + number x repeat) times,
+where the first “1” is warm up and will be discarded.
+The returned result contains <cite>repeat</cite> costs,
+each of which is an average of <cite>number</cite> costs.</p></li>
+<li><p><strong>min_repeat_ms</strong> (<em>int = 0</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds.
+By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set,
+the parameters <cite>number</cite> will be dynamically adjusted to meet the
+minimum duration requirement of one <cite>repeat</cite>.
+i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter
+will be automatically increased.</p></li>
+<li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements.</p></li>
+<li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements.
+Flushing cache can make the measured latency of one operator closer to
+its actual latency during end-to-end inference.
+To make this option effective, the argument <cite>number</cite> should also be set to 1.
+This is only has effect on CPU task.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py class">
+<dt id="tvm.auto_scheduler.measure.LocalRunner">
+<em class="property">class </em><code class="sig-prename descclassname">tvm.auto_scheduler.measure.</code><code class="sig-name descname">LocalRunner</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">timeout</span><span class="o">=</span><span class="default_value">10</span></em>, <em class="sig-param"><span class="n">number</span><span class="o">=</span><span class="default_value">3</span></em>, <em class="sig-param"><span class="n">repeat</span><span class="o" [...]
+<dd><p>LocalRunner that uses local CPU/GPU to measures the time cost of programs.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run.
+This is used in a wrapper of the multiprocessing.Process.join().</p></li>
+<li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average.
+We call these runs as one <cite>repeat</cite> of measurement.</p></li>
+<li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement.
+In total, the generated code will be run (1 + number x repeat) times,
+where the first “1” is warm up and will be discarded.
+The returned result contains <cite>repeat</cite> costs,
+each of which is an average of <cite>number</cite> costs.</p></li>
+<li><p><strong>min_repeat_ms</strong> (<em>int = 100</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds.
+By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set,
+the parameters <cite>number</cite> will be dynamically adjusted to meet the
+minimum duration requirement of one <cite>repeat</cite>.
+i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter
+will be automatically increased.</p></li>
+<li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements.</p></li>
+<li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements.
+Flushing cache can make the measured latency of one operator closer to
+its actual latency during end-to-end inference.
+To make this option effective, the argument <cite>number</cite> should also be set to 1.
+This is only has effect on CPU task.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py class">
+<dt id="tvm.auto_scheduler.measure.LocalBuilder">
+<em class="property">class </em><code class="sig-prename descclassname">tvm.auto_scheduler.measure.</code><code class="sig-name descname">LocalBuilder</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">timeout</span><span class="o">=</span><span class="default_value">15</span></em>, <em class="sig-param"><span class="n">n_parallel</span><span class="o">=</span><span class="default_value">8</span></em>, <em class="sig-param"><span class="n">build_func</span><span  [...]
+<dd><p>LocalBuilder use local CPU cores to build programs in parallel.</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>timeout</strong> (<em>int = 15</em>) – The timeout limit (in second) for each build thread.
+This is used in a wrapper of the multiprocessing.Process.join().</p></li>
+<li><p><strong>n_parallel</strong> (<em>int = multiprocessing.cpu_count</em><em>(</em><em>)</em>) – Number of threads used to build in parallel.</p></li>
+<li><p><strong>build_func</strong> (<em>str = 'default'</em>) – The name of registered build function.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+<dl class="py class">
+<dt id="tvm.auto_scheduler.measure.RPCRunner">
+<em class="property">class </em><code class="sig-prename descclassname">tvm.auto_scheduler.measure.</code><code class="sig-name descname">RPCRunner</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">key</span></em>, <em class="sig-param"><span class="n">host</span></em>, <em class="sig-param"><span class="n">port</span></em>, <em class="sig-param"><span class="n">priority</span><span class="o">=</span><span class="default_value">1</span></em>, <em class="sig-para [...]
+<dd><p>RPCRunner that uses RPC call to measures the time cost of programs on remote devices.
+Or sometime we may need to use RPC even in local running to insulate the thread environment.
+(e.g. running CUDA programs)</p>
+<dl class="field-list simple">
+<dt class="field-odd">Parameters</dt>
+<dd class="field-odd"><ul class="simple">
+<li><p><strong>key</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.8)"><em>str</em></a>) – The key of the device registered in the RPC tracker.</p></li>
+<li><p><strong>host</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.8)"><em>str</em></a>) – The host address of the RPC Tracker.</p></li>
+<li><p><strong>port</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.8)"><em>int</em></a>) – The port of RPC Tracker.</p></li>
+<li><p><strong>priority</strong> (<em>int = 1</em>) – The priority of this run request, larger is more prior.</p></li>
+<li><p><strong>n_parallel</strong> (<em>int = 1</em>) – The number of tasks run in parallel.</p></li>
+<li><p><strong>timeout</strong> (<em>int = 10</em>) – The timeout limit (in second) for each run.
+This is used in a wrapper of the multiprocessing.Process.join().</p></li>
+<li><p><strong>number</strong> (<em>int = 3</em>) – The number of times to run the generated code for taking average.
+We call these runs as one <cite>repeat</cite> of measurement.</p></li>
+<li><p><strong>repeat</strong> (<em>int = 1</em>) – The number of times to repeat the measurement.
+In total, the generated code will be run (1 + number x repeat) times,
+where the first “1” is warm up and will be discarded.
+The returned result contains <cite>repeat</cite> costs,
+each of which is an average of <cite>number</cite> costs.</p></li>
+<li><p><strong>min_repeat_ms</strong> (<em>int = 100</em>) – The minimum duration of one <cite>repeat</cite> in milliseconds.
+By default, one <cite>repeat</cite> contains <cite>number</cite> runs. If this parameter is set,
+the parameters <cite>number</cite> will be dynamically adjusted to meet the
+minimum duration requirement of one <cite>repeat</cite>.
+i.e., When the run time of one <cite>repeat</cite> falls below this time, the <cite>number</cite> parameter
+will be automatically increased.</p></li>
+<li><p><strong>cooldown_interval</strong> (<em>float = 0.0</em>) – The cool down interval between two measurements.</p></li>
+<li><p><strong>enable_cpu_cache_flush</strong> (<em>bool = False</em>) – Whether to flush cache on CPU between repeated measurements.
+Flushing cache can make the measured latency of one operator closer to
+its actual latency during end-to-end inference.
+To make this option effective, the argument <cite>number</cite> should also be set to 1.
+This is only has effect on CPU task.</p></li>
+</ul>
+</dd>
+</dl>
+</dd></dl>
+
+</div>
 </div>
 
 
diff --git a/docs/api/python/index.html b/docs/api/python/index.html
index fd8fa1b..6a93241 100644
--- a/docs/api/python/index.html
+++ b/docs/api/python/index.html
@@ -261,6 +261,8 @@
 </li>
 <li class="toctree-l1"><a class="reference internal" href="auto_scheduler.html">tvm.auto_scheduler</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="auto_scheduler.html#module-tvm.auto_scheduler.auto_schedule">tvm.auto_scheduler.auto_schedule</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auto_scheduler.html#tvm-auto-scheduler-workload-registry">tvm.auto_scheduler.workload_registry</a></li>
+<li class="toctree-l2"><a class="reference internal" href="auto_scheduler.html#module-tvm.auto_scheduler.measure">tvm.auto_scheduler.measure</a></li>
 </ul>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="rpc.html">tvm.rpc</a></li>
diff --git a/docs/api/python/relay/nn.html b/docs/api/python/relay/nn.html
index ed1789f..f4952f0 100644
--- a/docs/api/python/relay/nn.html
+++ b/docs/api/python/relay/nn.html
@@ -1620,14 +1620,17 @@ denotes the <span class="math notranslate nohighlight">\(q^{th}\)</span> neighbo
 Applies a linear transformation</p>
 <div class="math notranslate nohighlight">
 \[\]</div>
-<p><cite>Y = X * W</cite></p>
+<p><cite>Y = X * W^T</cite></p>
 <dl class="field-list simple">
 <dt class="field-odd">Parameters</dt>
 <dd class="field-odd"><ul class="simple">
-<li><p><strong>data</strong> (<em>tvm.relay.Expr</em>) – The input data to the operator.</p></li>
-<li><p><strong>weight</strong> (<em>tvm.relay.Expr</em>) – The weight expressions.</p></li>
+<li><p><strong>data</strong> (<em>tvm.relay.Expr</em>) – The input data to the operator,
+of shape <cite>(d_1, d_2, …, d_n, units_in)</cite>.</p></li>
+<li><p><strong>weight</strong> (<em>tvm.relay.Expr</em>) – The weight expressions, 2-D matrix,
+of shape <cite>(units, units_in)</cite>.</p></li>
 <li><p><strong>units</strong> (<a class="reference external" href="https://docs.python.org/3/library/functions.html#int" title="(in Python v3.8)"><em>int</em></a><em>, </em><em>optional</em>) – Number of hidden units of the dense transformation.</p></li>
-<li><p><strong>out_dtype</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.8)"><em>str</em></a><em>, </em><em>optional</em>) – Specifies the output data type for mixed precision dense.</p></li>
+<li><p><strong>out_dtype</strong> (<a class="reference external" href="https://docs.python.org/3/library/stdtypes.html#str" title="(in Python v3.8)"><em>str</em></a><em>, </em><em>optional</em>) – Specifies the output data type for mixed precision dense,
+of shape <cite>(d_1, d_2, …, d_n, units)</cite>.</p></li>
 </ul>
 </dd>
 <dt class="field-even">Returns</dt>
diff --git a/docs/api/typedoc/assets/js/main.js b/docs/api/typedoc/assets/js/main.js
index fe9fac3..39a8066 100644
--- a/docs/api/typedoc/assets/js/main.js
+++ b/docs/api/typedoc/assets/js/main.js
@@ -1 +1 @@
-!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.7",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return null==e?"":e.toString()},e.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isAr [...]
\ No newline at end of file
+!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.7",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return null==e?"":e.toString()},e.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isAr [...]
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/bytestreamreader.html b/docs/api/typedoc/classes/bytestreamreader.html
index b41a4eb..912f5ba 100644
--- a/docs/api/typedoc/classes/bytestreamreader.html
+++ b/docs/api/typedoc/classes/bytestreamreader.html
@@ -119,7 +119,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L43">rpc_server.ts:43</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L43">rpc_server.ts:43</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -141,7 +141,7 @@
 					<div class="tsd-signature tsd-kind-icon">bytes<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Uint8Array</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L43">rpc_server.ts:43</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L43">rpc_server.ts:43</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -151,7 +151,7 @@
 					<div class="tsd-signature tsd-kind-icon">offset<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 0</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L42">rpc_server.ts:42</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L42">rpc_server.ts:42</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -168,7 +168,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L63">rpc_server.ts:63</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L63">rpc_server.ts:63</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Uint8Array</span></h4>
@@ -185,7 +185,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L49">rpc_server.ts:49</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L49">rpc_server.ts:49</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
@@ -202,7 +202,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L57">rpc_server.ts:57</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L57">rpc_server.ts:57</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
@@ -273,6 +273,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/cachedcallstack.html b/docs/api/typedoc/classes/cachedcallstack.html
index b1e728a..7f98c54 100644
--- a/docs/api/typedoc/classes/cachedcallstack.html
+++ b/docs/api/typedoc/classes/cachedcallstack.html
@@ -144,7 +144,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L223">memory.ts:223</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L223">memory.ts:223</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -172,7 +172,7 @@
 					<div class="tsd-signature tsd-kind-icon">temp<wbr>Args<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Array</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/disposable.html" class="tsd-signature-type">Disposable</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = []</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L208">memory.ts:208</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L208">memory.ts:208</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -194,7 +194,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L312">memory.ts:312</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L312">memory.ts:312</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -226,7 +226,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L284">memory.ts:284</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L284">memory.ts:284</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -262,7 +262,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L388">memory.ts:388</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L388">memory.ts:388</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -300,7 +300,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L376">memory.ts:376</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L376">memory.ts:376</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -340,7 +340,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L267">memory.ts:267</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L267">memory.ts:267</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -373,7 +373,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L243">memory.ts:243</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L243">memory.ts:243</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -390,7 +390,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L321">memory.ts:321</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L321">memory.ts:321</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -422,7 +422,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L252">memory.ts:252</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L252">memory.ts:252</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -444,7 +444,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L359">memory.ts:359</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L359">memory.ts:359</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -470,7 +470,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L342">memory.ts:342</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L342">memory.ts:342</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -496,7 +496,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L350">memory.ts:350</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L350">memory.ts:350</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -522,7 +522,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L326">memory.ts:326</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L326">memory.ts:326</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -548,7 +548,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L363">memory.ts:363</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L363">memory.ts:363</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -574,7 +574,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L346">memory.ts:346</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L346">memory.ts:346</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -600,7 +600,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L334">memory.ts:334</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L334">memory.ts:334</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -713,6 +713,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/dlcontext.html b/docs/api/typedoc/classes/dlcontext.html
index 72861e7..c7712be 100644
--- a/docs/api/typedoc/classes/dlcontext.html
+++ b/docs/api/typedoc/classes/dlcontext.html
@@ -118,7 +118,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L203">runtime.ts:203</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L203">runtime.ts:203</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -146,7 +146,7 @@
 					<div class="tsd-signature tsd-kind-icon">device<wbr>Id<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L201">runtime.ts:201</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L201">runtime.ts:201</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -161,7 +161,7 @@
 					<div class="tsd-signature tsd-kind-icon">device<wbr>Type<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L199">runtime.ts:199</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L199">runtime.ts:199</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -183,7 +183,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L224">runtime.ts:224</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L224">runtime.ts:224</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -205,7 +205,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L231">runtime.ts:231</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L231">runtime.ts:231</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4>
@@ -273,6 +273,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/dldatatype.html b/docs/api/typedoc/classes/dldatatype.html
index 56b6e62..e2e75a5 100644
--- a/docs/api/typedoc/classes/dldatatype.html
+++ b/docs/api/typedoc/classes/dldatatype.html
@@ -119,7 +119,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L263">runtime.ts:263</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L263">runtime.ts:263</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -147,7 +147,7 @@
 					<div class="tsd-signature tsd-kind-icon">bits<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L261">runtime.ts:261</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L261">runtime.ts:261</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -162,7 +162,7 @@
 					<div class="tsd-signature tsd-kind-icon">code<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L259">runtime.ts:259</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L259">runtime.ts:259</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -177,7 +177,7 @@
 					<div class="tsd-signature tsd-kind-icon">lanes<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L263">runtime.ts:263</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L263">runtime.ts:263</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -199,7 +199,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L280">runtime.ts:280</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L280">runtime.ts:280</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
@@ -216,7 +216,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L271">runtime.ts:271</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L271">runtime.ts:271</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4>
@@ -287,6 +287,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/environment.html b/docs/api/typedoc/classes/environment.html
index d4a09e0..f0e6355 100644
--- a/docs/api/typedoc/classes/environment.html
+++ b/docs/api/typedoc/classes/environment.html
@@ -125,7 +125,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L86">environment.ts:86</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L86">environment.ts:86</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -169,7 +169,7 @@
 					<aside class="tsd-sources">
 						<p>Implementation of <a href="../interfaces/libraryprovider.html">LibraryProvider</a>.<a href="../interfaces/libraryprovider.html#imports">imports</a></p>
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L70">environment.ts:70</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L70">environment.ts:70</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -179,7 +179,7 @@
 					<div class="tsd-signature tsd-kind-icon">logger<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>msg<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L69">environment.ts:69</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L69">environment.ts:69</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-type-declaration">
@@ -210,7 +210,7 @@
 					<div class="tsd-signature tsd-kind-icon">packedCFunc<wbr>Table<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">ctypes.FTVMWasmPackedCFunc</span><span class="tsd-signature-symbol"> | </span><span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = [undefined,]</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L78">environment.ts:78</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L78">environment.ts:78</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -228,7 +228,7 @@
 					<div class="tsd-signature tsd-kind-icon">packedCFunc<wbr>Table<wbr>Free<wbr>Id<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> = []</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L84">environment.ts:84</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L84">environment.ts:84</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -250,7 +250,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L105">environment.ts:105</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L105">environment.ts:105</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -332,6 +332,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/ffilibrary.html b/docs/api/typedoc/classes/ffilibrary.html
index 5f57e18..dc6637d 100644
--- a/docs/api/typedoc/classes/ffilibrary.html
+++ b/docs/api/typedoc/classes/ffilibrary.html
@@ -131,7 +131,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L49">runtime.ts:49</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L49">runtime.ts:49</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -156,7 +156,7 @@
 					<div class="tsd-signature tsd-kind-icon">exports<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">Function</span><span class="tsd-signature-symbol">&gt;</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L46">runtime.ts:46</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L46">runtime.ts:46</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -166,7 +166,7 @@
 					<div class="tsd-signature tsd-kind-icon">memory<span class="tsd-signature-symbol">:</span> <a href="memory.html" class="tsd-signature-type">Memory</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L45">runtime.ts:45</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L45">runtime.ts:45</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -176,7 +176,7 @@
 					<div class="tsd-signature tsd-kind-icon">wasm32<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L44">runtime.ts:44</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L44">runtime.ts:44</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -186,7 +186,7 @@
 					<div class="tsd-signature tsd-kind-icon">webGPUContext<span class="tsd-signature-symbol">:</span> <a href="webgpucontext.html" class="tsd-signature-type">WebGPUContext</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L47">runtime.ts:47</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L47">runtime.ts:47</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -203,7 +203,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L76">runtime.ts:76</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L76">runtime.ts:76</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -226,7 +226,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L66">runtime.ts:66</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L66">runtime.ts:66</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -243,7 +243,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L84">runtime.ts:84</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L84">runtime.ts:84</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <a href="cachedcallstack.html" class="tsd-signature-type">CachedCallStack</a></h4>
@@ -260,7 +260,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L95">runtime.ts:95</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L95">runtime.ts:95</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -283,7 +283,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L72">runtime.ts:72</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L72">runtime.ts:72</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
@@ -366,6 +366,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/graphruntime.html b/docs/api/typedoc/classes/graphruntime.html
index d6fb99e..8ec806e 100644
--- a/docs/api/typedoc/classes/graphruntime.html
+++ b/docs/api/typedoc/classes/graphruntime.html
@@ -130,7 +130,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L584">runtime.ts:584</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L584">runtime.ts:584</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -162,7 +162,7 @@
 					<div class="tsd-signature tsd-kind-icon">module<span class="tsd-signature-symbol">:</span> <a href="module.html" class="tsd-signature-type">Module</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L580">runtime.ts:580</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L580">runtime.ts:580</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -179,7 +179,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L655">runtime.ts:655</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L655">runtime.ts:655</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -224,7 +224,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L598">runtime.ts:598</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L598">runtime.ts:598</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -241,7 +241,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L632">runtime.ts:632</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L632">runtime.ts:632</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -279,7 +279,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L645">runtime.ts:645</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L645">runtime.ts:645</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -310,7 +310,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L622">runtime.ts:622</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L622">runtime.ts:622</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -332,7 +332,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L610">runtime.ts:610</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L610">runtime.ts:610</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -429,6 +429,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/instance.html b/docs/api/typedoc/classes/instance.html
index b3ba613..c026d07 100644
--- a/docs/api/typedoc/classes/instance.html
+++ b/docs/api/typedoc/classes/instance.html
@@ -139,7 +139,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L693">runtime.ts:693</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L693">runtime.ts:693</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -202,7 +202,7 @@
 					<div class="tsd-signature tsd-kind-icon">exports<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">Function</span><span class="tsd-signature-symbol">&gt;</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L685">runtime.ts:685</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L685">runtime.ts:685</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -212,7 +212,7 @@
 					<div class="tsd-signature tsd-kind-icon">memory<span class="tsd-signature-symbol">:</span> <a href="memory.html" class="tsd-signature-type">Memory</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L684">runtime.ts:684</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L684">runtime.ts:684</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -229,7 +229,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L925">runtime.ts:925</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L925">runtime.ts:925</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -267,7 +267,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L933">runtime.ts:933</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L933">runtime.ts:933</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -298,7 +298,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L995">runtime.ts:995</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L995">runtime.ts:995</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -341,7 +341,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L733">runtime.ts:733</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L733">runtime.ts:733</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -358,7 +358,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L953">runtime.ts:953</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L953">runtime.ts:953</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -402,7 +402,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L817">runtime.ts:817</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L817">runtime.ts:817</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -434,7 +434,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L1038">runtime.ts:1038</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L1038">runtime.ts:1038</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -465,7 +465,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L847">runtime.ts:847</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L847">runtime.ts:847</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -497,7 +497,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L751">runtime.ts:751</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L751">runtime.ts:751</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -520,7 +520,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L1018">runtime.ts:1018</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L1018">runtime.ts:1018</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -568,7 +568,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L790">runtime.ts:790</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L790">runtime.ts:790</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -608,7 +608,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L915">runtime.ts:915</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L915">runtime.ts:915</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -646,7 +646,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L1139">runtime.ts:1139</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L1139">runtime.ts:1139</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -698,7 +698,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L741">runtime.ts:741</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L741">runtime.ts:741</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -722,7 +722,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L869">runtime.ts:869</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L869">runtime.ts:869</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -754,7 +754,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L858">runtime.ts:858</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L858">runtime.ts:858</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -786,7 +786,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L941">runtime.ts:941</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L941">runtime.ts:941</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -913,6 +913,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/memory.html b/docs/api/typedoc/classes/memory.html
index 7edbfa1..3d6b3dc 100644
--- a/docs/api/typedoc/classes/memory.html
+++ b/docs/api/typedoc/classes/memory.html
@@ -130,7 +130,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L40">memory.ts:40</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L40">memory.ts:40</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -152,7 +152,7 @@
 					<div class="tsd-signature tsd-kind-icon">memory<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Memory</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L32">memory.ts:32</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L32">memory.ts:32</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -162,7 +162,7 @@
 					<div class="tsd-signature tsd-kind-icon">wasm32<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = true</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L33">memory.ts:33</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L33">memory.ts:33</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -179,7 +179,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L154">memory.ts:154</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L154">memory.ts:154</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -210,7 +210,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L90">memory.ts:90</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L90">memory.ts:90</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -233,7 +233,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L97">memory.ts:97</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L97">memory.ts:97</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -256,7 +256,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L74">memory.ts:74</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L74">memory.ts:74</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -279,7 +279,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L81">memory.ts:81</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L81">memory.ts:81</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -302,7 +302,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L104">memory.ts:104</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L104">memory.ts:104</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -325,7 +325,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L132">memory.ts:132</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L132">memory.ts:132</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -362,7 +362,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L145">memory.ts:145</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L145">memory.ts:145</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -393,7 +393,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L60">memory.ts:60</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L60">memory.ts:60</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -416,7 +416,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L67">memory.ts:67</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L67">memory.ts:67</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -439,7 +439,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L53">memory.ts:53</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L53">memory.ts:53</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -462,7 +462,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L114">memory.ts:114</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L114">memory.ts:114</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -485,7 +485,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L124">memory.ts:124</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L124">memory.ts:124</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">number</span></h4>
@@ -502,7 +502,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/memory.ts#L175">memory.ts:175</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/memory.ts#L175">memory.ts:175</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -626,6 +626,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/module.html b/docs/api/typedoc/classes/module.html
index 0b6dfef..223e4fa 100644
--- a/docs/api/typedoc/classes/module.html
+++ b/docs/api/typedoc/classes/module.html
@@ -124,7 +124,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L505">runtime.ts:505</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L505">runtime.ts:505</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -170,7 +170,7 @@
 					<div class="tsd-signature tsd-kind-icon">handle<span class="tsd-signature-symbol">:</span> <a href="../index.html#pointer" class="tsd-signature-type">Pointer</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L503">runtime.ts:503</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L503">runtime.ts:503</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -187,7 +187,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L517">runtime.ts:517</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L517">runtime.ts:517</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -204,7 +204,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L531">runtime.ts:531</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L531">runtime.ts:531</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -236,7 +236,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L562">runtime.ts:562</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L562">runtime.ts:562</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -318,6 +318,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/ndarray.html b/docs/api/typedoc/classes/ndarray.html
index 21e4f0e..5a9c537 100644
--- a/docs/api/typedoc/classes/ndarray.html
+++ b/docs/api/typedoc/classes/ndarray.html
@@ -130,7 +130,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L305">runtime.ts:305</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L305">runtime.ts:305</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -158,7 +158,7 @@
 					<div class="tsd-signature tsd-kind-icon">context<span class="tsd-signature-symbol">:</span> <a href="dlcontext.html" class="tsd-signature-type">DLContext</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L298">runtime.ts:298</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L298">runtime.ts:298</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -173,7 +173,7 @@
 					<div class="tsd-signature tsd-kind-icon">dtype<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L294">runtime.ts:294</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L294">runtime.ts:294</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -188,7 +188,7 @@
 					<div class="tsd-signature tsd-kind-icon">handle<span class="tsd-signature-symbol">:</span> <a href="../index.html#pointer" class="tsd-signature-type">Pointer</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L290">runtime.ts:290</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L290">runtime.ts:290</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -203,7 +203,7 @@
 					<div class="tsd-signature tsd-kind-icon">ndim<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L292">runtime.ts:292</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L292">runtime.ts:292</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -218,7 +218,7 @@
 					<div class="tsd-signature tsd-kind-icon">shape<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Array</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">&gt;</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L296">runtime.ts:296</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L296">runtime.ts:296</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -240,7 +240,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L371">runtime.ts:371</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L371">runtime.ts:371</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -273,7 +273,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L415">runtime.ts:415</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L415">runtime.ts:415</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -305,7 +305,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L356">runtime.ts:356</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L356">runtime.ts:356</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -322,7 +322,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L475">runtime.ts:475</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L475">runtime.ts:475</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -346,7 +346,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L444">runtime.ts:444</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L444">runtime.ts:444</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -438,6 +438,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/packedfunccell.html b/docs/api/typedoc/classes/packedfunccell.html
index b0270cd..c9f2ee8 100644
--- a/docs/api/typedoc/classes/packedfunccell.html
+++ b/docs/api/typedoc/classes/packedfunccell.html
@@ -122,7 +122,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L158">runtime.ts:158</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L158">runtime.ts:158</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -147,7 +147,7 @@
 					<div class="tsd-signature tsd-kind-icon">handle<span class="tsd-signature-symbol">:</span> <a href="../index.html#pointer" class="tsd-signature-type">Pointer</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L157">runtime.ts:157</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L157">runtime.ts:157</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -164,7 +164,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L165">runtime.ts:165</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L165">runtime.ts:165</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
@@ -226,6 +226,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/rpcserver.html b/docs/api/typedoc/classes/rpcserver.html
index 274f9ef..65281e2 100644
--- a/docs/api/typedoc/classes/rpcserver.html
+++ b/docs/api/typedoc/classes/rpcserver.html
@@ -115,7 +115,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L92">rpc_server.ts:92</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L92">rpc_server.ts:92</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -176,7 +176,7 @@
 					<div class="tsd-signature tsd-kind-icon">get<wbr>Imports<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">, </span><span class="tsd-signature-type">unknown</span><span class="tsd-signat [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L82">rpc_server.ts:82</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L82">rpc_server.ts:82</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-type-declaration">
@@ -201,7 +201,7 @@
 					<div class="tsd-signature tsd-kind-icon">key<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L78">rpc_server.ts:78</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L78">rpc_server.ts:78</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -211,7 +211,7 @@
 					<div class="tsd-signature tsd-kind-icon">logger<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>msg<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L81">rpc_server.ts:81</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L81">rpc_server.ts:81</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-type-declaration">
@@ -242,7 +242,7 @@
 					<div class="tsd-signature tsd-kind-icon">socket<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">WebSocket</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L79">rpc_server.ts:79</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L79">rpc_server.ts:79</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -252,7 +252,7 @@
 					<div class="tsd-signature tsd-kind-icon">state<span class="tsd-signature-symbol">:</span> <a href="../enums/rpcserverstate.html" class="tsd-signature-type">RPCServerState</a><span class="tsd-signature-symbol"> = RPCServerState.InitHeader</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L80">rpc_server.ts:80</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L80">rpc_server.ts:80</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -262,7 +262,7 @@
 					<div class="tsd-signature tsd-kind-icon">url<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L77">rpc_server.ts:77</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L77">rpc_server.ts:77</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -333,6 +333,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/scalar.html b/docs/api/typedoc/classes/scalar.html
index 5a71dab..c43692c 100644
--- a/docs/api/typedoc/classes/scalar.html
+++ b/docs/api/typedoc/classes/scalar.html
@@ -112,7 +112,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L145">runtime.ts:145</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L145">runtime.ts:145</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -137,7 +137,7 @@
 					<div class="tsd-signature tsd-kind-icon">dtype<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L145">runtime.ts:145</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L145">runtime.ts:145</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -152,7 +152,7 @@
 					<div class="tsd-signature tsd-kind-icon">value<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L143">runtime.ts:143</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L143">runtime.ts:143</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -216,6 +216,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/classes/webgpucontext.html b/docs/api/typedoc/classes/webgpucontext.html
index 877fb5e..86e4b97 100644
--- a/docs/api/typedoc/classes/webgpucontext.html
+++ b/docs/api/typedoc/classes/webgpucontext.html
@@ -120,7 +120,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L57">webgpu.ts:57</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L57">webgpu.ts:57</a></li>
 								</ul>
 							</aside>
 							<h4 class="tsd-parameters-title">Parameters</h4>
@@ -145,7 +145,7 @@
 					<div class="tsd-signature tsd-kind-icon">device<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">GPUDevice</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L50">webgpu.ts:50</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L50">webgpu.ts:50</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -155,7 +155,7 @@
 					<div class="tsd-signature tsd-kind-icon">memory<span class="tsd-signature-symbol">:</span> <a href="memory.html" class="tsd-signature-type">Memory</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L51">webgpu.ts:51</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L51">webgpu.ts:51</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -172,7 +172,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L84">webgpu.ts:84</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L84">webgpu.ts:84</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -209,7 +209,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L170">webgpu.ts:170</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L170">webgpu.ts:170</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -238,7 +238,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L67">webgpu.ts:67</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L67">webgpu.ts:67</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -314,6 +314,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/enums/argtypecode.html b/docs/api/typedoc/enums/argtypecode.html
index c65f895..aa8e1f9 100644
--- a/docs/api/typedoc/enums/argtypecode.html
+++ b/docs/api/typedoc/enums/argtypecode.html
@@ -106,7 +106,7 @@
 					<div class="tsd-signature tsd-kind-icon">Float<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 2</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L216">ctypes.ts:216</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L216">ctypes.ts:216</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -116,7 +116,7 @@
 					<div class="tsd-signature tsd-kind-icon">Int<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 0</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L214">ctypes.ts:214</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L214">ctypes.ts:214</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -126,7 +126,7 @@
 					<div class="tsd-signature tsd-kind-icon">Null<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 4</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L218">ctypes.ts:218</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L218">ctypes.ts:218</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -136,7 +136,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMBytes<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 12</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L226">ctypes.ts:226</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L226">ctypes.ts:226</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -146,7 +146,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMContext<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 6</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L220">ctypes.ts:220</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L220">ctypes.ts:220</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -156,7 +156,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMDLTensor<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 7</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L221">ctypes.ts:221</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L221">ctypes.ts:221</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -166,7 +166,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMData<wbr>Type<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 5</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L219">ctypes.ts:219</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L219">ctypes.ts:219</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -176,7 +176,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMModule<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 9</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L223">ctypes.ts:223</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L223">ctypes.ts:223</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -186,7 +186,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMNDArray<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 13</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L227">ctypes.ts:227</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L227">ctypes.ts:227</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -196,7 +196,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMObject<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 8</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L222">ctypes.ts:222</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L222">ctypes.ts:222</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -206,7 +206,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMObjectRValue<wbr>Ref<wbr>Arg<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 14</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L228">ctypes.ts:228</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L228">ctypes.ts:228</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -216,7 +216,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMOpaque<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 3</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L217">ctypes.ts:217</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L217">ctypes.ts:217</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -226,7 +226,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMPacked<wbr>Func<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 10</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L224">ctypes.ts:224</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L224">ctypes.ts:224</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -236,7 +236,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMStr<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 11</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L225">ctypes.ts:225</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L225">ctypes.ts:225</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -246,7 +246,7 @@
 					<div class="tsd-signature tsd-kind-icon">UInt<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 1</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L215">ctypes.ts:215</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L215">ctypes.ts:215</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -341,6 +341,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/enums/aynccallbackcode.html b/docs/api/typedoc/enums/aynccallbackcode.html
index 9fab770..093c8b9 100644
--- a/docs/api/typedoc/enums/aynccallbackcode.html
+++ b/docs/api/typedoc/enums/aynccallbackcode.html
@@ -93,7 +93,7 @@
 					<div class="tsd-signature tsd-kind-icon">k<wbr>Exception<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 5</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L677">runtime.ts:677</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L677">runtime.ts:677</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -103,7 +103,7 @@
 					<div class="tsd-signature tsd-kind-icon">k<wbr>Return<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 4</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L676">runtime.ts:676</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L676">runtime.ts:676</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -159,6 +159,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/enums/dldatatypecode.html b/docs/api/typedoc/enums/dldatatypecode.html
index 8d29067..d48c95c 100644
--- a/docs/api/typedoc/enums/dldatatypecode.html
+++ b/docs/api/typedoc/enums/dldatatypecode.html
@@ -95,7 +95,7 @@
 					<div class="tsd-signature tsd-kind-icon">Float<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 2</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L243">runtime.ts:243</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L243">runtime.ts:243</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -105,7 +105,7 @@
 					<div class="tsd-signature tsd-kind-icon">Int<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 0</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L241">runtime.ts:241</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L241">runtime.ts:241</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -115,7 +115,7 @@
 					<div class="tsd-signature tsd-kind-icon">Opaque<wbr>Handle<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 3</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L244">runtime.ts:244</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L244">runtime.ts:244</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -125,7 +125,7 @@
 					<div class="tsd-signature tsd-kind-icon">UInt<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 1</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L242">runtime.ts:242</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L242">runtime.ts:242</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -187,6 +187,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/enums/rpcserverstate.html b/docs/api/typedoc/enums/rpcserverstate.html
index 7d8b17c..bcbcfe3 100644
--- a/docs/api/typedoc/enums/rpcserverstate.html
+++ b/docs/api/typedoc/enums/rpcserverstate.html
@@ -90,7 +90,7 @@
 					<div class="tsd-signature tsd-kind-icon">Init<wbr>Header<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L27">rpc_server.ts:27</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L27">rpc_server.ts:27</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -100,7 +100,7 @@
 					<div class="tsd-signature tsd-kind-icon">Init<wbr>Header<wbr>Key<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L28">rpc_server.ts:28</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L28">rpc_server.ts:28</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -110,7 +110,7 @@
 					<div class="tsd-signature tsd-kind-icon">Init<wbr>Server<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L29">rpc_server.ts:29</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L29">rpc_server.ts:29</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -120,7 +120,7 @@
 					<div class="tsd-signature tsd-kind-icon">Receive<wbr>Packet<wbr>Body<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L32">rpc_server.ts:32</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L32">rpc_server.ts:32</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -130,7 +130,7 @@
 					<div class="tsd-signature tsd-kind-icon">Receive<wbr>Packet<wbr>Header<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L31">rpc_server.ts:31</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L31">rpc_server.ts:31</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -140,7 +140,7 @@
 					<div class="tsd-signature tsd-kind-icon">Wait<wbr>For<wbr>Callback<span class="tsd-signature-symbol">:</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L30">rpc_server.ts:30</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L30">rpc_server.ts:30</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -208,6 +208,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/enums/sizeof.html b/docs/api/typedoc/enums/sizeof.html
index ac3454d..ae14170 100644
--- a/docs/api/typedoc/enums/sizeof.html
+++ b/docs/api/typedoc/enums/sizeof.html
@@ -100,7 +100,7 @@
 					<div class="tsd-signature tsd-kind-icon">DLContext<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = I32 + I32</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L207">ctypes.ts:207</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L207">ctypes.ts:207</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -110,7 +110,7 @@
 					<div class="tsd-signature tsd-kind-icon">DLData<wbr>Type<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = I32</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L206">ctypes.ts:206</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L206">ctypes.ts:206</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -120,7 +120,7 @@
 					<div class="tsd-signature tsd-kind-icon">F32<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 4</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L203">ctypes.ts:203</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L203">ctypes.ts:203</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -130,7 +130,7 @@
 					<div class="tsd-signature tsd-kind-icon">F64<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 8</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L204">ctypes.ts:204</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L204">ctypes.ts:204</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -140,7 +140,7 @@
 					<div class="tsd-signature tsd-kind-icon">I32<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 4</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L201">ctypes.ts:201</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L201">ctypes.ts:201</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -150,7 +150,7 @@
 					<div class="tsd-signature tsd-kind-icon">I64<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 8</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L202">ctypes.ts:202</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L202">ctypes.ts:202</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -160,7 +160,7 @@
 					<div class="tsd-signature tsd-kind-icon">TVMValue<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 8</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L205">ctypes.ts:205</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L205">ctypes.ts:205</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -170,7 +170,7 @@
 					<div class="tsd-signature tsd-kind-icon">U16<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 2</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L200">ctypes.ts:200</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L200">ctypes.ts:200</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -180,7 +180,7 @@
 					<div class="tsd-signature tsd-kind-icon">U8<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol"> = 1</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L199">ctypes.ts:199</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L199">ctypes.ts:199</a></li>
 						</ul>
 					</aside>
 				</section>
@@ -257,6 +257,5 @@
 </div>
 <div class="overlay"></div>
 <script src="../assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="../assets/js/search.js"><' + '/script>');</script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/typedoc/index.html b/docs/api/typedoc/index.html
index 6b84952..3ec2328 100644
--- a/docs/api/typedoc/index.html
+++ b/docs/api/typedoc/index.html
@@ -174,7 +174,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMArray<wbr>Alloc<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>shape<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, ndim<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, dtypeCode<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, dtypeBits<span class="tsd [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L112">ctypes.ts:112</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L112">ctypes.ts:112</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -238,7 +238,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMArray<wbr>Copy<wbr>From<wbr>Bytes<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, data<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, nbytes<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">num [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L128">ctypes.ts:128</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L128">ctypes.ts:128</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -282,7 +282,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMArray<wbr>Copy<wbr>From<wbr>To<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>from<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, to<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, stream<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-sig [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L144">ctypes.ts:144</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L144">ctypes.ts:144</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -326,7 +326,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMArray<wbr>Copy<wbr>ToBytes<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, data<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, nbytes<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</sp [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L136">ctypes.ts:136</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L136">ctypes.ts:136</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -370,7 +370,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMArray<wbr>Free<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L121">ctypes.ts:121</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L121">ctypes.ts:121</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -406,7 +406,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMBackend<wbr>PackedCFunc<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>argValues<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, argCodes<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, nargs<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number< [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L160">ctypes.ts:160</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L160">ctypes.ts:160</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -458,7 +458,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMCFunc<wbr>Set<wbr>Return<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>ret<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, value<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, typeCode<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signa [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L77">ctypes.ts:77</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L77">ctypes.ts:77</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -506,7 +506,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMCb<wbr>Arg<wbr>ToReturn<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>value<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, code<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span c [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L83">ctypes.ts:83</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L83">ctypes.ts:83</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -545,7 +545,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMFunc<wbr>Call<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>func<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, argValues<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, typeCode<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-t [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L67">ctypes.ts:67</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L67">ctypes.ts:67</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -601,7 +601,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMFunc<wbr>Free<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>func<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L57">ctypes.ts:57</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L57">ctypes.ts:57</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -637,7 +637,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMFunc<wbr>Get<wbr>Global<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>name<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, out<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span cla [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L100">ctypes.ts:100</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L100">ctypes.ts:100</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -676,7 +676,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMFunc<wbr>List<wbr>Global<wbr>Names<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>outSize<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, outArray<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&g [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L88">ctypes.ts:88</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L88">ctypes.ts:88</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -715,7 +715,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMFunc<wbr>Register<wbr>Global<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>name<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, f<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, override<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</spa [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L94">ctypes.ts:94</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L94">ctypes.ts:94</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -758,7 +758,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMGet<wbr>Last<wbr>Error<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L34">ctypes.ts:34</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L34">ctypes.ts:34</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -788,7 +788,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMMod<wbr>Free<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>mod<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L52">ctypes.ts:52</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L52">ctypes.ts:52</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -824,7 +824,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMMod<wbr>Get<wbr>Function<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>mod<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, funcName<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, queryImports<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">numbe [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L42">ctypes.ts:42</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L42">ctypes.ts:42</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -872,7 +872,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMMod<wbr>Import<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>mod<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, dep<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-si [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L48">ctypes.ts:48</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L48">ctypes.ts:48</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -912,7 +912,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMSynchronize<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>deviceType<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, deviceId<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, stream<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signatur [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L150">ctypes.ts:150</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L150">ctypes.ts:150</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -954,7 +954,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMWasm<wbr>Alloc<wbr>Space<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>size<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L167">ctypes.ts:167</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L167">ctypes.ts:167</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -990,7 +990,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMWasm<wbr>Free<wbr>Space<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>ptr<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L170">ctypes.ts:170</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L170">ctypes.ts:170</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1026,7 +1026,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMWasm<wbr>Func<wbr>Create<wbr>FromCFunc<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>resource<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, out<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&g [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L187">ctypes.ts:187</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L187">ctypes.ts:187</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1066,7 +1066,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMWasm<wbr>PackedCFunc<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>args<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, typeCodes<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a>, nargs<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">number</span>, [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L179">ctypes.ts:179</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L179">ctypes.ts:179</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1118,7 +1118,7 @@
 					<div class="tsd-signature tsd-kind-icon">FTVMWasm<wbr>PackedCFunc<wbr>Finalizer<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span>resourceHandle<span class="tsd-signature-symbol">: </span><a href="index.html#pointer" class="tsd-signature-type">Pointer</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L193">ctypes.ts:193</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L193">ctypes.ts:193</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1154,7 +1154,7 @@
 					<div class="tsd-signature tsd-kind-icon">GPUPointer<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L25">webgpu.ts:25</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L25">webgpu.ts:25</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1169,7 +1169,7 @@
 					<div class="tsd-signature tsd-kind-icon">Packed<wbr>Func<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span>args<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol"> &amp; </span><a href="interfaces/disp [...]
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L36">runtime.ts:36</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L36">runtime.ts:36</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1184,7 +1184,7 @@
 					<div class="tsd-signature tsd-kind-icon">Pointer<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L25">ctypes.ts:25</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L25">ctypes.ts:25</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1199,7 +1199,7 @@
 					<div class="tsd-signature tsd-kind-icon">Ptr<wbr>Offset<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/ctypes.ts#L28">ctypes.ts:28</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/ctypes.ts#L28">ctypes.ts:28</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1217,7 +1217,7 @@
 					<div class="tsd-signature tsd-kind-icon">RPC_<wbr>MAGIC<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">1045105</span><span class="tsd-signature-symbol"> = 1045105</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/rpc_server.ts#L36">rpc_server.ts:36</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/rpc_server.ts#L36">rpc_server.ts:36</a></li>
 						</ul>
 					</aside>
 					<div class="tsd-comment tsd-typography">
@@ -1239,7 +1239,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/support.ts#L25">support.ts:25</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/support.ts#L25">support.ts:25</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1271,7 +1271,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/support.ts#L39">support.ts:39</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/support.ts#L39">support.ts:39</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1300,7 +1300,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/support.ts#L52">support.ts:52</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/support.ts#L52">support.ts:52</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1337,7 +1337,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/compact.ts#L38">compact.ts:38</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/compact.ts#L38">compact.ts:38</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1368,7 +1368,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/webgpu.ts#L30">webgpu.ts:30</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/webgpu.ts#L30">webgpu.ts:30</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1390,7 +1390,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/environment.ts#L32">environment.ts:32</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/environment.ts#L32">environment.ts:32</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1421,7 +1421,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/compact.ts#L24">compact.ts:24</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/compact.ts#L24">compact.ts:24</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1443,7 +1443,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L1360">runtime.ts:1360</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L1360">runtime.ts:1360</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1508,7 +1508,7 @@
 						<li class="tsd-description">
 							<aside class="tsd-sources">
 								<ul>
-									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/support.ts#L62">support.ts:62</a></li>
+									<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/support.ts#L62">support.ts:62</a></li>
 								</ul>
 							</aside>
 							<div class="tsd-comment tsd-typography">
@@ -1530,7 +1530,7 @@
 					<div class="tsd-signature tsd-kind-icon">DLData<wbr>Type<wbr>Code<wbr>ToStr<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L247">runtime.ts:247</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L247">runtime.ts:247</a></li>
 						</ul>
 					</aside>
 					<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-object-literal">
@@ -1539,7 +1539,7 @@
 						<div class="tsd-signature tsd-kind-icon">0<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;int&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L248">runtime.ts:248</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L248">runtime.ts:248</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1549,7 +1549,7 @@
 						<div class="tsd-signature tsd-kind-icon">1<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;uint&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L249">runtime.ts:249</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L249">runtime.ts:249</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1559,7 +1559,7 @@
 						<div class="tsd-signature tsd-kind-icon">2<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;float&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L250">runtime.ts:250</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L250">runtime.ts:250</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1569,7 +1569,7 @@
 						<div class="tsd-signature tsd-kind-icon">3<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;handle&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L251">runtime.ts:251</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L251">runtime.ts:251</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1580,7 +1580,7 @@
 					<div class="tsd-signature tsd-kind-icon">Device<wbr>Enum<wbr>ToStr<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L175">runtime.ts:175</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L175">runtime.ts:175</a></li>
 						</ul>
 					</aside>
 					<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-object-literal">
@@ -1589,7 +1589,7 @@
 						<div class="tsd-signature tsd-kind-icon">1<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;cpu&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L176">runtime.ts:176</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L176">runtime.ts:176</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1599,7 +1599,7 @@
 						<div class="tsd-signature tsd-kind-icon">15<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;webgpu&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L180">runtime.ts:180</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L180">runtime.ts:180</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1609,7 +1609,7 @@
 						<div class="tsd-signature tsd-kind-icon">2<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;gpu&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L177">runtime.ts:177</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L177">runtime.ts:177</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1619,7 +1619,7 @@
 						<div class="tsd-signature tsd-kind-icon">4<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;opencl&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L178">runtime.ts:178</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L178">runtime.ts:178</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1629,7 +1629,7 @@
 						<div class="tsd-signature tsd-kind-icon">8<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol"> = &quot;metal&quot;</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L179">runtime.ts:179</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L179">runtime.ts:179</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1640,7 +1640,7 @@
 					<div class="tsd-signature tsd-kind-icon">Device<wbr>Str<wbr>ToEnum<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span></div>
 					<aside class="tsd-sources">
 						<ul>
-							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L183">runtime.ts:183</a></li>
+							<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L183">runtime.ts:183</a></li>
 						</ul>
 					</aside>
 					<section class="tsd-panel tsd-member tsd-kind-variable tsd-parent-kind-object-literal">
@@ -1649,7 +1649,7 @@
 						<div class="tsd-signature tsd-kind-icon">cl<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 4</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L187">runtime.ts:187</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L187">runtime.ts:187</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1659,7 +1659,7 @@
 						<div class="tsd-signature tsd-kind-icon">cpu<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 1</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L184">runtime.ts:184</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L184">runtime.ts:184</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1669,7 +1669,7 @@
 						<div class="tsd-signature tsd-kind-icon">cuda<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 2</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L186">runtime.ts:186</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L186">runtime.ts:186</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1679,7 +1679,7 @@
 						<div class="tsd-signature tsd-kind-icon">gpu<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 2</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L185">runtime.ts:185</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L185">runtime.ts:185</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1689,7 +1689,7 @@
 						<div class="tsd-signature tsd-kind-icon">metal<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 8</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L190">runtime.ts:190</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L190">runtime.ts:190</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1699,7 +1699,7 @@
 						<div class="tsd-signature tsd-kind-icon">opencl<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 4</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L188">runtime.ts:188</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L188">runtime.ts:188</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1709,7 +1709,7 @@
 						<div class="tsd-signature tsd-kind-icon">vulkan<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 7</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L189">runtime.ts:189</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L189">runtime.ts:189</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1719,7 +1719,7 @@
 						<div class="tsd-signature tsd-kind-icon">webgpu<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol"> = 15</span></div>
 						<aside class="tsd-sources">
 							<ul>
-								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/74254c3/web/src/runtime.ts#L191">runtime.ts:191</a></li>
+								<li>Defined in <a href="https://github.com/apache/incubator-tvm/blob/380239d/web/src/runtime.ts#L191">runtime.ts:191</a></li>
 							</ul>
 						</aside>
 					</section>
@@ -1950,6 +1950,5 @@
 </div>
 <div class="overlay"></div>
 <script src="assets/js/main.js"></script>
-<script>if (location.protocol == 'file:') document.write('<script src="assets/js/search.js"><' + '/script>');</script>
 </body>
... 3380 lines suppressed ...