You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by tq...@apache.org on 2022/11/28 11:10:33 UTC

[tvm-site] branch asf-site updated: deploying docs (apache/tvm@c38a0c50a7cde09d548f570f7aafa8e293ef1485)

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

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


The following commit(s) were added to refs/heads/asf-site by this push:
     new b8f4b465b6 deploying docs (apache/tvm@c38a0c50a7cde09d548f570f7aafa8e293ef1485)
b8f4b465b6 is described below

commit b8f4b465b6cc949a4b1556628f0789413846d7dd
Author: tvm-bot <95...@users.noreply.github.com>
AuthorDate: Mon Nov 28 11:10:26 2022 +0000

    deploying docs (apache/tvm@c38a0c50a7cde09d548f570f7aafa8e293ef1485)
---
 .../deploy_model_on_adreno.py                      |  351 ++++
 .../deploy_model_on_adreno.ipynb                   |  219 +++
 .../sphx_glr_deploy_model_on_adreno_001.png        |  Bin 0 -> 245200 bytes
 .../sphx_glr_deploy_model_on_adreno_thumb.png      |  Bin 0 -> 104799 bytes
 docs/_images/sphx_glr_micro_train_001.png          |  Bin 344037 -> 331892 bytes
 docs/_images/sphx_glr_micro_train_thumb.png        |  Bin 24159 -> 23825 bytes
 .../how_to/compile_models/from_darknet.rst.txt     |    2 +-
 .../how_to/compile_models/from_keras.rst.txt       |    2 +-
 .../how_to/compile_models/from_mxnet.rst.txt       |    2 +-
 .../how_to/compile_models/from_oneflow.rst.txt     |    2 +-
 .../how_to/compile_models/from_pytorch.rst.txt     |    2 +-
 .../how_to/compile_models/from_tensorflow.rst.txt  |    2 +-
 .../compile_models/sg_execution_times.rst.txt      |   22 +-
 docs/_sources/how_to/deploy/adreno.rst.txt         |  336 ++++
 docs/_sources/how_to/deploy/index.rst.txt          |    1 +
 .../deploy_models/deploy_model_on_adreno.rst.txt   |  758 ++++++++
 .../deploy_models/deploy_model_on_android.rst.txt  |    2 +-
 .../deploy_object_detection_pytorch.rst.txt        |    4 +-
 .../deploy_models/deploy_prequantized.rst.txt      |    6 +-
 .../deploy_prequantized_tflite.rst.txt             |    4 +-
 .../how_to/deploy_models/deploy_quantized.rst.txt  |    2 +-
 .../deploy_models/deploy_ssd_gluoncv.rst.txt       |    4 +-
 docs/_sources/how_to/deploy_models/index.rst.txt   |   18 +
 .../deploy_models/sg_execution_times.rst.txt       |   20 +-
 .../extend_tvm/bring_your_own_datatypes.rst.txt    |    2 +-
 .../how_to/extend_tvm/sg_execution_times.rst.txt   |   10 +-
 .../how_to/extend_tvm/use_pass_instrument.rst.txt  |   16 +-
 .../optimize_operators/opt_conv_cuda.rst.txt       |    2 +-
 .../optimize_operators/opt_conv_tensorcore.rst.txt |    2 +-
 .../how_to/optimize_operators/opt_gemm.rst.txt     |   16 +-
 .../optimize_operators/sg_execution_times.rst.txt  |    8 +-
 .../sg_execution_times.rst.txt                     |   14 +-
 .../tune_conv2d_layer_cuda.rst.txt                 | 1860 ++++++++++----------
 .../tune_network_cuda.rst.txt                      |    4 +-
 .../tune_network_x86.rst.txt                       |    4 +-
 .../tune_sparse_x86.rst.txt                        |   85 +-
 .../tune_with_autotvm/sg_execution_times.rst.txt   |    4 +-
 .../tune_with_autotvm/tune_conv2d_cuda.rst.txt     |  466 +----
 .../work_with_microtvm/micro_autotune.rst.txt      |   16 +-
 .../work_with_microtvm/micro_pytorch.rst.txt       |    4 +-
 .../how_to/work_with_microtvm/micro_train.rst.txt  |   18 +-
 .../work_with_microtvm/sg_execution_times.rst.txt  |   12 +-
 .../work_with_relay/sg_execution_times.rst.txt     |   10 +-
 .../how_to/work_with_schedules/intrin_math.rst.txt |    2 +-
 .../work_with_schedules/sg_execution_times.rst.txt |   16 +-
 .../how_to/work_with_schedules/tensorize.rst.txt   |    2 +-
 .../tutorials/autotvm/sg_execution_times.rst.txt   |    6 +-
 .../frontend/deploy_classification.rst.txt         |    2 +-
 .../tutorials/frontend/deploy_detection.rst.txt    |    2 +-
 .../tutorials/frontend/sg_execution_times.rst.txt  |    6 +-
 .../tutorials/optimize/sg_execution_times.rst.txt  |    6 +-
 .../topic/vta/tutorials/sg_execution_times.rst.txt |    6 +-
 .../tutorial/auto_scheduler_matmul_x86.rst.txt     |    6 +-
 docs/_sources/tutorial/autotvm_matmul_x86.rst.txt  |   20 +-
 docs/_sources/tutorial/autotvm_relay_x86.rst.txt   |   60 +-
 .../tutorial/cross_compilation_and_rpc.rst.txt     |    2 +-
 docs/_sources/tutorial/intro_topi.rst.txt          |    2 +-
 docs/_sources/tutorial/sg_execution_times.rst.txt  |   24 +-
 .../tutorial/tensor_expr_get_started.rst.txt       |   46 +-
 docs/commit_hash                                   |    2 +-
 docs/how_to/compile_models/from_darknet.html       |    2 +-
 docs/how_to/compile_models/from_keras.html         |    2 +-
 docs/how_to/compile_models/from_mxnet.html         |    2 +-
 docs/how_to/compile_models/from_oneflow.html       |   14 +-
 docs/how_to/compile_models/from_pytorch.html       |   12 +-
 docs/how_to/compile_models/from_tensorflow.html    |    2 +-
 docs/how_to/compile_models/sg_execution_times.html |   22 +-
 docs/how_to/deploy/adreno.html                     |  707 ++++++++
 docs/how_to/deploy/android.html                    |    5 +-
 docs/how_to/deploy/arm_compute_lib.html            |    1 +
 docs/how_to/deploy/bnns.html                       |    1 +
 docs/how_to/deploy/cpp_deploy.html                 |    1 +
 docs/how_to/deploy/hls.html                        |    1 +
 docs/how_to/deploy/index.html                      |    8 +
 docs/how_to/deploy/integrate.html                  |    5 +-
 docs/how_to/deploy/tensorrt.html                   |    1 +
 docs/how_to/deploy/vitis_ai.html                   |    1 +
 .../deploy_models/deploy_model_on_adreno.html      | 1008 +++++++++++
 .../deploy_models/deploy_model_on_android.html     |    6 +-
 .../deploy_object_detection_pytorch.html           |   50 +-
 docs/how_to/deploy_models/deploy_prequantized.html |    9 +-
 .../deploy_models/deploy_prequantized_tflite.html  |    4 +-
 docs/how_to/deploy_models/deploy_quantized.html    |    2 +-
 docs/how_to/deploy_models/deploy_ssd_gluoncv.html  |   37 +-
 docs/how_to/deploy_models/index.html               |    9 +-
 docs/how_to/deploy_models/sg_execution_times.html  |   30 +-
 .../extend_tvm/bring_your_own_datatypes.html       |    2 +-
 docs/how_to/extend_tvm/sg_execution_times.html     |   10 +-
 docs/how_to/extend_tvm/use_pass_instrument.html    |   16 +-
 docs/how_to/optimize_operators/opt_conv_cuda.html  |    2 +-
 .../optimize_operators/opt_conv_tensorcore.html    |    2 +-
 docs/how_to/optimize_operators/opt_gemm.html       |   16 +-
 .../optimize_operators/sg_execution_times.html     |    8 +-
 .../sg_execution_times.html                        |   14 +-
 .../tune_conv2d_layer_cuda.html                    | 1860 ++++++++++----------
 .../tune_with_autoscheduler/tune_network_cuda.html |    4 +-
 .../tune_with_autoscheduler/tune_network_x86.html  |    4 +-
 .../tune_with_autoscheduler/tune_sparse_x86.html   |   85 +-
 .../tune_with_autotvm/sg_execution_times.html      |    4 +-
 .../how_to/tune_with_autotvm/tune_conv2d_cuda.html |  466 +----
 docs/how_to/work_with_microtvm/micro_autotune.html |   16 +-
 docs/how_to/work_with_microtvm/micro_pytorch.html  |    9 +-
 docs/how_to/work_with_microtvm/micro_train.html    |   16 +-
 .../work_with_microtvm/sg_execution_times.html     |   12 +-
 .../how_to/work_with_relay/sg_execution_times.html |   10 +-
 docs/how_to/work_with_schedules/intrin_math.html   |    2 +-
 .../work_with_schedules/sg_execution_times.html    |   16 +-
 docs/how_to/work_with_schedules/tensorize.html     |    2 +-
 docs/install/nnpack.html                           |   12 +-
 docs/objects.inv                                   |  Bin 23757 -> 24055 bytes
 docs/reference/api/python/auto_scheduler.html      |    4 +-
 .../api/typedoc/classes/bytestreamreader.html      |   12 +-
 .../api/typedoc/classes/cachedcallstack.html       |   34 +-
 docs/reference/api/typedoc/classes/dldatatype.html |   12 +-
 docs/reference/api/typedoc/classes/dldevice.html   |   10 +-
 .../reference/api/typedoc/classes/environment.html |   12 +-
 docs/reference/api/typedoc/classes/ffilibrary.html |   20 +-
 .../api/typedoc/classes/graphexecutor.html         |   16 +-
 docs/reference/api/typedoc/classes/instance.html   |   40 +-
 docs/reference/api/typedoc/classes/memory.html     |   34 +-
 docs/reference/api/typedoc/classes/module.html     |   10 +-
 docs/reference/api/typedoc/classes/ndarray.html    |   22 +-
 .../api/typedoc/classes/packedfunccell.html        |    6 +-
 docs/reference/api/typedoc/classes/rpcserver.html  |   14 +-
 docs/reference/api/typedoc/classes/scalar.html     |    6 +-
 .../api/typedoc/classes/webgpucontext.html         |   12 +-
 docs/reference/api/typedoc/enums/argtypecode.html  |   30 +-
 .../api/typedoc/enums/aynccallbackcode.html        |    4 +-
 .../api/typedoc/enums/dldatatypecode.html          |    8 +-
 .../api/typedoc/enums/rpcserverstate.html          |   12 +-
 docs/reference/api/typedoc/enums/sizeof.html       |   18 +-
 docs/reference/api/typedoc/index.html              |  112 +-
 .../api/typedoc/interfaces/disposable.html         |    2 +-
 .../api/typedoc/interfaces/functioninfo.html       |    6 +-
 .../api/typedoc/interfaces/libraryprovider.html    |    4 +-
 docs/searchindex.js                                |    2 +-
 .../vta/tutorials/autotvm/sg_execution_times.html  |    6 +-
 .../tutorials/frontend/deploy_classification.html  |    2 +-
 .../vta/tutorials/frontend/deploy_detection.html   |    2 +-
 .../vta/tutorials/frontend/sg_execution_times.html |    6 +-
 .../vta/tutorials/optimize/sg_execution_times.html |    6 +-
 docs/topic/vta/tutorials/sg_execution_times.html   |    6 +-
 docs/tutorial/auto_scheduler_matmul_x86.html       |    5 +-
 docs/tutorial/autotvm_matmul_x86.html              |   20 +-
 docs/tutorial/autotvm_relay_x86.html               |  268 +--
 docs/tutorial/cross_compilation_and_rpc.html       |    2 +-
 docs/tutorial/intro_topi.html                      |    2 +-
 docs/tutorial/sg_execution_times.html              |   24 +-
 docs/tutorial/tensor_expr_get_started.html         |   46 +-
 149 files changed, 6285 insertions(+), 3624 deletions(-)

diff --git a/docs/_downloads/2387d8448da213eb625e6b3d916327d4/deploy_model_on_adreno.py b/docs/_downloads/2387d8448da213eb625e6b3d916327d4/deploy_model_on_adreno.py
new file mode 100644
index 0000000000..d6ed1f1f99
--- /dev/null
+++ b/docs/_downloads/2387d8448da213eb625e6b3d916327d4/deploy_model_on_adreno.py
@@ -0,0 +1,351 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+"""
+.. _tutorial-deploy-model-on-adreno:
+
+Deploy the Pretrained Model on Adreno
+=======================================
+**Author**: Daniil Barinov
+
+This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno (on different precisions).
+
+For us to begin with, PyTorch must be installed.
+TorchVision is also required since we will be using it as our model zoo.
+
+A quick solution is to install it via pip:
+
+.. code-block:: bash
+
+  pip install torch
+  pip install torchvision
+
+Besides that, you should have TVM builded for Android.
+See the following instructions on how to build it.
+
+`Deploy to Adreno GPU <https://tvm.apache.org/docs/how_to/deploy/adreno.html>`_
+
+After the build section there should be two files in *build* directory «libtvm_runtime.so» and «tvm_rpc».
+Let's push them to the device and run TVM RPC Server.
+"""
+
+######################################################################
+# TVM RPC Server
+# --------------
+# To get the hash of the device use:
+#
+# .. code-block:: bash
+#
+#   adb devices
+#
+# Then to upload these two files to the device you should use:
+#
+# .. code-block:: bash
+#
+#   adb -s <device_hash> push {libtvm_runtime.so,tvm_rpc} /data/local/tmp
+#
+# At this moment you will have «libtvm_runtime.so» and «tvm_rpc» on path /data/local/tmp on your device.
+# Sometimes cmake can’t find «libc++_shared.so». Use:
+#
+# .. code-block:: bash
+#
+#   find ${ANDROID_NDK_HOME} -name libc++_shared.so
+#
+# to find it and also push it with adb on the desired device:
+#
+# .. code-block:: bash
+#
+#   adb -s <device_hash> push libc++_shared.so /data/local/tmp
+#
+# We are now ready to run the TVM RPC Server.
+# Launch rpc_tracker with following line in 1st console:
+#
+# .. code-block:: bash
+#
+#   python3 -m tvm.exec.rpc_tracker --port 9190
+#
+# Then we need to run tvm_rpc server from under the desired device in 2nd console:
+#
+# .. code-block:: bash
+#
+#   adb -s <device_hash> reverse tcp:9190 tcp:9190
+#   adb -s <device_hash> forward tcp:9090 tcp:9090
+#   adb -s <device_hash> forward tcp:9091 tcp:9091
+#   adb -s <device_hash> forward tcp:9092 tcp:9092
+#   adb -s <device_hash> forward tcp:9093 tcp:9093
+#   adb -s <device_hash> shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/tvm_rpc server --host=0.0.0.0 --port=9090 --tracker=127.0.0.1:9190 --key=android --port-end=9190
+#
+# Before proceeding to compile and infer model, specify TVM_TRACKER_HOST and TVM_TRACKER_PORT
+#
+# .. code-block:: bash
+#
+#   export TVM_TRACKER_HOST=0.0.0.0
+#   export TVM_TRACKER_PORT=9190
+#
+# check that the tracker is running and the device is available
+#
+# .. code-block:: bash
+#
+#     python -m tvm.exec.query_rpc_tracker --port 9190
+#
+# For example, if we have 1 Android device,
+# the output can be:
+#
+# .. code-block:: bash
+#
+#    Queue Status
+#    ----------------------------------
+#    key          total  free  pending
+#    ----------------------------------
+#    android      1      1     0
+#    ----------------------------------
+
+#################################################################
+# Load a test image
+# -----------------
+# As an example we would use classical cat image from ImageNet
+
+# sphinx_gallery_start_ignore
+from tvm import testing
+
+testing.utils.install_request_hook(depth=3)
+# sphinx_gallery_end_ignore
+
+from PIL import Image
+from tvm.contrib.download import download_testdata
+from matplotlib import pyplot as plt
+import numpy as np
+
+img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true"
+img_path = download_testdata(img_url, "cat.png", module="data")
+img = Image.open(img_path).resize((224, 224))
+plt.imshow(img)
+plt.show()
+
+# Preprocess the image and convert to tensor
+from torchvision import transforms
+
+my_preprocess = transforms.Compose(
+    [
+        transforms.Resize(256),
+        transforms.CenterCrop(224),
+        transforms.ToTensor(),
+        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
+    ]
+)
+img = my_preprocess(img)
+img = np.expand_dims(img, 0)
+
+#################################################################
+# Load pretrained Pytorch model
+# -----------------------------
+# Create a Relay graph from a Pytorch ResNet-18 model
+import os
+import torch
+import torchvision
+import tvm
+from tvm import te
+from tvm import relay, rpc
+from tvm.contrib import utils, ndk
+from tvm.contrib import graph_executor
+
+model_name = "resnet18"
+model = getattr(torchvision.models, model_name)(pretrained=True)
+model = model.eval()
+
+# We grab the TorchScripted model via tracing
+input_shape = [1, 3, 224, 224]
+input_data = torch.randn(input_shape)
+scripted_model = torch.jit.trace(model, input_data).eval()
+
+# Input name can be arbitrary
+input_name = "input0"
+shape_list = [(input_name, img.shape)]
+mod, params = relay.frontend.from_pytorch(scripted_model, shape_list)
+
+#################################################################
+# Precisions
+# ----------
+# Since TVM support Mixed Precision, we need to register mixed_precision_conversion:
+from tvm.relay.op import register_mixed_precision_conversion
+
+conv2d_acc = "float32"
+
+
+@register_mixed_precision_conversion("nn.conv2d", level=11)
+def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+    global conv2d_acc
+    return [
+        relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+        conv2d_acc,
+        mixed_precision_type,
+    ]
+
+
+@register_mixed_precision_conversion("nn.dense", level=11)
+def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+    global conv2d_acc
+    return [
+        relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+        conv2d_acc,
+        mixed_precision_type,
+    ]
+
+
+#################################################################
+# and also define the conversion function itself
+def convert_to_dtype(mod, dtype):
+    # downcast to float16
+    if dtype == "float16" or dtype == "float16_acc32":
+        global conv2d_acc
+        conv2d_acc = "float16" if dtype == "float16" else "float32"
+        from tvm.ir import IRModule
+
+        mod = IRModule.from_expr(mod)
+        seq = tvm.transform.Sequential(
+            [relay.transform.InferType(), relay.transform.ToMixedPrecision()]
+        )
+        with tvm.transform.PassContext(opt_level=3):
+            mod = seq(mod)
+    return mod
+
+
+#################################################################
+# Let's choose "float16_acc32" for example.
+dtype = "float16_acc32"
+mod = convert_to_dtype(mod["main"], dtype)
+dtype = "float32" if dtype == "float32" else "float16"
+
+print(mod)
+
+#################################################################
+# As you can see in the IR, the architecture now contains cast operations, which are
+# needed to convert to FP16 precision.
+# You can also use "float16" or "float32" precisions as other dtype options.
+
+#################################################################
+# Compile the model with relay
+# ----------------------------
+# Specify Adreno target before compiling to generate texture
+# leveraging kernels and get all the benefits of textures
+# Note: This generated example running on our x86 server for demonstration.
+# If running it on the Android device, we need to
+# specify its instruction set. Set :code:`local_demo` to False if you want
+# to run this tutorial with a real device.
+
+local_demo = True
+
+# by default on CPU target will execute.
+# select 'cpu', 'opencl' and 'vulkan'
+test_target = "cpu"
+
+# Change target configuration.
+# Run `adb shell cat /proc/cpuinfo` to find the arch.
+arch = "arm64"
+target = tvm.target.Target("llvm -mtriple=%s-linux-android" % arch)
+
+if local_demo:
+    target = tvm.target.Target("llvm")
+elif test_target == "opencl":
+    target = tvm.target.Target("opencl", host=target)
+elif test_target == "vulkan":
+    target = tvm.target.Target("vulkan", host=target)
+
+with tvm.transform.PassContext(opt_level=3):
+    lib = relay.build(mod, target=target, params=params)
+
+#################################################################
+# Deploy the Model Remotely by RPC
+# --------------------------------
+# Using RPC you can deploy the model from host
+# machine to the remote Adreno device
+
+rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST", "127.0.0.1")
+rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT", 9190))
+key = "android"
+
+if local_demo:
+    remote = rpc.LocalSession()
+else:
+    tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port)
+    # When running a heavy model, we should increase the `session_timeout`
+    remote = tracker.request(key, priority=0, session_timeout=60)
+
+if local_demo:
+    dev = remote.cpu(0)
+elif test_target == "opencl":
+    dev = remote.cl(0)
+elif test_target == "vulkan":
+    dev = remote.vulkan(0)
+else:
+    dev = remote.cpu(0)
+
+temp = utils.tempdir()
+dso_binary = "dev_lib_cl.so"
+dso_binary_path = temp.relpath(dso_binary)
+fcompile = ndk.create_shared if not local_demo else None
+lib.export_library(dso_binary_path, fcompile)
+remote_path = "/data/local/tmp/" + dso_binary
+remote.upload(dso_binary_path)
+rlib = remote.load_module(dso_binary)
+m = graph_executor.GraphModule(rlib["default"](dev))
+
+#################################################################
+# Run inference
+# -------------
+# We now can set inputs, infer our model and get predictions as output
+m.set_input(input_name, tvm.nd.array(img.astype("float32")))
+m.run()
+tvm_output = m.get_output(0)
+
+#################################################################
+# Get predictions and performance statistic
+# -----------------------------------------
+# This piece of code displays the top-1 and top-5 predictions, as
+# well as provides information about the model's performance
+from os.path import join, isfile
+from matplotlib import pyplot as plt
+from tvm.contrib import download
+
+# Download ImageNet categories
+categ_url = "https://github.com/uwsampl/web-data/raw/main/vta/models/"
+categ_fn = "synset.txt"
+download.download(join(categ_url, categ_fn), categ_fn)
+synset = eval(open(categ_fn).read())
+
+top_categories = np.argsort(tvm_output.asnumpy()[0])
+top5 = np.flip(top_categories, axis=0)[:5]
+
+# Report top-1 classification result
+print("Top-1 id: {}, class name: {}".format(top5[1 - 1], synset[top5[1 - 1]]))
+
+# Report top-5 classification results
+print("\nTop5 predictions: \n")
+print("\t#1:", synset[top5[1 - 1]])
+print("\t#2:", synset[top5[2 - 1]])
+print("\t#3:", synset[top5[3 - 1]])
+print("\t#4:", synset[top5[4 - 1]])
+print("\t#5:", synset[top5[5 - 1]])
+print("\t", top5)
+ImageNetClassifier = False
+for k in top_categories[-5:]:
+    if "cat" in synset[k]:
+        ImageNetClassifier = True
+assert ImageNetClassifier, "Failed ImageNet classifier validation check"
+
+print("Evaluate inference time cost...")
+print(m.benchmark(dev, number=1, repeat=10))
diff --git a/docs/_downloads/b9e7311d8c56eb6e6aca08f0be35ff03/deploy_model_on_adreno.ipynb b/docs/_downloads/b9e7311d8c56eb6e6aca08f0be35ff03/deploy_model_on_adreno.ipynb
new file mode 100644
index 0000000000..eb0a669a03
--- /dev/null
+++ b/docs/_downloads/b9e7311d8c56eb6e6aca08f0be35ff03/deploy_model_on_adreno.ipynb
@@ -0,0 +1,219 @@
+{
+  "cells": [
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "%matplotlib inline"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "\n\n# Deploy the Pretrained Model on Adreno\n**Author**: Daniil Barinov\n\nThis article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno (on different precisions).\n\nFor us to begin with, PyTorch must be installed.\nTorchVision is also required since we will be using it as our model zoo.\n\nA quick solution is to install it via pip:\n\n```bash\npip install torch\npip install torchvision\n```\nBesides that, you should have TVM builded for Android [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## TVM RPC Server\nTo get the hash of the device use:\n\n```bash\nadb devices\n```\nThen to upload these two files to the device you should use:\n\n```bash\nadb -s <device_hash> push {libtvm_runtime.so,tvm_rpc} /data/local/tmp\n```\nAt this moment you will have \u00ablibtvm_runtime.so\u00bb and \u00abtvm_rpc\u00bb on path /data/local/tmp on your device.\nSometimes cmake can\u2019t find \u00ablibc++_shared.so\u00bb. Use:\n\n```bash\nfind ${ANDROID_NDK_HOME} -name libc++_shared.so [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Load a test image\nAs an example we would use classical cat image from ImageNet\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from PIL import Image\nfrom tvm.contrib.download import download_testdata\nfrom matplotlib import pyplot as plt\nimport numpy as np\n\nimg_url = \"https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true\"\nimg_path = download_testdata(img_url, \"cat.png\", module=\"data\")\nimg = Image.open(img_path).resize((224, 224))\nplt.imshow(img)\nplt.show()\n\n# Preprocess the image and convert to tensor\nfrom torchvision import transforms\n\nmy_preprocess = transforms.Compose(\n [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Load pretrained Pytorch model\nCreate a Relay graph from a Pytorch ResNet-18 model\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "import os\nimport torch\nimport torchvision\nimport tvm\nfrom tvm import te\nfrom tvm import relay, rpc\nfrom tvm.contrib import utils, ndk\nfrom tvm.contrib import graph_executor\n\nmodel_name = \"resnet18\"\nmodel = getattr(torchvision.models, model_name)(pretrained=True)\nmodel = model.eval()\n\n# We grab the TorchScripted model via tracing\ninput_shape = [1, 3, 224, 224]\ninput_data = torch.randn(input_shape)\nscripted_model = torch.jit.trace(model, input_data).eval()\n\n# I [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Precisions\nSince TVM support Mixed Precision, we need to register mixed_precision_conversion:\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from tvm.relay.op import register_mixed_precision_conversion\n\nconv2d_acc = \"float32\"\n\n\n@register_mixed_precision_conversion(\"nn.conv2d\", level=11)\ndef conv2d_mixed_precision_rule(call_node: \"relay.Call\", mixed_precision_type: str):\n    global conv2d_acc\n    return [\n        relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,\n        conv2d_acc,\n        mixed_precision_type,\n    ]\n\n\n@register_mixed_precision_conversion(\"nn.dense\", level=11)\ndef conv2d_ [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "and also define the conversion function itself\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "def convert_to_dtype(mod, dtype):\n    # downcast to float16\n    if dtype == \"float16\" or dtype == \"float16_acc32\":\n        global conv2d_acc\n        conv2d_acc = \"float16\" if dtype == \"float16\" else \"float32\"\n        from tvm.ir import IRModule\n\n        mod = IRModule.from_expr(mod)\n        seq = tvm.transform.Sequential(\n            [relay.transform.InferType(), relay.transform.ToMixedPrecision()]\n        )\n        with tvm.transform.PassContext(opt_level=3 [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "Let's choose \"float16_acc32\" for example.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "dtype = \"float16_acc32\"\nmod = convert_to_dtype(mod[\"main\"], dtype)\ndtype = \"float32\" if dtype == \"float32\" else \"float16\"\n\nprint(mod)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "As you can see in the IR, the architecture now contains cast operations, which are\nneeded to convert to FP16 precision.\nYou can also use \"float16\" or \"float32\" precisions as other dtype options.\n\n"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Compile the model with relay\nSpecify Adreno target before compiling to generate texture\nleveraging kernels and get all the benefits of textures\nNote: This generated example running on our x86 server for demonstration.\nIf running it on the Android device, we need to\nspecify its instruction set. Set :code:`local_demo` to False if you want\nto run this tutorial with a real device.\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "local_demo = True\n\n# by default on CPU target will execute.\n# select 'cpu', 'opencl' and 'vulkan'\ntest_target = \"cpu\"\n\n# Change target configuration.\n# Run `adb shell cat /proc/cpuinfo` to find the arch.\narch = \"arm64\"\ntarget = tvm.target.Target(\"llvm -mtriple=%s-linux-android\" % arch)\n\nif local_demo:\n    target = tvm.target.Target(\"llvm\")\nelif test_target == \"opencl\":\n    target = tvm.target.Target(\"opencl\", host=target)\nelif test_target == \"vulkan\" [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Deploy the Model Remotely by RPC\nUsing RPC you can deploy the model from host\nmachine to the remote Adreno device\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "rpc_tracker_host = os.environ.get(\"TVM_TRACKER_HOST\", \"127.0.0.1\")\nrpc_tracker_port = int(os.environ.get(\"TVM_TRACKER_PORT\", 9190))\nkey = \"android\"\n\nif local_demo:\n    remote = rpc.LocalSession()\nelse:\n    tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port)\n    # When running a heavy model, we should increase the `session_timeout`\n    remote = tracker.request(key, priority=0, session_timeout=60)\n\nif local_demo:\n    dev = remote.cpu(0)\nelif test [...]
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Run inference\nWe now can set inputs, infer our model and get predictions as output\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "m.set_input(input_name, tvm.nd.array(img.astype(\"float32\")))\nm.run()\ntvm_output = m.get_output(0)"
+      ]
+    },
+    {
+      "cell_type": "markdown",
+      "metadata": {},
+      "source": [
+        "## Get predictions and performance statistic\nThis piece of code displays the top-1 and top-5 predictions, as\nwell as provides information about the model's performance\n\n"
+      ]
+    },
+    {
+      "cell_type": "code",
+      "execution_count": null,
+      "metadata": {
+        "collapsed": false
+      },
+      "outputs": [],
+      "source": [
+        "from os.path import join, isfile\nfrom matplotlib import pyplot as plt\nfrom tvm.contrib import download\n\n# Download ImageNet categories\ncateg_url = \"https://github.com/uwsampl/web-data/raw/main/vta/models/\"\ncateg_fn = \"synset.txt\"\ndownload.download(join(categ_url, categ_fn), categ_fn)\nsynset = eval(open(categ_fn).read())\n\ntop_categories = np.argsort(tvm_output.asnumpy()[0])\ntop5 = np.flip(top_categories, axis=0)[:5]\n\n# Report top-1 classification result\nprint(\" [...]
+      ]
+    }
+  ],
+  "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.7.5"
+    }
+  },
+  "nbformat": 4,
+  "nbformat_minor": 0
+}
\ No newline at end of file
diff --git a/docs/_images/sphx_glr_deploy_model_on_adreno_001.png b/docs/_images/sphx_glr_deploy_model_on_adreno_001.png
new file mode 100644
index 0000000000..a015bbcb3a
Binary files /dev/null and b/docs/_images/sphx_glr_deploy_model_on_adreno_001.png differ
diff --git a/docs/_images/sphx_glr_deploy_model_on_adreno_thumb.png b/docs/_images/sphx_glr_deploy_model_on_adreno_thumb.png
new file mode 100644
index 0000000000..2db1354f86
Binary files /dev/null and b/docs/_images/sphx_glr_deploy_model_on_adreno_thumb.png differ
diff --git a/docs/_images/sphx_glr_micro_train_001.png b/docs/_images/sphx_glr_micro_train_001.png
index 457bf652be..9ba43750df 100644
Binary files a/docs/_images/sphx_glr_micro_train_001.png and b/docs/_images/sphx_glr_micro_train_001.png differ
diff --git a/docs/_images/sphx_glr_micro_train_thumb.png b/docs/_images/sphx_glr_micro_train_thumb.png
index 13642b47f1..d025dae545 100644
Binary files a/docs/_images/sphx_glr_micro_train_thumb.png and b/docs/_images/sphx_glr_micro_train_thumb.png differ
diff --git a/docs/_sources/how_to/compile_models/from_darknet.rst.txt b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
index 463b1cfe03..3c38cee2a5 100644
--- a/docs/_sources/how_to/compile_models/from_darknet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_darknet.rst.txt
@@ -315,7 +315,7 @@ The process is no different from other examples.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  14.327 seconds)
+   **Total running time of the script:** ( 1 minutes  12.099 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_darknet.py:
diff --git a/docs/_sources/how_to/compile_models/from_keras.rst.txt b/docs/_sources/how_to/compile_models/from_keras.rst.txt
index 18c6eec9f7..83085d35dd 100644
--- a/docs/_sources/how_to/compile_models/from_keras.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_keras.rst.txt
@@ -228,7 +228,7 @@ Look up prediction top 1 index in 1000 class synset.
  .. code-block:: none
 
     Relay top-1 id: 285, class name: Egyptian cat
-
    1/1 [==============================] - ETA: 0s
    1/1 [==============================] - 1s 943ms/step
+
    1/1 [==============================] - ETA: 0s
    1/1 [==============================] - 1s 953ms/step
     Keras top-1 id: 285, class name: Egyptian cat
 
 
diff --git a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
index a8c0cec364..955eaee32e 100644
--- a/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_mxnet.rst.txt
@@ -115,7 +115,7 @@ In this section, we download a pretrained imagenet model and classify an image.
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip915a424c-07c5-4445-a296-d730d07e9e37 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+    Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip3358f288-3827-46ed-aa94-71892ca6c9e0 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
     x (1, 3, 224, 224)
 
 
diff --git a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
index e9f5bbf881..3c134dee50 100644
--- a/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_oneflow.rst.txt
@@ -116,7 +116,7 @@ Load a pretrained OneFlow model and save model
  .. code-block:: none
 
     Downloading: "https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip" to /workspace/.oneflow/flowvision_cache/resnet18.zip
-
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
     19%|#9        | 7.99M/41.5M [00:00<00:00, 43.2MB/s]
     32%|###1      | 13.2M/41.5M [00:00<00:00, 43.9MB/s]
     42%|####1     | 17.4M/41.5M [00:00<00:00, 30.5MB/s]
     58%|#####7    | 24.0M/41.5M [00:00<00:00, 36.0MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 44.0MB/s]
     92%|#########2| 38.3M/41.5M [00:00<00:00, 48.5MB/s]
    100%|##########| 41.5M/41.5M [00:00<00:00, 44.1MB/s]
+
      0%|          | 0.00/41.5M [00:00<?, ?B/s]
     16%|#6        | 6.82M/41.5M [00:00<00:00, 71.5MB/s]
     33%|###2      | 13.6M/41.5M [00:00<00:00, 56.3MB/s]
     46%|####6     | 19.2M/41.5M [00:00<00:00, 33.5MB/s]
     58%|#####7    | 24.0M/41.5M [00:00<00:00, 31.4MB/s]
     77%|#######7  | 32.0M/41.5M [00:00<00:00, 41.4MB/s]
     92%|#########2| 38.3M/41.5M [00:00<00:00, 42.8MB/s]
    100%|##########| 41.5M/41.5M [00:01<00:00, 42.3MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
index 4ffecd3423..d1d87dcecf 100644
--- a/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_pytorch.rst.txt
@@ -98,7 +98,7 @@ Load a pretrained PyTorch model
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/resnet18-f37072fd.pth" to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
-
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     18%|#7        | 7.99M/44.7M [00:00<00:00, 43.5MB/s]
     36%|###5      | 16.0M/44.7M [00:00<00:00, 47.4MB/s]
     65%|######4   | 29.0M/44.7M [00:00<00:00, 75.9MB/s]
     84%|########3 | 37.3M/44.7M [00:00<00:00, 62.7MB/s]
     99%|#########8| 44.2M/44.7M [00:00<00:00, 59.3MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 59.7MB/s]
+
      0%|          | 0.00/44.7M [00:00<?, ?B/s]
     18%|#7        | 7.99M/44.7M [00:00<00:00, 77.7MB/s]
     39%|###8      | 17.4M/44.7M [00:00<00:00, 89.5MB/s]
     58%|#####8    | 26.0M/44.7M [00:00<00:00, 87.2MB/s]
     77%|#######6  | 34.3M/44.7M [00:00<00:00, 61.0MB/s]
     92%|#########2| 41.2M/44.7M [00:00<00:00, 64.2MB/s]
    100%|##########| 44.7M/44.7M [00:00<00:00, 64.0MB/s]
 
 
 
diff --git a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
index 375aeed4ed..7e0de931be 100644
--- a/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
+++ b/docs/_sources/how_to/compile_models/from_tensorflow.rst.txt
@@ -416,7 +416,7 @@ Run the corresponding model on tensorflow
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  11.819 seconds)
+   **Total running time of the script:** ( 1 minutes  11.231 seconds)
 
 
 .. _sphx_glr_download_how_to_compile_models_from_tensorflow.py:
diff --git a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
index 989fbd827a..8ae7bc75f0 100644
--- a/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/compile_models/sg_execution_times.rst.txt
@@ -5,26 +5,26 @@
 
 Computation times
 =================
-**05:49.685** total execution time for **how_to_compile_models** files:
+**05:42.594** total execution time for **how_to_compile_models** files:
 
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:14.327 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_darknet.py` (``from_darknet.py``)       | 01:12.099 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:11.819 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tensorflow.py` (``from_tensorflow.py``) | 01:11.231 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:47.112 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_paddle.py` (``from_paddle.py``)         | 00:45.648 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:31.506 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_oneflow.py` (``from_oneflow.py``)       | 00:32.032 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:29.100 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_mxnet.py` (``from_mxnet.py``)           | 00:28.257 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:27.126 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_coreml.py` (``from_coreml.py``)         | 00:26.279 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:26.018 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_tflite.py` (``from_tflite.py``)         | 00:25.558 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:23.016 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_pytorch.py` (``from_pytorch.py``)       | 00:22.180 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:17.241 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_keras.py` (``from_keras.py``)           | 00:16.945 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.420 | 0.0 MB |
+| :ref:`sphx_glr_how_to_compile_models_from_onnx.py` (``from_onnx.py``)             | 00:02.365 | 0.0 MB |
 +-----------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/deploy/adreno.rst.txt b/docs/_sources/how_to/deploy/adreno.rst.txt
new file mode 100644
index 0000000000..af613aa5cb
--- /dev/null
+++ b/docs/_sources/how_to/deploy/adreno.rst.txt
@@ -0,0 +1,336 @@
+..  Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+..    http://www.apache.org/licenses/LICENSE-2.0
+
+..  Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+Deploy to Adreno GPU
+=======================================
+
+**Authors**: Daniil Barinov, Egor Churaev, Andrey Malyshev
+
+Introduction
+------------
+
+Adreno is a series of graphics processing unit (GPU) semiconductor
+intellectual property cores developed by Qualcomm and used in many of
+their SoCs.
+
+The Adreno GPU accelerates the rendering of complex geometries to
+deliver high-performance graphics and a rich user experience with low
+power consumption.
+
+This guide will demonstrate :ref:`the benefits of using textures with Adreno<advantages_of_the_textures>`,
+how to :ref:`build TVM with OpenCL<building_tvm_for_adreno>` (needed by Adreno devices) and TVM RPC
+enabled. It will also provide :ref:`example code<build_and_deploy_model_for_adreno>` to better understand the differences in compiling and deploying models
+for Adreno devices.
+
+.. _advantages_of_the_textures:
+
+Advantages of the Textures
+--------------------------
+
+One of the Adreno's advantages is the clever handling of textures. At
+the moment, TVM is able to benefit from this by having texture support
+for Adreno. The graph below shows the Adreno A5x architecture.
+
+|High-level overview of the Adreno A5x architecture for OpenCL|
+
+*Fig. 1 High-level overview of the Adreno A5x architecture for OpenCL*
+
+*source:* `OpenCL Optimization and Best Practices for Qualcomm Adreno GPUs <https://dl.acm.org/doi/10.1145/3204919.3204935>`_
+
+Reasons of using textures:
+
+-  Texture processor (TP) has a dedicated L1 cache, which is read-only cache and stores data
+   fetched from level-2 (L2) cache for texture operations (primary
+   reason)
+
+-  The handling of image boundaries is built-in.
+
+-  Supports numerous image format and data type combinations with
+   support for automatic format conversions
+
+Overall, with textures, it is possible to achieve a significant performance boost
+compared to OpenCL buffer based solutions.
+
+.. _building_tvm_for_adreno:
+
+Building TVM for Adreno
+-----------------------
+
+This section gives instructions on how to build the Android part of TVM
+with OpenCL and TVM RPC Server in order to deploy models on Adreno.
+
+Since the process of building TVM for Adreno is exactly the same as the
+process of building TVM for Android, please refer to these instructions:
+`TVM RPC
+Server <https://github.com/apache/tvm/tree/main/apps/cpp_rpc>`_.
+
+Since there are many required packages for Android, you can use the official Docker Image to build TVM.
+For more information refer to this guide: `Deploy the Pretrained Model on Android <https://tvm.apache.org/docs/how_to/deploy_models/deploy_model_on_android.html>`_.
+
+**Prerequisites**: Android NDK and Android Debug Bridge must
+be installed, the desired device must have OpenCL support and Android part of TVM must be built:
+
+- Read documentation about *Android NDK installation* here: https://developer.android.com/ndk
+- To get access to adb tools you can see *Android Debug Bridge installation* here: https://developer.android.com/studio/command-line/adb
+
+You can also build the android part of TVM locally. From the root
+folder of TVM:
+
+::
+
+   mkdir build_android
+   cd build_android
+   cmake .. -DUSE_OPENCL=ON -DUSE_MICRO=OFF -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON
+   make -jN tvm_runtime tvm_rpc
+
+where **N** is the number of cores available on your *CPU*.
+
+At this stage you have built TVM for Adreno.
+
+.. _build_and_deploy_model_for_adreno:
+
+Build and deploy model for Adreno
+---------------------------------
+
+In this section we will focus on target, needed to compile and deploy models for Adreno, demonstrate
+the differences in generated kernels with and without textures and, in addition, the
+possibility of choosing a different precision for model compilation will
+be considered.
+
+For the complete step-py-step process of compiling and deploying models on
+Adreno, including selection of precision, running the inference of the
+model, getting the predictions, and measuring the performance please refer to this tutorial: `How To Deploy model on Adreno <https://tvm.apache.org/docs/how_to/deploy_models/deploy_model_on_adreno.html>`_
+
+|Android deployment pipeline|
+
+*Fig.2 Deployment pipeline on Adreno devices*
+
+The figure above demonstrates a generalized pipeline for deploying and running neural network models on android devices.
+As can be seen from the figure, the compiled model has a set_input() and a run() methods,
+which *prepare the inputs* for inference and *execute the inference* on the remote device using the Graph Executor runtime module.
+
+Adreno target
+~~~~~~~~~~~~~
+
+Normally, when compiling models for Android using OpenCL, the
+corresponding target is used
+
+.. code:: python
+
+   target="opencl"
+
+Using Adreno, we want to get all the benefits of textures, so we have to
+use the following target to generate texture leveraging kernels
+
+.. code:: python
+
+   target="opencl -device=adreno"
+
+Let's write a simple model with one convolutional (conv2d) layer and take a look at generated kernels for these
+two targets
+
+.. code:: python
+
+   import tvm
+   from tvm import relay
+   import numpy as np
+
+   input_shape=(1, 56, 56, 32)
+   filter_shape=(3, 3, 32, 64)
+   filter = np.random.rand(*filter_shape)
+
+   dtype="float32"
+   input = tvm.relay.var("input", shape=input_shape, dtype=dtype)
+   weight = tvm.relay.var("weight", shape=filter_shape, dtype=dtype)
+   D = relay.nn.conv2d(input, weight, padding=(1, 1), data_layout="NHWC", kernel_layout="HWIO", out_dtype=dtype)
+
+   mod = relay.Function([input, weight], D)
+   params = {
+      "weight": tvm.nd.array(filter)
+   }
+
+Now compile our model with the classic OpenCL target and print its modules:
+
+.. code:: python
+
+   target="opencl"
+
+   with tvm.transform.PassContext(opt_level=3):
+      graph, lib, params = relay.build_module.build(mod, target, params=params)
+   print(lib.imported_modules[0].get_source())
+
+Notice that the generated convolution kernel has pointers in
+the initialization of the function. The kernels generated with the above target are buffer-based.
+
+.. code:: c
+
+   __kernel void tvmgen_default_fused_nn_conv2d_kernel0(__global float* restrict p0, __global double* restrict p1, __global float* restrict conv2d_nhwc) {
+   // body..
+
+
+Now take a look at “opencl -device=adreno” target:
+
+.. code:: python
+
+   target="opencl -device=adreno"
+
+   with tvm.transform.PassContext(opt_level=3):
+      graph, lib, params = relay.build_module.build(mod, target, params=params)
+   print(lib.imported_modules[0].get_source())
+
+The kernels generated this way is actually working with 2d arrays, leveraging textures
+
+.. code:: c
+
+   __kernel void tvmgen_default_fused_nn_conv2d_kernel0(__write_only image2d_t pad_temp_global_texture, __read_only image2d_t p0) {
+   // body..
+
+*image2d_t* is a built-in OpenCL types that represents two-dimensional image object and provides several additional functions.
+When we use *image2d_t* we read *4 elements at one time*, and it helps to utilize hardware in a more efficient way.
+
+Precisions
+~~~~~~~~~~
+The right choice of precision for a specific workload can greatly increase the efficiency of the solution,
+shifting the initial balance of precision and speed to the side that is a priority for the problem.
+
+We can choose from *float16*, *float16_acc32* (Mixed Precision), *float32* (standard).
+
+**Float16**
+
+To leverage the GPU hardware capabilities and utilize the benefits of half precision computation and memory management,
+we can convert an original model having floating points operation to a model operating with half precision.
+Choosing lower precision will positively affect the performance of the model, but it may also have a decrease in the accuracy of the model.
+To do the conversion you need to write a simple conversion function and specify the *dtype* value of "float16" before calling the function:
+
+.. code:: python
+
+   def  convert_to_dtype(mod, dtype):
+      # downcast to float16
+      if  dtype == "float16":
+         global  conv2d_acc = "float16"
+         from  tvm.ir  import  IRModule
+         mod = IRModule.from_expr(mod)
+         seq = tvm.transform.Sequential(
+            [
+                  relay.transform.InferType(),
+                  relay.transform.ToMixedPrecision()
+            ]
+         )
+         with  tvm.transform.PassContext(opt_level=3):
+            mod = seq(mod)
+      return  mod
+
+   dtype="float16"
+   mod = convert_to_dtype(mod["main"], dtype)
+
+We then can compile our model in any convinient way
+
+.. code:: python
+
+   with  tvm.transform.PassContext(opt_level=3):
+       lib = relay.build(
+           mod, target_host=target_host, target=target, params=params
+       )
+
+**float16_acc32 (Mixed Precision)**
+
+ToMixedPrecision pass traverse over the network and split network to clusters of ops dealing with float or float16 data types.
+The clusters are defined by three types of operations:
+- Operations always be converted into float16 data type
+- Operations which can be converted if they follow by converted cluster
+- Operations never be converted to the float16 data type
+This list is defined in the ToMixedPrecision implementation here
+`relay/transform/mixed_precision.py <https://github.com/apache/tvm/blob/main/python/tvm/relay/transform/mixed_precision.py#L34>`_
+and can be overridden by user
+
+In some cases, we want higher precision in accumulation than the input data.
+This is supported, for example, for conv2d and dense operations. To override accumulation type you need to register
+function with ``@register_mixed_precision_conversion`` decorator to modify parameters of ``ToMixedPrecision`` conversion
+
+.. code:: python
+
+   from  tvm.relay.op  import  register_mixed_precision_conversion
+
+   conv2d_acc = "float32"
+
+   # Pick a priority > 10 to overwrite defaults, higher priorities take precedence
+   @register_mixed_precision_conversion("nn.conv2d", level=11)
+   def  conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+       global  conv2d_acc
+       return [
+           # always do main calculation in mixed_precision_type
+           relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+           # the dtype for the accumulator
+           conv2d_acc,
+           # the output dtype for the operation (usually fp16)
+           mixed_precision_type,
+       ]
+
+   # Same for dense
+   @register_mixed_precision_conversion("nn.dense", level=11)
+   def  conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+       global  conv2d_acc
+       return [
+           relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+           conv2d_acc,
+           mixed_precision_type,
+       ]
+
+Now we need to modify the conversion function by adding some logical "forks" and ToMixedPrecision() call,
+then create a Relay graph from desired model in any convinient way and obtain **mod** (which is IR representation of the model),
+after which we can convert it to the required **dtype** and then assemble our model sequentialy
+
+.. code:: python
+
+   def  convert_to_dtype(mod, dtype):
+       # downcast to float16
+       if  dtype == "float16"  or  dtype == "float16_acc32":
+           global  conv2d_acc
+           conv2d_acc = "float16"  if  dtype == "float16"  else  "float32"
+           from  tvm.ir  import  IRModule
+           mod = IRModule.from_expr(mod)
+           seq = tvm.transform.Sequential(
+               [
+                   relay.transform.InferType(),
+                   relay.transform.ToMixedPrecision()
+               ]
+           )
+           with tvm.transform.PassContext(
+                config={"relay.ToMixedPrecision.keep_orig_output_dtype": True},
+                opt_level=3):
+            mod = seq(mod)
+       return  mod
+
+   dtype="float16_acc32"
+   mod = convert_to_dtype(mod["main"], dtype)
+   dtype = "float32"  if  dtype == "float32"  else  "float16"
+
+The ``ToMixedPrecision`` method is a pass to convert an FP32 relay graph into an FP16 version (with
+FP16 or FP32 accumulation dtypes). Doing this transformation is useful for reducing model size
+as it halves the expected size of the weights (FP16_acc16 case).
+
+From this point onwards, we can compile our model as normal
+
+.. code:: python
+
+   with  tvm.transform.PassContext(opt_level=3):
+       lib = relay.build(
+           mod, target_host=target_host, target=target, params=params
+       )
+
+.. |High-level overview of the Adreno A5x architecture for OpenCL| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/adreno_architecture.png
+.. |Android deployment pipeline| image:: https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/android_deployment_pipeline.jpg
diff --git a/docs/_sources/how_to/deploy/index.rst.txt b/docs/_sources/how_to/deploy/index.rst.txt
index 74bae0f923..ac1e2a1276 100644
--- a/docs/_sources/how_to/deploy/index.rst.txt
+++ b/docs/_sources/how_to/deploy/index.rst.txt
@@ -169,6 +169,7 @@ target device without relying on RPC. See the following resources on how to do s
 
    cpp_deploy
    android
+   adreno
    integrate
    hls
    arm_compute_lib
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
new file mode 100644
index 0000000000..6ab6e1a901
--- /dev/null
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_adreno.rst.txt
@@ -0,0 +1,758 @@
+
+.. DO NOT EDIT.
+.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
+.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
+.. "how_to/deploy_models/deploy_model_on_adreno.py"
+.. LINE NUMBERS ARE GIVEN BELOW.
+
+.. only:: html
+
+    .. note::
+        :class: sphx-glr-download-link-note
+
+        Click :ref:`here <sphx_glr_download_how_to_deploy_models_deploy_model_on_adreno.py>`
+        to download the full example code
+
+.. rst-class:: sphx-glr-example-title
+
+.. _sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py:
+
+
+.. _tutorial-deploy-model-on-adreno:
+
+Deploy the Pretrained Model on Adreno
+=======================================
+**Author**: Daniil Barinov
+
+This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno (on different precisions).
+
+For us to begin with, PyTorch must be installed.
+TorchVision is also required since we will be using it as our model zoo.
+
+A quick solution is to install it via pip:
+
+.. code-block:: bash
+
+  pip install torch
+  pip install torchvision
+
+Besides that, you should have TVM builded for Android.
+See the following instructions on how to build it.
+
+`Deploy to Adreno GPU <https://tvm.apache.org/docs/how_to/deploy/adreno.html>`_
+
+After the build section there should be two files in *build* directory «libtvm_runtime.so» and «tvm_rpc».
+Let's push them to the device and run TVM RPC Server.
+
+.. GENERATED FROM PYTHON SOURCE LINES 47-116
+
+TVM RPC Server
+--------------
+To get the hash of the device use:
+
+.. code-block:: bash
+
+  adb devices
+
+Then to upload these two files to the device you should use:
+
+.. code-block:: bash
+
+  adb -s <device_hash> push {libtvm_runtime.so,tvm_rpc} /data/local/tmp
+
+At this moment you will have «libtvm_runtime.so» and «tvm_rpc» on path /data/local/tmp on your device.
+Sometimes cmake can’t find «libc++_shared.so». Use:
+
+.. code-block:: bash
+
+  find ${ANDROID_NDK_HOME} -name libc++_shared.so
+
+to find it and also push it with adb on the desired device:
+
+.. code-block:: bash
+
+  adb -s <device_hash> push libc++_shared.so /data/local/tmp
+
+We are now ready to run the TVM RPC Server.
+Launch rpc_tracker with following line in 1st console:
+
+.. code-block:: bash
+
+  python3 -m tvm.exec.rpc_tracker --port 9190
+
+Then we need to run tvm_rpc server from under the desired device in 2nd console:
+
+.. code-block:: bash
+
+  adb -s <device_hash> reverse tcp:9190 tcp:9190
+  adb -s <device_hash> forward tcp:9090 tcp:9090
+  adb -s <device_hash> forward tcp:9091 tcp:9091
+  adb -s <device_hash> forward tcp:9092 tcp:9092
+  adb -s <device_hash> forward tcp:9093 tcp:9093
+  adb -s <device_hash> shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/tvm_rpc server --host=0.0.0.0 --port=9090 --tracker=127.0.0.1:9190 --key=android --port-end=9190
+
+Before proceeding to compile and infer model, specify TVM_TRACKER_HOST and TVM_TRACKER_PORT
+
+.. code-block:: bash
+
+  export TVM_TRACKER_HOST=0.0.0.0
+  export TVM_TRACKER_PORT=9190
+
+check that the tracker is running and the device is available
+
+.. code-block:: bash
+
+    python -m tvm.exec.query_rpc_tracker --port 9190
+
+For example, if we have 1 Android device,
+the output can be:
+
+.. code-block:: bash
+
+   Queue Status
+   ----------------------------------
+   key          total  free  pending
+   ----------------------------------
+   android      1      1     0
+   ----------------------------------
+
+.. GENERATED FROM PYTHON SOURCE LINES 118-121
+
+Load a test image
+-----------------
+As an example we would use classical cat image from ImageNet
+
+.. GENERATED FROM PYTHON SOURCE LINES 121-148
+
+.. code-block:: default
+
+
+
+    from PIL import Image
+    from tvm.contrib.download import download_testdata
+    from matplotlib import pyplot as plt
+    import numpy as np
+
+    img_url = "https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true"
+    img_path = download_testdata(img_url, "cat.png", module="data")
+    img = Image.open(img_path).resize((224, 224))
+    plt.imshow(img)
+    plt.show()
+
+    # Preprocess the image and convert to tensor
+    from torchvision import transforms
+
+    my_preprocess = transforms.Compose(
+        [
+            transforms.Resize(256),
+            transforms.CenterCrop(224),
+            transforms.ToTensor(),
+            transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
+        ]
+    )
+    img = my_preprocess(img)
+    img = np.expand_dims(img, 0)
+
+
+
+
+.. image-sg:: /how_to/deploy_models/images/sphx_glr_deploy_model_on_adreno_001.png
+   :alt: deploy model on adreno
+   :srcset: /how_to/deploy_models/images/sphx_glr_deploy_model_on_adreno_001.png
+   :class: sphx-glr-single-img
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 154-157
+
+Load pretrained Pytorch model
+-----------------------------
+Create a Relay graph from a Pytorch ResNet-18 model
+
+.. GENERATED FROM PYTHON SOURCE LINES 157-180
+
+.. code-block:: default
+
+    import os
+    import torch
+    import torchvision
+    import tvm
+    from tvm import te
+    from tvm import relay, rpc
+    from tvm.contrib import utils, ndk
+    from tvm.contrib import graph_executor
+
+    model_name = "resnet18"
+    model = getattr(torchvision.models, model_name)(pretrained=True)
+    model = model.eval()
+
+    # We grab the TorchScripted model via tracing
+    input_shape = [1, 3, 224, 224]
+    input_data = torch.randn(input_shape)
+    scripted_model = torch.jit.trace(model, input_data).eval()
+
+    # Input name can be arbitrary
+    input_name = "input0"
+    shape_list = [(input_name, img.shape)]
+    mod, params = relay.frontend.from_pytorch(scripted_model, shape_list)
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:209: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and will be removed in 0.15, please use 'weights' instead.
+      f"The parameter '{pretrained_param}' is deprecated since 0.13 and will be removed in 0.15, "
+    /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
+      warnings.warn(msg)
+    /workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
+      return LooseVersion(torch_ver) > ver
+    /venv/apache-tvm-py3.7/lib/python3.7/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
+      other = LooseVersion(other)
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 181-184
+
+Precisions
+----------
+Since TVM support Mixed Precision, we need to register mixed_precision_conversion:
+
+.. GENERATED FROM PYTHON SOURCE LINES 184-209
+
+.. code-block:: default
+
+    from tvm.relay.op import register_mixed_precision_conversion
+
+    conv2d_acc = "float32"
+
+
+    @register_mixed_precision_conversion("nn.conv2d", level=11)
+    def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+        global conv2d_acc
+        return [
+            relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+            conv2d_acc,
+            mixed_precision_type,
+        ]
+
+
+    @register_mixed_precision_conversion("nn.dense", level=11)
+    def conv2d_mixed_precision_rule(call_node: "relay.Call", mixed_precision_type: str):
+        global conv2d_acc
+        return [
+            relay.transform.mixed_precision.MIXED_PRECISION_ALWAYS,
+            conv2d_acc,
+            mixed_precision_type,
+        ]
+
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 210-211
+
+and also define the conversion function itself
+
+.. GENERATED FROM PYTHON SOURCE LINES 211-227
+
+.. code-block:: default
+
+    def convert_to_dtype(mod, dtype):
+        # downcast to float16
+        if dtype == "float16" or dtype == "float16_acc32":
+            global conv2d_acc
+            conv2d_acc = "float16" if dtype == "float16" else "float32"
+            from tvm.ir import IRModule
+
+            mod = IRModule.from_expr(mod)
+            seq = tvm.transform.Sequential(
+                [relay.transform.InferType(), relay.transform.ToMixedPrecision()]
+            )
+            with tvm.transform.PassContext(opt_level=3):
+                mod = seq(mod)
+        return mod
+
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 228-229
+
+Let's choose "float16_acc32" for example.
+
+.. GENERATED FROM PYTHON SOURCE LINES 229-235
+
+.. code-block:: default
+
+    dtype = "float16_acc32"
+    mod = convert_to_dtype(mod["main"], dtype)
+    dtype = "float32" if dtype == "float32" else "float16"
+
+    print(mod)
+
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    def @main(%input0: Tensor[(1, 3, 224, 224), float32] /* ty=Tensor[(1, 3, 224, 224), float32] */, %conv1.weight: Tensor[(64, 3, 7, 7), float32] /* ty=Tensor[(64, 3, 7, 7), float32] */, %bn1.weight: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %bn1.bias: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %bn1.running_mean: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %bn1.running_var: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %layer1.0.conv1.weight: Ten [...]
+      %0 = cast(%input0, dtype="float16") /* ty=Tensor[(1, 3, 224, 224), float16] */;
+      %1 = cast(%conv1.weight, dtype="float16") /* ty=Tensor[(64, 3, 7, 7), float16] */;
+      %2 = nn.conv2d(%0, %1, strides=[2, 2], padding=[3, 3, 3, 3], channels=64, kernel_size=[7, 7], out_dtype="float32") /* ty=Tensor[(1, 64, 112, 112), float32] */;
+      %3 = cast(%2, dtype="float16") /* ty=Tensor[(1, 64, 112, 112), float16] */;
+      %4 = cast(%bn1.weight, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %5 = cast(%bn1.bias, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %6 = cast(%bn1.running_mean, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %7 = cast(%bn1.running_var, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %8 = nn.batch_norm(%3, %4, %5, %6, %7) /* ty=(Tensor[(1, 64, 112, 112), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+      %9 = %8.0 /* ty=Tensor[(1, 64, 112, 112), float16] */;
+      %10 = nn.relu(%9) /* ty=Tensor[(1, 64, 112, 112), float16] */;
+      %11 = nn.max_pool2d(%10, pool_size=[3, 3], strides=[2, 2], padding=[1, 1, 1, 1]) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %12 = cast(%layer1.0.conv1.weight, dtype="float16") /* ty=Tensor[(64, 64, 3, 3), float16] */;
+      %13 = nn.conv2d(%11, %12, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 64, 56, 56), float32] */;
+      %14 = cast(%13, dtype="float16") /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %15 = cast(%layer1.0.bn1.weight, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %16 = cast(%layer1.0.bn1.bias, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %17 = cast(%layer1.0.bn1.running_mean, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %18 = cast(%layer1.0.bn1.running_var, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %19 = nn.batch_norm(%14, %15, %16, %17, %18) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+      %20 = %19.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %21 = nn.relu(%20) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %22 = cast(%layer1.0.conv2.weight, dtype="float16") /* ty=Tensor[(64, 64, 3, 3), float16] */;
+      %23 = nn.conv2d(%21, %22, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 64, 56, 56), float32] */;
+      %24 = cast(%23, dtype="float16") /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %25 = cast(%layer1.0.bn2.weight, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %26 = cast(%layer1.0.bn2.bias, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %27 = cast(%layer1.0.bn2.running_mean, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %28 = cast(%layer1.0.bn2.running_var, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %29 = nn.batch_norm(%24, %25, %26, %27, %28) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+      %30 = %29.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %31 = add(%30, %11) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %32 = nn.relu(%31) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %33 = cast(%layer1.1.conv1.weight, dtype="float16") /* ty=Tensor[(64, 64, 3, 3), float16] */;
+      %34 = nn.conv2d(%32, %33, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 64, 56, 56), float32] */;
+      %35 = cast(%34, dtype="float16") /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %36 = cast(%layer1.1.bn1.weight, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %37 = cast(%layer1.1.bn1.bias, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %38 = cast(%layer1.1.bn1.running_mean, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %39 = cast(%layer1.1.bn1.running_var, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %40 = nn.batch_norm(%35, %36, %37, %38, %39) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+      %41 = %40.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %42 = nn.relu(%41) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %43 = cast(%layer1.1.conv2.weight, dtype="float16") /* ty=Tensor[(64, 64, 3, 3), float16] */;
+      %44 = nn.conv2d(%42, %43, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 64, 56, 56), float32] */;
+      %45 = cast(%44, dtype="float16") /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %46 = cast(%layer1.1.bn2.weight, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %47 = cast(%layer1.1.bn2.bias, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %48 = cast(%layer1.1.bn2.running_mean, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %49 = cast(%layer1.1.bn2.running_var, dtype="float16") /* ty=Tensor[(64), float16] */;
+      %50 = nn.batch_norm(%45, %46, %47, %48, %49) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+      %51 = %50.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %52 = add(%51, %32) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %53 = nn.relu(%52) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+      %54 = cast(%layer2.0.conv1.weight, dtype="float16") /* ty=Tensor[(128, 64, 3, 3), float16] */;
+      %55 = nn.conv2d(%53, %54, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 128, 28, 28), float32] */;
+      %56 = cast(%55, dtype="float16") /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %57 = cast(%layer2.0.bn1.weight, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %58 = cast(%layer2.0.bn1.bias, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %59 = cast(%layer2.0.bn1.running_mean, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %60 = cast(%layer2.0.bn1.running_var, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %61 = nn.batch_norm(%56, %57, %58, %59, %60) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+      %62 = %61.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %63 = nn.relu(%62) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %64 = cast(%layer2.0.conv2.weight, dtype="float16") /* ty=Tensor[(128, 128, 3, 3), float16] */;
+      %65 = nn.conv2d(%63, %64, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 128, 28, 28), float32] */;
+      %66 = cast(%65, dtype="float16") /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %67 = cast(%layer2.0.bn2.weight, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %68 = cast(%layer2.0.bn2.bias, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %69 = cast(%layer2.0.bn2.running_mean, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %70 = cast(%layer2.0.bn2.running_var, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %71 = nn.batch_norm(%66, %67, %68, %69, %70) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+      %72 = cast(%layer2.0.downsample.0.weight, dtype="float16") /* ty=Tensor[(128, 64, 1, 1), float16] */;
+      %73 = nn.conv2d(%53, %72, strides=[2, 2], padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1], out_dtype="float32") /* ty=Tensor[(1, 128, 28, 28), float32] */;
+      %74 = cast(%73, dtype="float16") /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %75 = cast(%layer2.0.downsample.1.weight, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %76 = cast(%layer2.0.downsample.1.bias, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %77 = cast(%layer2.0.downsample.1.running_mean, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %78 = cast(%layer2.0.downsample.1.running_var, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %79 = nn.batch_norm(%74, %75, %76, %77, %78) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+      %80 = %71.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %81 = %79.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %82 = add(%80, %81) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %83 = nn.relu(%82) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %84 = cast(%layer2.1.conv1.weight, dtype="float16") /* ty=Tensor[(128, 128, 3, 3), float16] */;
+      %85 = nn.conv2d(%83, %84, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 128, 28, 28), float32] */;
+      %86 = cast(%85, dtype="float16") /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %87 = cast(%layer2.1.bn1.weight, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %88 = cast(%layer2.1.bn1.bias, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %89 = cast(%layer2.1.bn1.running_mean, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %90 = cast(%layer2.1.bn1.running_var, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %91 = nn.batch_norm(%86, %87, %88, %89, %90) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+      %92 = %91.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %93 = nn.relu(%92) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %94 = cast(%layer2.1.conv2.weight, dtype="float16") /* ty=Tensor[(128, 128, 3, 3), float16] */;
+      %95 = nn.conv2d(%93, %94, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 128, 28, 28), float32] */;
+      %96 = cast(%95, dtype="float16") /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %97 = cast(%layer2.1.bn2.weight, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %98 = cast(%layer2.1.bn2.bias, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %99 = cast(%layer2.1.bn2.running_mean, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %100 = cast(%layer2.1.bn2.running_var, dtype="float16") /* ty=Tensor[(128), float16] */;
+      %101 = nn.batch_norm(%96, %97, %98, %99, %100) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+      %102 = %101.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %103 = add(%102, %83) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %104 = nn.relu(%103) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+      %105 = cast(%layer3.0.conv1.weight, dtype="float16") /* ty=Tensor[(256, 128, 3, 3), float16] */;
+      %106 = nn.conv2d(%104, %105, strides=[2, 2], padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 256, 14, 14), float32] */;
+      %107 = cast(%106, dtype="float16") /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %108 = cast(%layer3.0.bn1.weight, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %109 = cast(%layer3.0.bn1.bias, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %110 = cast(%layer3.0.bn1.running_mean, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %111 = cast(%layer3.0.bn1.running_var, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %112 = nn.batch_norm(%107, %108, %109, %110, %111) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+      %113 = %112.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %114 = nn.relu(%113) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %115 = cast(%layer3.0.conv2.weight, dtype="float16") /* ty=Tensor[(256, 256, 3, 3), float16] */;
+      %116 = nn.conv2d(%114, %115, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 256, 14, 14), float32] */;
+      %117 = cast(%116, dtype="float16") /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %118 = cast(%layer3.0.bn2.weight, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %119 = cast(%layer3.0.bn2.bias, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %120 = cast(%layer3.0.bn2.running_mean, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %121 = cast(%layer3.0.bn2.running_var, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %122 = nn.batch_norm(%117, %118, %119, %120, %121) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+      %123 = cast(%layer3.0.downsample.0.weight, dtype="float16") /* ty=Tensor[(256, 128, 1, 1), float16] */;
+      %124 = nn.conv2d(%104, %123, strides=[2, 2], padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1], out_dtype="float32") /* ty=Tensor[(1, 256, 14, 14), float32] */;
+      %125 = cast(%124, dtype="float16") /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %126 = cast(%layer3.0.downsample.1.weight, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %127 = cast(%layer3.0.downsample.1.bias, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %128 = cast(%layer3.0.downsample.1.running_mean, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %129 = cast(%layer3.0.downsample.1.running_var, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %130 = nn.batch_norm(%125, %126, %127, %128, %129) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+      %131 = %122.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %132 = %130.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %133 = add(%131, %132) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %134 = nn.relu(%133) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %135 = cast(%layer3.1.conv1.weight, dtype="float16") /* ty=Tensor[(256, 256, 3, 3), float16] */;
+      %136 = nn.conv2d(%134, %135, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 256, 14, 14), float32] */;
+      %137 = cast(%136, dtype="float16") /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %138 = cast(%layer3.1.bn1.weight, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %139 = cast(%layer3.1.bn1.bias, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %140 = cast(%layer3.1.bn1.running_mean, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %141 = cast(%layer3.1.bn1.running_var, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %142 = nn.batch_norm(%137, %138, %139, %140, %141) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+      %143 = %142.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %144 = nn.relu(%143) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %145 = cast(%layer3.1.conv2.weight, dtype="float16") /* ty=Tensor[(256, 256, 3, 3), float16] */;
+      %146 = nn.conv2d(%144, %145, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 256, 14, 14), float32] */;
+      %147 = cast(%146, dtype="float16") /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %148 = cast(%layer3.1.bn2.weight, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %149 = cast(%layer3.1.bn2.bias, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %150 = cast(%layer3.1.bn2.running_mean, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %151 = cast(%layer3.1.bn2.running_var, dtype="float16") /* ty=Tensor[(256), float16] */;
+      %152 = nn.batch_norm(%147, %148, %149, %150, %151) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+      %153 = %152.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %154 = add(%153, %134) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %155 = nn.relu(%154) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+      %156 = cast(%layer4.0.conv1.weight, dtype="float16") /* ty=Tensor[(512, 256, 3, 3), float16] */;
+      %157 = nn.conv2d(%155, %156, strides=[2, 2], padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %158 = cast(%157, dtype="float16") /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %159 = cast(%layer4.0.bn1.weight, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %160 = cast(%layer4.0.bn1.bias, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %161 = cast(%layer4.0.bn1.running_mean, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %162 = cast(%layer4.0.bn1.running_var, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %163 = nn.batch_norm(%158, %159, %160, %161, %162) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+      %164 = %163.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %165 = nn.relu(%164) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %166 = cast(%layer4.0.conv2.weight, dtype="float16") /* ty=Tensor[(512, 512, 3, 3), float16] */;
+      %167 = nn.conv2d(%165, %166, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %168 = cast(%167, dtype="float16") /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %169 = cast(%layer4.0.bn2.weight, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %170 = cast(%layer4.0.bn2.bias, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %171 = cast(%layer4.0.bn2.running_mean, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %172 = cast(%layer4.0.bn2.running_var, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %173 = nn.batch_norm(%168, %169, %170, %171, %172) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+      %174 = cast(%layer4.0.downsample.0.weight, dtype="float16") /* ty=Tensor[(512, 256, 1, 1), float16] */;
+      %175 = nn.conv2d(%155, %174, strides=[2, 2], padding=[0, 0, 0, 0], channels=512, kernel_size=[1, 1], out_dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %176 = cast(%175, dtype="float16") /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %177 = cast(%layer4.0.downsample.1.weight, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %178 = cast(%layer4.0.downsample.1.bias, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %179 = cast(%layer4.0.downsample.1.running_mean, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %180 = cast(%layer4.0.downsample.1.running_var, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %181 = nn.batch_norm(%176, %177, %178, %179, %180) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+      %182 = %173.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %183 = %181.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %184 = add(%182, %183) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %185 = nn.relu(%184) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %186 = cast(%layer4.1.conv1.weight, dtype="float16") /* ty=Tensor[(512, 512, 3, 3), float16] */;
+      %187 = nn.conv2d(%185, %186, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %188 = cast(%187, dtype="float16") /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %189 = cast(%layer4.1.bn1.weight, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %190 = cast(%layer4.1.bn1.bias, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %191 = cast(%layer4.1.bn1.running_mean, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %192 = cast(%layer4.1.bn1.running_var, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %193 = nn.batch_norm(%188, %189, %190, %191, %192) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+      %194 = %193.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %195 = nn.relu(%194) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %196 = cast(%layer4.1.conv2.weight, dtype="float16") /* ty=Tensor[(512, 512, 3, 3), float16] */;
+      %197 = nn.conv2d(%195, %196, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %198 = cast(%197, dtype="float16") /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %199 = cast(%layer4.1.bn2.weight, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %200 = cast(%layer4.1.bn2.bias, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %201 = cast(%layer4.1.bn2.running_mean, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %202 = cast(%layer4.1.bn2.running_var, dtype="float16") /* ty=Tensor[(512), float16] */;
+      %203 = nn.batch_norm(%198, %199, %200, %201, %202) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+      %204 = %203.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %205 = add(%204, %185) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %206 = nn.relu(%205) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+      %207 = cast(%206, dtype="float32") /* ty=Tensor[(1, 512, 7, 7), float32] */;
+      %208 = nn.adaptive_avg_pool2d(%207, output_size=[1, 1]) /* ty=Tensor[(1, 512, 1, 1), float32] */;
+      %209 = reshape(%208, newshape=[0, -1, 1, 1]) /* ty=Tensor[(1, 512, 1, 1), float32] */;
+      %210 = squeeze(%209, axis=[2, 3]) /* ty=Tensor[(1, 512), float32] */;
+      %211 = cast(%210, dtype="float16") /* ty=Tensor[(1, 512), float16] */;
+      %212 = cast(%fc.weight, dtype="float16") /* ty=Tensor[(1000, 512), float16] */;
+      %213 = nn.dense(%211, %212, units=None, out_dtype="float32") /* ty=Tensor[(1, 1000), float32] */;
+      %214 = cast(%213, dtype="float16") /* ty=Tensor[(1, 1000), float16] */;
+      %215 = cast(%fc.bias, dtype="float16") /* ty=Tensor[(1000), float16] */;
+      nn.bias_add(%214, %215, axis=-1) /* ty=Tensor[(1, 1000), float16] */
+    }
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 236-239
+
+As you can see in the IR, the architecture now contains cast operations, which are
+needed to convert to FP16 precision.
+You can also use "float16" or "float32" precisions as other dtype options.
+
+.. GENERATED FROM PYTHON SOURCE LINES 241-249
+
+Compile the model with relay
+----------------------------
+Specify Adreno target before compiling to generate texture
+leveraging kernels and get all the benefits of textures
+Note: This generated example running on our x86 server for demonstration.
+If running it on the Android device, we need to
+specify its instruction set. Set :code:`local_demo` to False if you want
+to run this tutorial with a real device.
+
+.. GENERATED FROM PYTHON SOURCE LINES 249-271
+
+.. code-block:: default
+
+
+    local_demo = True
+
+    # by default on CPU target will execute.
+    # select 'cpu', 'opencl' and 'vulkan'
+    test_target = "cpu"
+
+    # Change target configuration.
+    # Run `adb shell cat /proc/cpuinfo` to find the arch.
+    arch = "arm64"
+    target = tvm.target.Target("llvm -mtriple=%s-linux-android" % arch)
+
+    if local_demo:
+        target = tvm.target.Target("llvm")
+    elif test_target == "opencl":
+        target = tvm.target.Target("opencl", host=target)
+    elif test_target == "vulkan":
+        target = tvm.target.Target("vulkan", host=target)
+
+    with tvm.transform.PassContext(opt_level=3):
+        lib = relay.build(mod, target=target, params=params)
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 272-276
+
+Deploy the Model Remotely by RPC
+--------------------------------
+Using RPC you can deploy the model from host
+machine to the remote Adreno device
+
+.. GENERATED FROM PYTHON SOURCE LINES 276-307
+
+.. code-block:: default
+
+
+    rpc_tracker_host = os.environ.get("TVM_TRACKER_HOST", "127.0.0.1")
+    rpc_tracker_port = int(os.environ.get("TVM_TRACKER_PORT", 9190))
+    key = "android"
+
+    if local_demo:
+        remote = rpc.LocalSession()
+    else:
+        tracker = rpc.connect_tracker(rpc_tracker_host, rpc_tracker_port)
+        # When running a heavy model, we should increase the `session_timeout`
+        remote = tracker.request(key, priority=0, session_timeout=60)
+
+    if local_demo:
+        dev = remote.cpu(0)
+    elif test_target == "opencl":
+        dev = remote.cl(0)
+    elif test_target == "vulkan":
+        dev = remote.vulkan(0)
+    else:
+        dev = remote.cpu(0)
+
+    temp = utils.tempdir()
+    dso_binary = "dev_lib_cl.so"
+    dso_binary_path = temp.relpath(dso_binary)
+    fcompile = ndk.create_shared if not local_demo else None
+    lib.export_library(dso_binary_path, fcompile)
+    remote_path = "/data/local/tmp/" + dso_binary
+    remote.upload(dso_binary_path)
+    rlib = remote.load_module(dso_binary)
+    m = graph_executor.GraphModule(rlib["default"](dev))
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 308-311
+
+Run inference
+-------------
+We now can set inputs, infer our model and get predictions as output
+
+.. GENERATED FROM PYTHON SOURCE LINES 311-315
+
+.. code-block:: default
+
+    m.set_input(input_name, tvm.nd.array(img.astype("float32")))
+    m.run()
+    tvm_output = m.get_output(0)
+
+
+
+
+
+
+
+
+.. GENERATED FROM PYTHON SOURCE LINES 316-320
+
+Get predictions and performance statistic
+-----------------------------------------
+This piece of code displays the top-1 and top-5 predictions, as
+well as provides information about the model's performance
+
+.. GENERATED FROM PYTHON SOURCE LINES 320-352
+
+.. code-block:: default
+
+    from os.path import join, isfile
+    from matplotlib import pyplot as plt
+    from tvm.contrib import download
+
+    # Download ImageNet categories
+    categ_url = "https://github.com/uwsampl/web-data/raw/main/vta/models/"
+    categ_fn = "synset.txt"
+    download.download(join(categ_url, categ_fn), categ_fn)
+    synset = eval(open(categ_fn).read())
+
+    top_categories = np.argsort(tvm_output.asnumpy()[0])
+    top5 = np.flip(top_categories, axis=0)[:5]
+
+    # Report top-1 classification result
+    print("Top-1 id: {}, class name: {}".format(top5[1 - 1], synset[top5[1 - 1]]))
+
+    # Report top-5 classification results
+    print("\nTop5 predictions: \n")
+    print("\t#1:", synset[top5[1 - 1]])
+    print("\t#2:", synset[top5[2 - 1]])
+    print("\t#3:", synset[top5[3 - 1]])
+    print("\t#4:", synset[top5[4 - 1]])
+    print("\t#5:", synset[top5[5 - 1]])
+    print("\t", top5)
+    ImageNetClassifier = False
+    for k in top_categories[-5:]:
+        if "cat" in synset[k]:
+            ImageNetClassifier = True
+    assert ImageNetClassifier, "Failed ImageNet classifier validation check"
+
+    print("Evaluate inference time cost...")
+    print(m.benchmark(dev, number=1, repeat=10))
+
+
+
+
+.. rst-class:: sphx-glr-script-out
+
+ .. code-block:: none
+
+    /workspace/python/tvm/runtime/ndarray.py:200: DeprecationWarning: NDArray.asnumpy() will be deprecated in TVM v0.8 release. Please use NDArray.numpy() instead.
+      DeprecationWarning,
+    Top-1 id: 281, class name: tabby, tabby cat
+
+    Top5 predictions: 
+
+            #1: tabby, tabby cat
+            #2: tiger cat
+            #3: lynx, catamount
+            #4: red fox, Vulpes vulpes
+            #5: Egyptian cat
+             [281 282 287 277 285]
+    Evaluate inference time cost...
+    Execution time summary:
+     mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
+     3295.0754    3294.5345    3300.7153    3291.3510      2.8450   
+               
+
+
+
+
+
+.. rst-class:: sphx-glr-timing
+
+   **Total running time of the script:** ( 1 minutes  0.250 seconds)
+
+
+.. _sphx_glr_download_how_to_deploy_models_deploy_model_on_adreno.py:
+
+.. only:: html
+
+  .. container:: sphx-glr-footer sphx-glr-footer-example
+
+
+    .. container:: sphx-glr-download sphx-glr-download-python
+
+      :download:`Download Python source code: deploy_model_on_adreno.py <deploy_model_on_adreno.py>`
+
+    .. container:: sphx-glr-download sphx-glr-download-jupyter
+
+      :download:`Download Jupyter notebook: deploy_model_on_adreno.ipynb <deploy_model_on_adreno.ipynb>`
+
+
+.. only:: html
+
+ .. rst-class:: sphx-glr-signature
+
+    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_
diff --git a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
index 9c45fb7359..58aa3c7f47 100644
--- a/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_model_on_android.rst.txt
@@ -433,7 +433,7 @@ Execute on TVM
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      16.0793      16.0802      16.2016      16.0091       0.0585   
+      16.0159      15.9399      16.4435      15.6553       0.3055   
                
 
 
diff --git a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
index 93b17e23f9..645199f2c3 100644
--- a/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_object_detection_pytorch.rst.txt
@@ -127,7 +127,7 @@ Load pre-trained maskrcnn from torchvision and do tracing
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=MaskRCNN_ResNet50_FPN_Weights.COCO_V1`. You can also use `weights=MaskRCNN_ResNet50_FPN_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth" to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
-
      0%|          | 0.00/170M [00:00<?, ?B/s]
      5%|4         | 7.99M/170M [00:00<00:02, 67.2MB/s]
      9%|9         | 16.0M/170M [00:00<00:02, 65.4MB/s]
     14%|#4        | 24.0M/170M [00:00<00:02, 56.2MB/s]
     19%|#8        | 32.0M/170M [00:00<00:02, 54.3MB/s]
     24%|##3       | 40.0M/170M [00:00<00:02, 53.4MB/s]
     28%|##8       | 48.0M/170M [00:00<00:02, 55.6MB/s]
     33%|###2      | 56.0M/170M [00:01<00:02, 59.0MB/s]
     38%|###7      | 64.0M/170M [00:01<00:02, 51.6MB/s]
     42%|####2     | 72.0M/170M [00:01<00:01, 55.6MB/s]
     47%|####7     | 80.0M/170M [00:01<00:01, 55.2MB/s]
     52%|#####1    | 88.0M/170M [00:01<00:01, 55.8MB/s]
     57%|#####6    | 96.0M/170M [00:01<00:01, 56.5MB/s]
     61%|######1   | 104M/170M [00:01<00:01, 57.6MB/s] 
     66%|######5   | 112M/170M [00:02<00:00, 61.5MB/s]
     71%|#######   | 120M/170M [00:02<00:00, 63.8MB/s]
     75%|#######5  | 128M/170M [00:02<00:00, 58.5MB/s]
     80%|########  | 136M/170M [00:02<00:00, 61.3MB/s]
 
     85%|########4 | 144M/170M [00:02<00:00, 56.1MB/s]
     89%|########9 | 152M/170M [00:02<00:00, 57.5MB/s]
     94%|#########4| 160M/170M [00:02<00:00, 52.5MB/s]
     98%|#########8| 167M/170M [00:03<00:00, 57.2MB/s]
    100%|##########| 170M/170M [00:03<00:00, 56.7MB/s]
+
      0%|          | 0.00/170M [00:00<?, ?B/s]
      5%|4         | 7.99M/170M [00:00<00:03, 52.9MB/s]
      9%|9         | 16.0M/170M [00:00<00:03, 47.9MB/s]
     14%|#4        | 24.0M/170M [00:00<00:02, 59.4MB/s]
     18%|#7        | 30.3M/170M [00:00<00:03, 39.0MB/s]
     21%|##        | 34.9M/170M [00:00<00:03, 40.2MB/s]
     24%|##3       | 40.0M/170M [00:00<00:03, 42.5MB/s]
     26%|##6       | 44.5M/170M [00:01<00:03, 40.4MB/s]
     29%|##9       | 49.8M/170M [00:01<00:02, 44.0MB/s]
     33%|###2      | 56.0M/170M [00:01<00:02, 48.3MB/s]
     37%|###6      | 62.3M/170M [00:01<00:02, 43.4MB/s]
     39%|###9      | 66.7M/170M [00:01<00:02, 40.9MB/s]
     46%|####6     | 78.3M/170M [00:01<00:01, 48.1MB/s]
     49%|####8     | 82.9M/170M [00:01<00:01, 46.0MB/s]
     51%|#####1    | 87.2M/170M [00:02<00:01, 43.4MB/s]
     56%|#####5    | 94.3M/170M [00:02<00:01, 50.4MB/s]
     58%|#####8    | 99.2M/170M [00:02<00:01, 50.7MB/s]
     61%|######1   | 104M/170M [00:02<00:01, 47.4MB/s
 ] 
     66%|######5   | 112M/170M [00:02<00:01, 55.1MB/s]
     71%|#######   | 120M/170M [00:02<00:00, 60.5MB/s]
     76%|#######5  | 128M/170M [00:02<00:00, 67.6MB/s]
     80%|########  | 136M/170M [00:02<00:00, 61.8MB/s]
     85%|########4 | 144M/170M [00:02<00:00, 65.1MB/s]
     89%|########8 | 150M/170M [00:03<00:00, 50.9MB/s]
     92%|#########1| 156M/170M [00:03<00:00, 52.1MB/s]
     97%|#########6| 165M/170M [00:03<00:00, 61.9MB/s]
    100%|##########| 170M/170M [00:03<00:00, 50.3MB/s]
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torch/nn/functional.py:3897: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
       for i in range(dim)
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/detection/anchor_utils.py:124: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor').
@@ -296,7 +296,7 @@ Get boxes with score larger than 0.9
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  21.046 seconds)
+   **Total running time of the script:** ( 3 minutes  14.416 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_object_detection_pytorch.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
index fbeb67db51..e8126cc2f5 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized.rst.txt
@@ -236,7 +236,7 @@ training. Other models require a full post training calibration.
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=MobileNet_V2_Weights.IMAGENET1K_V1`. You can also use `weights=MobileNet_V2_Weights.DEFAULT` to get the most up-to-date weights.
       warnings.warn(msg)
     Downloading: "https://download.pytorch.org/models/mobilenet_v2-b0353104.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
-
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     59%|#####8    | 7.99M/13.6M [00:00<00:00, 57.0MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 72.1MB/s]
+
      0%|          | 0.00/13.6M [00:00<?, ?B/s]
     59%|#####8    | 7.99M/13.6M [00:00<00:00, 40.5MB/s]
     90%|########9 | 12.2M/13.6M [00:00<00:00, 38.6MB/s]
    100%|##########| 13.6M/13.6M [00:00<00:00, 42.7MB/s]
 
 
 
@@ -418,7 +418,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      90.4192      90.2574      94.8575      90.0959       0.5072   
+      89.0746      88.9311      93.4186      88.7581       0.5219   
                
 
 
@@ -467,7 +467,7 @@ TODO
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  7.396 seconds)
+   **Total running time of the script:** ( 1 minutes  5.679 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
index e896c64c97..050703e99c 100644
--- a/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_prequantized_tflite.rst.txt
@@ -432,7 +432,7 @@ Here we give an example of how to measure performance of TVM compiled models.
 
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      120.5437     120.3832     127.6691     119.8078      0.8626   
+      118.7973     118.7055     126.3001     118.0374      0.7966   
                
 
 
@@ -469,7 +469,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:** ( 2 minutes  21.612 seconds)
+   **Total running time of the script:** ( 2 minutes  20.899 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_prequantized_tflite.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
index ea4d2da5e9..e93d2ef13d 100644
--- a/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_quantized.rst.txt
@@ -253,7 +253,7 @@ We create a Relay VM to build and execute the model.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  35.178 seconds)
+   **Total running time of the script:** ( 1 minutes  37.474 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_quantized.py:
diff --git a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
index e096312d99..4c9a280ca6 100644
--- a/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
+++ b/docs/_sources/how_to/deploy_models/deploy_ssd_gluoncv.rst.txt
@@ -166,7 +166,7 @@ Convert and compile model for CPU.
             data: None
       input_sym_arg_type = in_param.infer_type()[0]
     Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
-
      0%|          | 0/132723 [00:00<?, ?KB/s]
      4%|4         | 5620/132723 [00:00<00:02, 56196.44KB/s]
     10%|#         | 13694/132723 [00:00<00:01, 70631.61KB/s]
     17%|#6        | 22351/132723 [00:00<00:01, 77906.36KB/s]
     23%|##3       | 30964/132723 [00:00<00:01, 81150.42KB/s]
     30%|##9       | 39513/132723 [00:00<00:01, 82709.08KB/s]
     36%|###6      | 47958/132723 [00:00<00:01, 83299.55KB/s]
     43%|####2     | 56498/132723 [00:00<00:00, 83983.41KB/s]
     49%|####8     | 65032/132723 [00:00<00:00, 84412.46KB/s]
     55%|#####5    | 73593/132723 [00:00<00:00, 84784.17KB/s]
     62%|######1   | 82093/132723 [00:01<00:00, 84849.20KB/s]
     68%|######8   | 90578/132723 [00:01<00:00, 84655.77KB/s]
     75%|#######4  | 99099/132723 [00:01<00:00, 84821.23KB/s]
     81%|########1 | 107601/132723 [00:01<00:00, 84880.05KB/s]
     87%|########7 | 116090/132723 [00:01<00:00, 74213.08KB/s]
     94%|#########3| 124625/132723 [00:01<00:00, 77259.23KB/s]
    100%|########
 ##| 132723/132723 [00:01<00:00, 80714.52KB/s]
+
      0%|          | 0/132723 [00:00<?, ?KB/s]
      2%|1         | 2074/132723 [00:00<00:06, 20737.25KB/s]
      5%|4         | 6183/132723 [00:00<00:03, 32638.47KB/s]
     10%|9         | 12887/132723 [00:00<00:02, 48324.96KB/s]
     16%|#5        | 20729/132723 [00:00<00:01, 60193.11KB/s]
     22%|##1       | 28543/132723 [00:00<00:01, 66658.04KB/s]
     28%|##7       | 36606/132723 [00:00<00:01, 71403.88KB/s]
     33%|###3      | 44285/132723 [00:00<00:01, 73162.31KB/s]
     39%|###9      | 52203/132723 [00:00<00:01, 75076.30KB/s]
     45%|####5     | 60059/132723 [00:00<00:00, 76136.44KB/s]
     51%|#####     | 67673/132723 [00:01<00:00, 75690.42KB/s]
     57%|#####6    | 75619/132723 [00:01<00:00, 76832.65KB/s]
     63%|######2   | 83304/132723 [00:01<00:00, 72715.82KB/s]
     68%|######8   | 90762/132723 [00:01<00:00, 73254.36KB/s]
     74%|#######3  | 98121/132723 [00:01<00:00, 70837.68KB/s]
     79%|#######9  | 105241/132723 [00:01<00:00, 57473.94KB/s]
     85%|########5 |
  113109/132723 [00:01<00:00, 62777.10KB/s]
     91%|######### | 120589/132723 [00:01<00:00, 65939.34KB/s]
     97%|#########6| 128155/132723 [00:01<00:00, 68481.63KB/s]
    100%|##########| 132723/132723 [00:01<00:00, 67420.61KB/s]
 
 
 
@@ -242,7 +242,7 @@ Display result
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 3 minutes  6.596 seconds)
+   **Total running time of the script:** ( 3 minutes  0.281 seconds)
 
 
 .. _sphx_glr_download_how_to_deploy_models_deploy_ssd_gluoncv.py:
diff --git a/docs/_sources/how_to/deploy_models/index.rst.txt b/docs/_sources/how_to/deploy_models/index.rst.txt
index e99ad32d61..f9d0ee8bd2 100644
--- a/docs/_sources/how_to/deploy_models/index.rst.txt
+++ b/docs/_sources/how_to/deploy_models/index.rst.txt
@@ -14,6 +14,23 @@ backends.
     <div class="sphx-glr-thumbnails">
 
 
+.. raw:: html
+
+    <div class="sphx-glr-thumbcontainer" tooltip="This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno ...">
+
+.. only:: html
+
+  .. image:: /how_to/deploy_models/images/thumb/sphx_glr_deploy_model_on_adreno_thumb.png
+    :alt: Deploy the Pretrained Model on Adreno
+
+  :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py`
+
+.. raw:: html
+
+      <div class="sphx-glr-thumbnail-title">Deploy the Pretrained Model on Adreno</div>
+    </div>
+
+
 .. raw:: html
 
     <div class="sphx-glr-thumbcontainer" tooltip="This is an example of using Relay to compile a keras model and deploy it on Android device.">
@@ -175,6 +192,7 @@ backends.
 .. toctree::
    :hidden:
 
+   /how_to/deploy_models/deploy_model_on_adreno
    /how_to/deploy_models/deploy_model_on_android
    /how_to/deploy_models/deploy_model_on_nano
    /how_to/deploy_models/deploy_model_on_rasp
diff --git a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
index a5100d4e1f..4908a0aa5a 100644
--- a/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/deploy_models/sg_execution_times.rst.txt
@@ -5,24 +5,26 @@
 
 Computation times
 =================
-**12:58.886** total execution time for **how_to_deploy_models** files:
+**13:43.499** total execution time for **how_to_deploy_models** files:
 
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:21.046 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_object_detection_pytorch.py` (``deploy_object_detection_pytorch.py``) | 03:14.416 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)                           | 03:06.596 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_ssd_gluoncv.py` (``deploy_ssd_gluoncv.py``)                           | 03:00.281 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 02:21.612 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized_tflite.py` (``deploy_prequantized_tflite.py``)           | 02:20.899 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 01:35.178 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_quantized.py` (``deploy_quantized.py``)                               | 01:37.474 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:07.396 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_prequantized.py` (``deploy_prequantized.py``)                         | 01:05.679 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:36.879 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_adreno.py` (``deploy_model_on_adreno.py``)                   | 01:00.250 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:25.301 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_android.py` (``deploy_model_on_android.py``)                 | 00:35.230 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:24.872 | 0.0 MB |
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_nano.py` (``deploy_model_on_nano.py``)                       | 00:24.894 | 0.0 MB |
++------------------------------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_how_to_deploy_models_deploy_model_on_rasp.py` (``deploy_model_on_rasp.py``)                       | 00:24.369 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_deploy_models_deploy_sparse.py` (``deploy_sparse.py``)                                     | 00:00.007 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
index 374f3ae332..ae53e61e0f 100644
--- a/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/bring_your_own_datatypes.rst.txt
@@ -472,7 +472,7 @@ First let us define two helper functions to get the mobilenet model and a cat im
 
  .. code-block:: none
 
-    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipd86fe21c-795b-44cf-8ba5-bd551c041788 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+    Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipf1ccbbf4-6c25-44a5-8145-44e2067663df from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 
 
 
diff --git a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
index bc9399098b..abaa6fc42e 100644
--- a/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:48.423** total execution time for **how_to_extend_tvm** files:
+**00:47.729** total execution time for **how_to_extend_tvm** files:
 
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:44.500 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_bring_your_own_datatypes.py` (``bring_your_own_datatypes.py``) | 00:44.220 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.865 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_instrument.py` (``use_pass_instrument.py``)           | 00:02.453 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:01.048 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_use_pass_infra.py` (``use_pass_infra.py``)                     | 00:01.050 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.009 | 0.0 MB |
+| :ref:`sphx_glr_how_to_extend_tvm_low_level_custom_pass.py` (``low_level_custom_pass.py``)       | 00:00.007 | 0.0 MB |
 +-------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
index bff7d2c5b5..55ecdde32f 100644
--- a/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
+++ b/docs/_sources/how_to/extend_tvm/use_pass_instrument.rst.txt
@@ -216,10 +216,10 @@ profile the execution time of each passes.
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 7402us [7402us] (46.66%; 46.66%)
-    FoldScaleAxis: 8463us [7us] (53.34%; 53.34%)
-            FoldConstant: 8456us [1732us] (53.30%; 99.92%)
-                    InferType: 6724us [6724us] (42.38%; 79.52%)
+    InferType: 7670us [7670us] (48.14%; 48.14%)
+    FoldScaleAxis: 8262us [7us] (51.86%; 51.86%)
+            FoldConstant: 8255us [1681us] (51.82%; 99.92%)
+                    InferType: 6574us [6574us] (41.26%; 79.64%)
 
 
 
@@ -258,10 +258,10 @@ Refer to following sections and :py:func:`tvm.instrument.pass_instrument` for th
  .. code-block:: none
 
     Printing results of timing profile...
-    InferType: 6766us [6766us] (44.93%; 44.93%)
-    FoldScaleAxis: 8293us [6us] (55.07%; 55.07%)
-            FoldConstant: 8287us [1685us] (55.03%; 99.93%)
-                    InferType: 6602us [6602us] (43.84%; 79.67%)
+    InferType: 6910us [6910us] (45.86%; 45.86%)
+    FoldScaleAxis: 8158us [5us] (54.14%; 54.14%)
+            FoldConstant: 8153us [1701us] (54.11%; 99.94%)
+                    InferType: 6452us [6452us] (42.82%; 79.13%)
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
index 3ffeff6f1f..f24ca107f6 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_cuda.rst.txt
@@ -340,7 +340,7 @@ latency of convolution.
 
  .. code-block:: none
 
-    Convolution: 39.974720 ms
+    Convolution: 46.708831 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
index 1ba6540f2f..58f6955132 100644
--- a/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_conv_tensorcore.rst.txt
@@ -657,7 +657,7 @@ be able to run on our build server
 
  .. code-block:: none
 
-    conv2d with tensor core: 11.879251 ms
+    conv2d with tensor core: 13.373473 ms
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
index 0ad6ebfe03..35ff4a7440 100644
--- a/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/opt_gemm.rst.txt
@@ -143,8 +143,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 
  .. code-block:: none
 
-    Numpy running time: 0.018462
-    Baseline: 3.444377
+    Numpy running time: 0.018131
+    Baseline: 3.458023
 
 
 
@@ -238,7 +238,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 
  .. code-block:: none
 
-    Opt1: 0.302857
+    Opt1: 0.294667
 
 
 
@@ -340,7 +340,7 @@ In this tutorial, we chose to vectorize the inner loop row data since it is cach
 
  .. code-block:: none
 
-    Opt2: 0.331886
+    Opt2: 0.330786
 
 
 
@@ -435,7 +435,7 @@ the access pattern for A matrix is more cache friendly.
 
  .. code-block:: none
 
-    Opt3: 0.116086
+    Opt3: 0.115375
 
 
 
@@ -559,7 +559,7 @@ flattening.
 
  .. code-block:: none
 
-    Opt4: 0.109613
+    Opt4: 0.107874
 
 
 
@@ -680,7 +680,7 @@ write to C when all the block results are ready.
 
  .. code-block:: none
 
-    Opt5: 0.111185
+    Opt5: 0.109242
 
 
 
@@ -804,7 +804,7 @@ Furthermore, we can also utilize multi-core processors to do the thread-level pa
 
  .. code-block:: none
 
-    Opt6: 0.147265
+    Opt6: 0.144905
 
 
 
diff --git a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
index 8b12ddd4b9..c39bd98b37 100644
--- a/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/optimize_operators/sg_execution_times.rst.txt
@@ -5,12 +5,12 @@
 
 Computation times
 =================
-**00:34.785** total execution time for **how_to_optimize_operators** files:
+**00:34.583** total execution time for **how_to_optimize_operators** files:
 
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:32.348 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_gemm.py` (``opt_gemm.py``)                       | 00:32.099 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.416 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_tensorcore.py` (``opt_conv_tensorcore.py``) | 00:01.427 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.021 | 0.0 MB |
+| :ref:`sphx_glr_how_to_optimize_operators_opt_conv_cuda.py` (``opt_conv_cuda.py``)             | 00:01.058 | 0.0 MB |
 +-----------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
index 92d7cb7e67..25ea30b443 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**08:50.783** total execution time for **how_to_tune_with_autoscheduler** files:
+**09:03.300** total execution time for **how_to_tune_with_autoscheduler** files:
 
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 05:25.528 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py` (``tune_conv2d_layer_cuda.py``) | 05:28.594 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:32.411 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_x86.py` (``tune_network_x86.py``)             | 01:31.712 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:01.299 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_cuda.py` (``tune_network_cuda.py``)           | 01:00.986 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:27.946 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_sparse_x86.py` (``tune_sparse_x86.py``)               | 00:38.664 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:12.325 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_arm.py` (``tune_network_arm.py``)             | 00:12.020 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:11.274 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autoscheduler_tune_network_mali.py` (``tune_network_mali.py``)           | 00:11.323 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
index dc3e4eb535..020595381e 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.rst.txt
@@ -239,483 +239,513 @@ cooperative fetching, unrolling and operator fusion.
                  bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
                  compute: Buffer(compute_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" = 28;
-      allocate(conv2d_nchw: Pointer(local float32), float32, [14]), storage_scope = local;
-      allocate(pad_temp.shared: Pointer(shared float32), float32, [72]), storage_scope = shared;
-      allocate(kernel.shared: Pointer(shared float32), float32, [3072]), storage_scope = shared;
-      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64 {
-        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [14], [], scope="local", align=32)[0] = 0f32
+      attr [IterVar(blockIdx.x: int32, (nullptr), "ThreadIndex", "blockIdx.x")] "thread_extent" = 128;
+      allocate(conv2d_nchw: Pointer(local float32), float32, [2]), storage_scope = local;
+      allocate(pad_temp.shared: Pointer(shared float32), float32, [4032]), storage_scope = shared;
+      allocate(kernel.shared: Pointer(shared float32), float32, [768]), storage_scope = shared;
+      attr [IterVar(threadIdx.x: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98 {
+        conv2d_nchw_1: Buffer(conv2d_nchw, float32, [2], [], scope="local", align=8)[0] = 0f32
         conv2d_nchw_1[1] = 0f32
-        conv2d_nchw_1[2] = 0f32
-        conv2d_nchw_1[3] = 0f32
-        conv2d_nchw_1[4] = 0f32
-        conv2d_nchw_1[5] = 0f32
-        conv2d_nchw_1[6] = 0f32
-        conv2d_nchw_1[7] = 0f32
-        conv2d_nchw_1[8] = 0f32
-        conv2d_nchw_1[9] = 0f32
-        conv2d_nchw_1[10] = 0f32
-        conv2d_nchw_1[11] = 0f32
-        conv2d_nchw_1[12] = 0f32
-        conv2d_nchw_1[13] = 0f32
-        for (rc.outer.outer: int32, 0, 64) {
+        for (rc.outer.outer: int32, 0, 8) {
           for (ry.outer.outer: int32, 0, 3) {
-            let cse_var_2: int32 = (rc.outer.outer*72)
+            let cse_var_4: int32 = (rc.outer.outer*3136)
+            let cse_var_3: int32 = (ry.outer.outer*7)
+            let cse_var_2: int32 = (rc.outer.outer*576)
             let cse_var_1: int32 = (ry.outer.outer*3)
              {
-              attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64 {
-                if @tir.likely((threadIdx.x_1 < 18), dtype=bool) {
-                  pad_temp.shared_1: Buffer(pad_temp.shared, float32, [72], [], scope="shared")[(threadIdx.x_1*4)] = @tir.if_then_else(((((1 <= (ry.outer.outer + floormod(blockIdx.x, 7))) && ((ry.outer.outer + floormod(blockIdx.x, 7)) < 8)) && (1 <= floormod((threadIdx.x_1*4), 9))) && (floormod((threadIdx.x_1*4), 9) < 8)), data_3: Buffer(data_2, float32, [25088], [])[((((((rc.outer.outer*392) + (floordiv((threadIdx.x_1*4), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + fl [...]
-                }
-                if @tir.likely((threadIdx.x_1 < 18), dtype=bool) {
-                  pad_temp.shared_1[((threadIdx.x_1*4) + 1)] = @tir.if_then_else(((((1 <= (ry.outer.outer + floormod(blockIdx.x, 7))) && ((ry.outer.outer + floormod(blockIdx.x, 7)) < 8)) && (1 <= floormod(((threadIdx.x_1*4) + 1), 9))) && (floormod(((threadIdx.x_1*4) + 1), 9) < 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 1), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 1), 9)) - 8)], 0f32, dtype=float32)
-                }
-                if @tir.likely((threadIdx.x_1 < 18), dtype=bool) {
-                  pad_temp.shared_1[((threadIdx.x_1*4) + 2)] = @tir.if_then_else(((((1 <= (ry.outer.outer + floormod(blockIdx.x, 7))) && ((ry.outer.outer + floormod(blockIdx.x, 7)) < 8)) && (1 <= floormod(((threadIdx.x_1*4) + 2), 9))) && (floormod(((threadIdx.x_1*4) + 2), 9) < 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 2), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 2), 9)) - 8)], 0f32, dtype=float32)
-                }
-                if @tir.likely((threadIdx.x_1 < 18), dtype=bool) {
-                  pad_temp.shared_1[((threadIdx.x_1*4) + 3)] = @tir.if_then_else(((((1 <= (ry.outer.outer + floormod(blockIdx.x, 7))) && ((ry.outer.outer + floormod(blockIdx.x, 7)) < 8)) && (1 <= floormod(((threadIdx.x_1*4) + 3), 9))) && (floormod(((threadIdx.x_1*4) + 3), 9) < 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 3), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 3), 9)) - 8)], 0f32, dtype=float32)
-                }
+              attr [IterVar(threadIdx.x_1: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [4032], [], scope="shared")[threadIdx.x_1] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data_3: Buffer(data_2, float32, [25088], [])[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) - 8)], 0f32 [...]
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 98)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 98), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 196)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 196), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 294)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 294), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 392), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 490)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 490), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 588)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 588), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 686)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 686), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 784), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 882)] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 678)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 980)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 980), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1078)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1078), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1176)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1176), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1274)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1274), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1372)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1372), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1470)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1470), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1568)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1568), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1666)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1666), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1764)] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1364)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1862)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1862), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 1960)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1960), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2058)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2058), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2156)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2156), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2254)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2254), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2352)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2352), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2450)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2450), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2548)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2548), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2646)] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 2050)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2744)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2744), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2842)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2842), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 2940)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2940), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3038)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3038), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3136)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3136), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3234)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 3), 9))) && (floormod((threadIdx.x_1 + 3), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3234), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3332)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 2), 9))) && (floormod((threadIdx.x_1 + 2), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3332), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3430)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 1), 9))) && (floormod((threadIdx.x_1 + 1), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3430), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3528)] = @tir.if_then_else(((((1 <= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) && ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod(threadIdx.x_1, 9))) && (floormod(threadIdx.x_1, 9) < 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 2736)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3626)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 8), 9))) && (floormod((threadIdx.x_1 + 8), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3626), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3724)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 7), 9))) && (floormod((threadIdx.x_1 + 7), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3724), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3822)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 6), 9))) && (floormod((threadIdx.x_1 + 6), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3822), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              pad_temp.shared_1[(threadIdx.x_1 + 3920)] = @tir.if_then_else(((((1 <= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) && ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) < 8)) && (1 <= floormod((threadIdx.x_1 + 5), 9))) && (floormod((threadIdx.x_1 + 5), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3920), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+              attr [IterVar(threadIdx.x_1, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              if @tir.likely((threadIdx.x_1 < 14), dtype=bool) {
+                pad_temp.shared_1[(threadIdx.x_1 + 4018)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) < 8) && (1 <= floormod((threadIdx.x_1 + 4), 9))) && (floormod((threadIdx.x_1 + 4), 9) < 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 4018), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
               }
-              attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1: Buffer(kernel.shared, float32, [3072], [], scope="shared")[threadIdx.x_2] = kernel_3: Buffer(kernel_2, float32, [2359296], [])[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 64)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 64), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 128)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 128), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 192)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 36864)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 256)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 256), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 320)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 320), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 384)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 73728)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 448)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 448), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 512)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 512), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 576)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 110592)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 640)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 640), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 704)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 704), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 768)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 147456)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 832)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 832), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 896)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 896), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 960)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 184320)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1024)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1024), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1088)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1088), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1152)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 221184)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1216)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1216), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1280)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1280), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1344)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 258048)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1408)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1408), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1472)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1472), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1536)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 294912)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1600)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1600), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1664)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1664), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1728)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 331776)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1792)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1792), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1856)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1856), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1920)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 368640)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 1984)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1984), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2048)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2048), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2112)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 405504)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2176)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2176), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2240)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2240), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2304)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 442368)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2368)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2368), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2432)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2432), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2496)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 479232)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2560)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2560), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2624)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2624), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2688)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 516096)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2752)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2752), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2816)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2816), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2880)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 552960)]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 2944)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2944), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 64;
-              kernel.shared_1[(threadIdx.x_2 + 3008)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 3008), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[0]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[9]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[1]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[2]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[3]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[4]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[5]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[6]*kernel.shared_1[(threadIdx.x*48)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[0]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[9]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[8]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[17]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[8]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[17]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[18]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[27]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[18]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[27]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[26]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[35]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[26]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[35]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[36]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[45]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[36]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[45]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[44]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[53]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[44]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[53]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[54]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[63]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[54]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[63]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[62]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-              conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[71]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[62]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-              conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[71]*kernel.shared_1[((threadIdx.x*48) + 47)]))
+              attr [IterVar(threadIdx.x_2: int32, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1: Buffer(kernel.shared, float32, [768], [], scope="shared")[threadIdx.x_2] = kernel_3: Buffer(kernel_2, float32, [2359296], [])[(((((blockIdx.x*18432) + cse_var_2) + (floordiv(threadIdx.x_2, 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 98)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 98), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 98), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 196)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 196), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 4), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 294)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 294), 192)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 34), 64)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 392)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 392), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 490)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 490), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 106), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              kernel.shared_1[(threadIdx.x_2 + 588)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 588), 192)*4608)) + cse_var_2) + ((floordiv(threadIdx.x_2, 3) + 4)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+              attr [IterVar(threadIdx.x_2, (nullptr), "ThreadIndex", "threadIdx.x")] "thread_extent" = 98;
+              if @tir.likely((threadIdx.x_2 < 82), dtype=bool) {
+                kernel.shared_1[(threadIdx.x_2 + 686)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 686), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 110), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+              }
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[(floordiv(threadIdx.x, 49)*384)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 192)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 1)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 193)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 2)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 194)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 3)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 195)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 4)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 196)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 5)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 197)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 6)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 198)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 7)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 199)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 8)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 200)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 9)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 201)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 10)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 202)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 11)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 203)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 12)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 204)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 13)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 205)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 14)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 206)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 15)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 207)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 16)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 208)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 17)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 209)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 18)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 210)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 19)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 211)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 20)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 212)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 21)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 213)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 22)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 214)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 23)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 215)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 24)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 216)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 25)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 217)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 26)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 218)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 27)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 219)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 28)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 220)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 29)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 221)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 30)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 222)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 31)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 223)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 32)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 224)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 33)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 225)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 34)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 226)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 35)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 227)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 36)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 228)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 37)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 229)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 38)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 230)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 39)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 231)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 40)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 232)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 41)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 233)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 42)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 234)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 43)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 235)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 44)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 236)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 45)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 237)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 46)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 238)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 47)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 239)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 48)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 240)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 49)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 241)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 50)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 242)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 51)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 243)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 52)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 244)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 53)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 245)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1134)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 54)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1134)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 246)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1135)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 55)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1135)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 247)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1136)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 56)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1136)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 248)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 57)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 249)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 58)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 250)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 59)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 251)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 60)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 252)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 61)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 253)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 62)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 254)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1323)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 63)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1323)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 255)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1324)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 64)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1324)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 256)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1325)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 65)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1325)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 257)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1386)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 66)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1386)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 258)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1387)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 67)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1387)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 259)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1388)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 68)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1388)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 260)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1449)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 69)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1449)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 261)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1450)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 70)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1450)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 262)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1451)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 71)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1451)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 263)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1512)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 72)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1512)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 264)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1513)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 73)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1513)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 265)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1514)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 74)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1514)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 266)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1575)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 75)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1575)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 267)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1576)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 76)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1576)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 268)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1577)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 77)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1577)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 269)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1638)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 78)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1638)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 270)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1639)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 79)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1639)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 271)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1640)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 80)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1640)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 272)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1701)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 81)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1701)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 273)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1702)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 82)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1702)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 274)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1703)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 83)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1703)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 275)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1764)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 84)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1764)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 276)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1765)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 85)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1765)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 277)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1766)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 86)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1766)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 278)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1827)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 87)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1827)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 279)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1828)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 88)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1828)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 280)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1829)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 89)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1829)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 281)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1890)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 90)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1890)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 282)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1891)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 91)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1891)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 283)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1892)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 92)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1892)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 284)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1953)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 93)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1953)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 285)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1954)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 94)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1954)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 286)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1955)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 95)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1955)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 287)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2016)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 96)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2016)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 288)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2017)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 97)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2017)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 289)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2018)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 98)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2018)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 290)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2079)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 99)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2079)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 291)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2080)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 100)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2080)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 292)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2081)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 101)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2081)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 293)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2142)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 102)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2142)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 294)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2143)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 103)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2143)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 295)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2144)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 104)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2144)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 296)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2205)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 105)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2205)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 297)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2206)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 106)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2206)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 298)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2207)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 107)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2207)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 299)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2268)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 108)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2268)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 300)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2269)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 109)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2269)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 301)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2270)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 110)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2270)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 302)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2331)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 111)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2331)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 303)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2332)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 112)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2332)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 304)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2333)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 113)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2333)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 305)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2394)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 114)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2394)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 306)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2395)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 115)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2395)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 307)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2396)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 116)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2396)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 308)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2457)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 117)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2457)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 309)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2458)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 118)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2458)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 310)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2459)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 119)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2459)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 311)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2520)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 120)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2520)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 312)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2521)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 121)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2521)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 313)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2522)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 122)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2522)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 314)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2583)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 123)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2583)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 315)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2584)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 124)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2584)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 316)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2585)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 125)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2585)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 317)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2646)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 126)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2646)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 318)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2647)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 127)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2647)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 319)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2648)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 128)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2648)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 320)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2709)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 129)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2709)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 321)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2710)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 130)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2710)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 322)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2711)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 131)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2711)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 323)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2772)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 132)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2772)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 324)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2773)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 133)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2773)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 325)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2774)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 134)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2774)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 326)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2835)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 135)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2835)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 327)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2836)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 136)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2836)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 328)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2837)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 137)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2837)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 329)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2898)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 138)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2898)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 330)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2899)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 139)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2899)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 331)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2900)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 140)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2900)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 332)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2961)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 141)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2961)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 333)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2962)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 142)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2962)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 334)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2963)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 143)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2963)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 335)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3024)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 144)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3024)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 336)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3025)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 145)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3025)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 337)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3026)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 146)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3026)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 338)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3087)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 147)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3087)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 339)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3088)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 148)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3088)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 340)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3089)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 149)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3089)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 341)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3150)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 150)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3150)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 342)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3151)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 151)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3151)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 343)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3152)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 152)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3152)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 344)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3213)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 153)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3213)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 345)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3214)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 154)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3214)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 346)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3215)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 155)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3215)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 347)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3276)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 156)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3276)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 348)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3277)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 157)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3277)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 349)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3278)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 158)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3278)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 350)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3339)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 159)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3339)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 351)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3340)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 160)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3340)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 352)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3341)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 161)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3341)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 353)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3402)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 162)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3402)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 354)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3403)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 163)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3403)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 355)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3404)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 164)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3404)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 356)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3465)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 165)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3465)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 357)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3466)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 166)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3466)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 358)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3467)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 167)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3467)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 359)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3528)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 168)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3528)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 360)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3529)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 169)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3529)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 361)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3530)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 170)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3530)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 362)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3591)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 171)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3591)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 363)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3592)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 172)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3592)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 364)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3593)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 173)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3593)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 365)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3654)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 174)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3654)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 366)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3655)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 175)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3655)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 367)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3656)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 176)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3656)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 368)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3717)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 177)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3717)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 369)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3718)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 178)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3718)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 370)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3719)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 179)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3719)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 371)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3780)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 180)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3780)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 372)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3781)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 181)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3781)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 373)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3782)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 182)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3782)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 374)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3843)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 183)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3843)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 375)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3844)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 184)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3844)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 376)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3845)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 185)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3845)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 377)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3906)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 186)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3906)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 378)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3907)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 187)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3907)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 379)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3908)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 188)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3908)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 380)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3969)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 189)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3969)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 381)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3970)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 190)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3970)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 382)]))
+              conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3971)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 191)]))
+              conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3971)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 383)]))
             }
           }
         }
         for (i1.inner: int32, 0, 2) {
-          for (i3.inner: int32, 0, 7) {
-            compute_3: Buffer(compute_2, float32, [25088], [])[(((((floordiv(blockIdx.x, 7)*6272) + (threadIdx.x*98)) + (i1.inner*49)) + (floormod(blockIdx.x, 7)*7)) + i3.inner)] = max((conv2d_nchw_1[((i1.inner*7) + i3.inner)] + bias_3: Buffer(bias_2, float32, [512], [])[(((floordiv(blockIdx.x, 7)*128) + (threadIdx.x*2)) + i1.inner)]), 0f32)
-          }
+          compute_3: Buffer(compute_2, float32, [25088], [])[((((blockIdx.x*196) + (floordiv(threadIdx.x, 49)*98)) + (i1.inner*49)) + floormod(threadIdx.x, 49))] = max((conv2d_nchw_1[i1.inner] + bias_3: Buffer(bias_2, float32, [512], [])[(((blockIdx.x*4) + (floordiv(threadIdx.x, 49)*2)) + i1.inner)]), 0f32)
         }
       }
     }
@@ -770,7 +800,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 0.357 ms
+    Execution time of this operator: 0.363 ms
 
 
 
@@ -818,36 +848,36 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     conv2d_nchw_nn_o_o_i, conv2d_nchw_nn_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_i, factor=1)
     conv2d_nchw_nn_o_o_o_i, conv2d_nchw_nn_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_i, factor=1)
     conv2d_nchw_nn_o_o_o_o, conv2d_nchw_nn_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_o_i, factor=1)
-    conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=1)
-    conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=2)
-    conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=64)
+    conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=2)
+    conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=1)
+    conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=2)
     conv2d_nchw_ff_o_o_o_o, conv2d_nchw_ff_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_o_i, factor=1)
     conv2d_nchw_yy_o_i, conv2d_nchw_yy_i = s[conv2d_nchw].split(conv2d_nchw_yy, factor=1)
     conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=1)
-    conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=1)
+    conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=7)
     conv2d_nchw_yy_o_o_o_o, conv2d_nchw_yy_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_o_i, factor=1)
     conv2d_nchw_xx_o_i, conv2d_nchw_xx_i = s[conv2d_nchw].split(conv2d_nchw_xx, factor=1)
-    conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=7)
-    conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=1)
+    conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=1)
+    conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=7)
     conv2d_nchw_xx_o_o_o_o, conv2d_nchw_xx_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_o_i, factor=1)
-    conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=2)
-    conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=4)
+    conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=1)
+    conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=64)
     conv2d_nchw_ry_o_i, conv2d_nchw_ry_i = s[conv2d_nchw].split(conv2d_nchw_ry, factor=1)
     conv2d_nchw_ry_o_o, conv2d_nchw_ry_o_i = s[conv2d_nchw].split(conv2d_nchw_ry_o_i, factor=1)
-    conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=1)
-    conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=3)
+    conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=3)
+    conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=1)
     s[conv2d_nchw].reorder(conv2d_nchw_nn_o_o_o_o, conv2d_nchw_ff_o_o_o_o, conv2d_nchw_yy_o_o_o_o, conv2d_nchw_xx_o_o_o_o, conv2d_nchw_nn_o_o_o_i, conv2d_nchw_ff_o_o_o_i, conv2d_nchw_yy_o_o_o_i, conv2d_nchw_xx_o_o_o_i, conv2d_nchw_nn_o_o_i, conv2d_nchw_ff_o_o_i, conv2d_nchw_yy_o_o_i, conv2d_nchw_xx_o_o_i, conv2d_nchw_rc_o_o, conv2d_nchw_ry_o_o, conv2d_nchw_rx_o_o, conv2d_nchw_rc_o_i, conv2d_nchw_ry_o_i, conv2d_nchw_rx_o_i, conv2d_nchw_nn_o_i, conv2d_nchw_ff_o_i, conv2d_nchw_yy_o_i, conv2 [...]
     compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
     compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
     compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
     compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=2)
-    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=64)
+    compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=2)
     compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=1)
     compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
-    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=1)
+    compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
     compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
-    compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=7)
-    compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=1)
+    compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=1)
+    compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=7)
     compute_i3_o_o_o, compute_i3_o_o_i = s[compute].split(compute_i3_o_o_i, factor=1)
     s[compute].reorder(compute_i0_o_o_o, compute_i1_o_o_o, compute_i2_o_o_o, compute_i3_o_o_o, compute_i0_o_o_i, compute_i1_o_o_i, compute_i2_o_o_i, compute_i3_o_o_i, compute_i0_o_i, compute_i1_o_i, compute_i2_o_i, compute_i3_o_i, compute_i0_i, compute_i1_i, compute_i2_i, compute_i3_i)
     s[conv2d_nchw].compute_at(s[compute], compute_i3_o_i)
@@ -867,12 +897,12 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
     kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=64)
+    kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=98)
     s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
     pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
-    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=4)
+    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
     s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=64)
+    pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=98)
     s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis("threadIdx.x"))
     s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, "auto_unroll_max_step", 512)
     s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, "unroll_explicit", True)
@@ -892,430 +922,458 @@ They can be used for debugging and learning the behavior of the auto-scheduler.
       #define int64_t long long
       #define uint64_t unsigned long long
     #endif
-    extern "C" __global__ void __launch_bounds__(64) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
-      float conv2d_nchw[14];
-      __shared__ float pad_temp_shared[72];
-      __shared__ float kernel_shared[3072];
+    extern "C" __global__ void __launch_bounds__(98) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
+      float conv2d_nchw[2];
+      __shared__ float pad_temp_shared[4032];
+      __shared__ float kernel_shared[768];
       conv2d_nchw[0] = 0.000000e+00f;
       conv2d_nchw[1] = 0.000000e+00f;
-      conv2d_nchw[2] = 0.000000e+00f;
-      conv2d_nchw[3] = 0.000000e+00f;
-      conv2d_nchw[4] = 0.000000e+00f;
-      conv2d_nchw[5] = 0.000000e+00f;
-      conv2d_nchw[6] = 0.000000e+00f;
-      conv2d_nchw[7] = 0.000000e+00f;
-      conv2d_nchw[8] = 0.000000e+00f;
-      conv2d_nchw[9] = 0.000000e+00f;
-      conv2d_nchw[10] = 0.000000e+00f;
-      conv2d_nchw[11] = 0.000000e+00f;
-      conv2d_nchw[12] = 0.000000e+00f;
-      conv2d_nchw[13] = 0.000000e+00f;
-      for (int rc_outer_outer = 0; rc_outer_outer < 64; ++rc_outer_outer) {
+      for (int rc_outer_outer = 0; rc_outer_outer < 8; ++rc_outer_outer) {
         for (int ry_outer_outer = 0; ry_outer_outer < 3; ++ry_outer_outer) {
           __syncthreads();
-          if (((int)threadIdx.x) < 18) {
-            pad_temp_shared[(((int)threadIdx.x) * 4)] = (((((1 <= (ry_outer_outer + (((int)blockIdx.x) % 7))) && ((ry_outer_outer + (((int)blockIdx.x) % 7)) < 8)) && (1 <= ((((int)threadIdx.x) * 4) % 9))) && (((((int)threadIdx.x) * 4) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) * 4) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + ((((int)threadIdx.x) * 4) % 9)) - 8)] : 0.000000e+00f);
-          }
-          if (((int)threadIdx.x) < 18) {
-            pad_temp_shared[((((int)threadIdx.x) * 4) + 1)] = (((((1 <= (ry_outer_outer + (((int)blockIdx.x) % 7))) && ((ry_outer_outer + (((int)blockIdx.x) % 7)) < 8)) && (1 <= (((((int)threadIdx.x) * 4) + 1) % 9))) && ((((((int)threadIdx.x) * 4) + 1) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + ((((((int)threadIdx.x) * 4) + 1) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + (((((int)threadIdx.x) * 4) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[((int)threadIdx.x)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 98)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 98) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 196)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 196) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 294)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 294) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 392)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 392) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 490)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 490) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 588)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 588) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 686)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 686) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 882)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 678)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 980)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 980) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1078)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1078) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1176)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1176) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1274)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1274) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1372)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1372) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1470)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1470) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1568)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1568) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1666)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1666) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1764)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 1364)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1862)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1862) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 1960)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 1960) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2058)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2058) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2156)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2156) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2254)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2254) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2352)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2352) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2450)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2450) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2548)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2548) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2646)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 2050)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2744)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2744) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2842)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2842) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 2940)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 2940) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3038)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3038) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3136)] = (((((1 <= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3136) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3234)] = (((((1 <= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 3) % 9))) && (((((int)threadIdx.x) + 3) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3234) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3332)] = (((((1 <= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 2) % 9))) && (((((int)threadIdx.x) + 2) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3332) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3430)] = (((((1 <= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 1) % 9))) && (((((int)threadIdx.x) + 1) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3430) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3528)] = (((((1 <= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) && ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= (((int)threadIdx.x) % 9))) && ((((int)threadIdx.x) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) + 2736)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3626)] = (((((1 <= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 8) % 9))) && (((((int)threadIdx.x) + 8) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3626) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3724)] = (((((1 <= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 7) % 9))) && (((((int)threadIdx.x) + 7) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3724) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3822)] = (((((1 <= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 6) % 9))) && (((((int)threadIdx.x) + 6) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3822) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+          pad_temp_shared[(((int)threadIdx.x) + 3920)] = (((((1 <= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) && (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) < 8)) && (1 <= ((((int)threadIdx.x) + 5) % 9))) && (((((int)threadIdx.x) + 5) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 3920) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+          if (((int)threadIdx.x) < 14) {
+            pad_temp_shared[(((int)threadIdx.x) + 4018)] = (((((((((int)threadIdx.x) + 49) / 9) + ry_outer_outer) < 8) && (1 <= ((((int)threadIdx.x) + 4) % 9))) && (((((int)threadIdx.x) + 4) % 9) < 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 4018) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
           }
-          if (((int)threadIdx.x) < 18) {
-            pad_temp_shared[((((int)threadIdx.x) * 4) + 2)] = (((((1 <= (ry_outer_outer + (((int)blockIdx.x) % 7))) && ((ry_outer_outer + (((int)blockIdx.x) % 7)) < 8)) && (1 <= (((((int)threadIdx.x) * 4) + 2) % 9))) && ((((((int)threadIdx.x) * 4) + 2) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + ((((((int)threadIdx.x) * 4) + 2) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + (((((int)threadIdx.x) * 4) + 2) % 9)) - 8)] : 0.000000e+00f);
+          kernel_shared[((int)threadIdx.x)] = kernel[(((((((int)blockIdx.x) * 18432) + (rc_outer_outer * 576)) + ((((int)threadIdx.x) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 98)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 98) / 192) * 4608)) + (rc_outer_outer * 576)) + ((((((int)threadIdx.x) + 98) % 192) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 196)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 196) / 192) * 4608)) + (rc_outer_outer * 576)) + (((((int)threadIdx.x) + 4) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 294)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 294) / 192) * 4608)) + (rc_outer_outer * 576)) + ((((((int)threadIdx.x) / 3) + 34) & 63) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 392)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 392) / 192) * 4608)) + (rc_outer_outer * 576)) + (((((int)threadIdx.x) + 8) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 490)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 490) / 192) * 4608)) + (rc_outer_outer * 576)) + ((((((int)threadIdx.x) + 106) % 192) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
+          kernel_shared[(((int)threadIdx.x) + 588)] = kernel[(((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 588) / 192) * 4608)) + (rc_outer_outer * 576)) + ((((int)threadIdx.x) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 36)];
+          if (((int)threadIdx.x) < 82) {
+            kernel_shared[(((int)threadIdx.x) + 686)] = kernel[((((((((int)blockIdx.x) * 18432) + (((((int)threadIdx.x) + 686) / 192) * 4608)) + (rc_outer_outer * 576)) + (((((int)threadIdx.x) + 110) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
           }
-          if (((int)threadIdx.x) < 18) {
-            pad_temp_shared[((((int)threadIdx.x) * 4) + 3)] = (((((1 <= (ry_outer_outer + (((int)blockIdx.x) % 7))) && ((ry_outer_outer + (((int)blockIdx.x) % 7)) < 8)) && (1 <= (((((int)threadIdx.x) * 4) + 3) % 9))) && ((((((int)threadIdx.x) * 4) + 3) % 9) < 8)) ? data[((((((rc_outer_outer * 392) + ((((((int)threadIdx.x) * 4) + 3) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + (((((int)threadIdx.x) * 4) + 3) % 9)) - 8)] : 0.000000e+00f);
-          }
-          kernel_shared[((int)threadIdx.x)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 64)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 64) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 128)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 128) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 192)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 36864)];
-          kernel_shared[(((int)threadIdx.x) + 256)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 256) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 320)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 320) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 384)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 73728)];
-          kernel_shared[(((int)threadIdx.x) + 448)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 448) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 512)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 512) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 576)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 110592)];
-          kernel_shared[(((int)threadIdx.x) + 640)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 640) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 704)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 704) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 768)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 147456)];
-          kernel_shared[(((int)threadIdx.x) + 832)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 832) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 896)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 896) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 960)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 184320)];
-          kernel_shared[(((int)threadIdx.x) + 1024)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1024) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1088)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1088) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1152)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 221184)];
-          kernel_shared[(((int)threadIdx.x) + 1216)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1216) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1280)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1280) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1344)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 258048)];
-          kernel_shared[(((int)threadIdx.x) + 1408)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1408) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1472)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1472) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1536)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 294912)];
-          kernel_shared[(((int)threadIdx.x) + 1600)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1600) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1664)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1664) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1728)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 331776)];
-          kernel_shared[(((int)threadIdx.x) + 1792)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1792) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1856)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1856) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 1920)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 368640)];
-          kernel_shared[(((int)threadIdx.x) + 1984)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 1984) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2048)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2048) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2112)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 405504)];
-          kernel_shared[(((int)threadIdx.x) + 2176)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2176) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2240)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2240) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2304)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 442368)];
-          kernel_shared[(((int)threadIdx.x) + 2368)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2368) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2432)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2432) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2496)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 479232)];
-          kernel_shared[(((int)threadIdx.x) + 2560)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2560) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2624)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2624) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2688)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 516096)];
-          kernel_shared[(((int)threadIdx.x) + 2752)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2752) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2816)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2816) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 2880)] = kernel[((((((((((int)blockIdx.x) / 7) * 589824) + ((((int)threadIdx.x) / 24) * 4608)) + (rc_outer_outer * 72)) + (((((int)threadIdx.x) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + (((int)threadIdx.x) % 3)) + 552960)];
-          kernel_shared[(((int)threadIdx.x) + 2944)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 2944) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 16) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 1) % 3))];
-          kernel_shared[(((int)threadIdx.x) + 3008)] = kernel[(((((((((int)blockIdx.x) / 7) * 589824) + (((((int)threadIdx.x) + 3008) / 24) * 4608)) + (rc_outer_outer * 72)) + ((((((int)threadIdx.x) + 8) % 24) / 3) * 9)) + (ry_outer_outer * 3)) + ((((int)threadIdx.x) + 2) % 3))];
           __syncthreads();
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[0] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[9] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[1] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[10] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[2] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[3] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[4] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[5] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[6] * kernel_shared[(((int)threadIdx.x) * 48)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 3)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[0] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[9] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[1] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[10] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[2] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[3] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[4] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[5] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[6] * kernel_shared[((((int)threadIdx.x) * 48) + 24)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 27)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[1] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[10] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[2] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[3] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[4] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[5] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[6] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[7] * kernel_shared[((((int)threadIdx.x) * 48) + 1)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[16] * kernel_shared[((((int)threadIdx.x) * 48) + 4)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[1] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[10] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[2] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[3] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[4] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[5] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[6] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[7] * kernel_shared[((((int)threadIdx.x) * 48) + 25)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[16] * kernel_shared[((((int)threadIdx.x) * 48) + 28)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[2] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[3] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[4] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[5] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[6] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[7] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[16] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[8] * kernel_shared[((((int)threadIdx.x) * 48) + 2)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[17] * kernel_shared[((((int)threadIdx.x) * 48) + 5)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[2] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[11] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[3] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[12] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[4] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[13] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[5] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[14] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[6] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[15] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[7] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[16] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[8] * kernel_shared[((((int)threadIdx.x) * 48) + 26)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[17] * kernel_shared[((((int)threadIdx.x) * 48) + 29)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[18] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[27] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[19] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[28] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 6)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 9)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[18] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[27] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[19] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[28] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 30)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 33)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[19] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[28] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[25] * kernel_shared[((((int)threadIdx.x) * 48) + 7)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[34] * kernel_shared[((((int)threadIdx.x) * 48) + 10)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[19] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[28] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[25] * kernel_shared[((((int)threadIdx.x) * 48) + 31)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[34] * kernel_shared[((((int)threadIdx.x) * 48) + 34)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[25] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[34] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[26] * kernel_shared[((((int)threadIdx.x) * 48) + 8)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[35] * kernel_shared[((((int)threadIdx.x) * 48) + 11)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[20] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[29] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[21] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[30] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[22] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[31] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[23] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[32] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[24] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[33] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[25] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[34] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[26] * kernel_shared[((((int)threadIdx.x) * 48) + 32)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[35] * kernel_shared[((((int)threadIdx.x) * 48) + 35)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[36] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[45] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[37] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[46] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 12)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 15)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[36] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[45] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[37] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[46] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 36)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 39)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[37] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[46] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[43] * kernel_shared[((((int)threadIdx.x) * 48) + 13)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[52] * kernel_shared[((((int)threadIdx.x) * 48) + 16)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[37] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[46] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[43] * kernel_shared[((((int)threadIdx.x) * 48) + 37)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[52] * kernel_shared[((((int)threadIdx.x) * 48) + 40)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[43] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[52] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[44] * kernel_shared[((((int)threadIdx.x) * 48) + 14)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[53] * kernel_shared[((((int)threadIdx.x) * 48) + 17)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[38] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[47] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[39] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[48] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[40] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[49] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[41] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[50] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[42] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[51] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[43] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[52] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[44] * kernel_shared[((((int)threadIdx.x) * 48) + 38)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[53] * kernel_shared[((((int)threadIdx.x) * 48) + 41)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[54] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[63] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[55] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[64] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 18)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 21)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[54] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[63] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[55] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[64] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 42)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 45)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[55] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[64] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[61] * kernel_shared[((((int)threadIdx.x) * 48) + 19)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[70] * kernel_shared[((((int)threadIdx.x) * 48) + 22)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[55] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[64] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[61] * kernel_shared[((((int)threadIdx.x) * 48) + 43)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[70] * kernel_shared[((((int)threadIdx.x) * 48) + 46)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[2] = (conv2d_nchw[2] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[3] = (conv2d_nchw[3] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[4] = (conv2d_nchw[4] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[61] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[5] = (conv2d_nchw[5] + (pad_temp_shared[70] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[62] * kernel_shared[((((int)threadIdx.x) * 48) + 20)]));
-          conv2d_nchw[6] = (conv2d_nchw[6] + (pad_temp_shared[71] * kernel_shared[((((int)threadIdx.x) * 48) + 23)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[56] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[7] = (conv2d_nchw[7] + (pad_temp_shared[65] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[57] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[8] = (conv2d_nchw[8] + (pad_temp_shared[66] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[58] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[9] = (conv2d_nchw[9] + (pad_temp_shared[67] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[59] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[10] = (conv2d_nchw[10] + (pad_temp_shared[68] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[60] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[11] = (conv2d_nchw[11] + (pad_temp_shared[69] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[61] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[12] = (conv2d_nchw[12] + (pad_temp_shared[70] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[62] * kernel_shared[((((int)threadIdx.x) * 48) + 44)]));
-          conv2d_nchw[13] = (conv2d_nchw[13] + (pad_temp_shared[71] * kernel_shared[((((int)threadIdx.x) * 48) + 47)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[((((int)threadIdx.x) / 49) * 384)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7))] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 192)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 1)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 193)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 2)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 194)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 3)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 63)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 195)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 4)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 64)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 196)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 5)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 65)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 197)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 6)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 126)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 198)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 7)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 127)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 199)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 8)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 128)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 200)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 9)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 189)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 201)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 10)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 190)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 202)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 11)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 191)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 203)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 12)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 252)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 204)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 13)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 253)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 205)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 14)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 254)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 206)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 15)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 315)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 207)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 16)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 316)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 208)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 17)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 317)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 209)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 18)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 378)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 210)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 19)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 379)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 211)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 20)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 380)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 212)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 21)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 441)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 213)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 22)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 442)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 214)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 23)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 443)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 215)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 24)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 504)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 216)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 25)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 505)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 217)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 26)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 506)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 218)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 27)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 567)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 219)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 28)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 568)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 220)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 29)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 569)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 221)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 30)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 630)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 222)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 31)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 631)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 223)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 32)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 632)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 224)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 33)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 693)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 225)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 34)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 694)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 226)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 35)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 695)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 227)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 36)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 756)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 228)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 37)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 757)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 229)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 38)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 758)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 230)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 39)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 819)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 231)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 40)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 820)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 232)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 41)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 821)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 233)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 42)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 882)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 234)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 43)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 883)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 235)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 44)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 884)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 236)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 45)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 945)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 237)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 46)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 946)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 238)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 47)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 947)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 239)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1008)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 48)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1008)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 240)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1009)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 49)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1009)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 241)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1010)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 50)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1010)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 242)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1071)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 51)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1071)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 243)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1072)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 52)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1072)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 244)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1073)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 53)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1073)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 245)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1134)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 54)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1134)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 246)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1135)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 55)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1135)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 247)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1136)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 56)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1136)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 248)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1197)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 57)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1197)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 249)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1198)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 58)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1198)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 250)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1199)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 59)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1199)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 251)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1260)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 60)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1260)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 252)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1261)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 61)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1261)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 253)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1262)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 62)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1262)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 254)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1323)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 63)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1323)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 255)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1324)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 64)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1324)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 256)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1325)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 65)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1325)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 257)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1386)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 66)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1386)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 258)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1387)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 67)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1387)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 259)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1388)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 68)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1388)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 260)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1449)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 69)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1449)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 261)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1450)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 70)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1450)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 262)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1451)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 71)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1451)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 263)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1512)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 72)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1512)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 264)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1513)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 73)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1513)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 265)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1514)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 74)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1514)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 266)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1575)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 75)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1575)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 267)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1576)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 76)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1576)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 268)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1577)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 77)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1577)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 269)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1638)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 78)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1638)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 270)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1639)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 79)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1639)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 271)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1640)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 80)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1640)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 272)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1701)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 81)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1701)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 273)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1702)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 82)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1702)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 274)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1703)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 83)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1703)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 275)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1764)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 84)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1764)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 276)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1765)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 85)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1765)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 277)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1766)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 86)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1766)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 278)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1827)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 87)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1827)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 279)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1828)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 88)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1828)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 280)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1829)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 89)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1829)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 281)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1890)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 90)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1890)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 282)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1891)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 91)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1891)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 283)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1892)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 92)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1892)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 284)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1953)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 93)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1953)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 285)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1954)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 94)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1954)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 286)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1955)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 95)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 1955)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 287)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2016)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 96)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2016)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 288)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2017)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 97)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2017)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 289)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2018)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 98)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2018)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 290)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2079)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 99)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2079)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 291)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2080)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 100)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2080)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 292)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2081)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 101)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2081)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 293)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2142)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 102)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2142)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 294)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2143)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 103)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2143)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 295)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2144)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 104)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2144)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 296)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2205)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 105)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2205)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 297)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2206)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 106)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2206)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 298)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2207)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 107)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2207)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 299)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2268)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 108)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2268)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 300)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2269)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 109)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2269)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 301)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2270)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 110)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2270)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 302)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2331)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 111)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2331)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 303)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2332)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 112)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2332)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 304)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2333)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 113)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2333)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 305)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2394)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 114)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2394)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 306)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2395)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 115)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2395)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 307)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2396)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 116)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2396)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 308)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2457)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 117)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2457)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 309)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2458)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 118)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2458)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 310)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2459)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 119)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2459)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 311)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2520)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 120)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2520)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 312)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2521)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 121)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2521)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 313)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2522)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 122)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2522)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 314)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2583)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 123)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2583)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 315)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2584)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 124)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2584)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 316)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2585)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 125)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2585)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 317)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2646)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 126)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2646)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 318)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2647)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 127)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2647)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 319)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2648)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 128)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2648)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 320)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2709)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 129)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2709)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 321)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2710)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 130)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2710)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 322)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2711)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 131)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2711)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 323)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2772)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 132)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2772)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 324)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2773)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 133)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2773)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 325)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2774)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 134)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2774)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 326)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2835)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 135)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2835)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 327)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2836)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 136)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2836)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 328)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2837)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 137)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2837)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 329)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2898)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 138)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2898)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 330)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2899)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 139)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2899)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 331)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2900)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 140)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2900)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 332)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2961)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 141)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2961)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 333)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2962)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 142)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2962)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 334)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2963)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 143)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 2963)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 335)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3024)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 144)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3024)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 336)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3025)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 145)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3025)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 337)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3026)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 146)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3026)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 338)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3087)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 147)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3087)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 339)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3088)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 148)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3088)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 340)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3089)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 149)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3089)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 341)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3150)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 150)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3150)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 342)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3151)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 151)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3151)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 343)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3152)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 152)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3152)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 344)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3213)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 153)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3213)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 345)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3214)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 154)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3214)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 346)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3215)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 155)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3215)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 347)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3276)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 156)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3276)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 348)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3277)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 157)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3277)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 349)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3278)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 158)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3278)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 350)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3339)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 159)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3339)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 351)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3340)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 160)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3340)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 352)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3341)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 161)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3341)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 353)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3402)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 162)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3402)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 354)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3403)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 163)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3403)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 355)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3404)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 164)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3404)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 356)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3465)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 165)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3465)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 357)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3466)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 166)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3466)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 358)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3467)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 167)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3467)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 359)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3528)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 168)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3528)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 360)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3529)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 169)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3529)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 361)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3530)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 170)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3530)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 362)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3591)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 171)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3591)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 363)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3592)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 172)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3592)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 364)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3593)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 173)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3593)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 365)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3654)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 174)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3654)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 366)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3655)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 175)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3655)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 367)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3656)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 176)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3656)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 368)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3717)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 177)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3717)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 369)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3718)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 178)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3718)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 370)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3719)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 179)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3719)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 371)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3780)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 180)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3780)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 372)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3781)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 181)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3781)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 373)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3782)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 182)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3782)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 374)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3843)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 183)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3843)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 375)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3844)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 184)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3844)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 376)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3845)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 185)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3845)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 377)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3906)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 186)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3906)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 378)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3907)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 187)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3907)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 379)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3908)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 188)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3908)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 380)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3969)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 189)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3969)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 381)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3970)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 190)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3970)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 382)]));
+          conv2d_nchw[0] = (conv2d_nchw[0] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3971)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 191)]));
+          conv2d_nchw[1] = (conv2d_nchw[1] + (pad_temp_shared[(((((((int)threadIdx.x) % 49) / 7) * 9) + (((int)threadIdx.x) % 7)) + 3971)] * kernel_shared[(((((int)threadIdx.x) / 49) * 384) + 383)]));
         }
       }
       for (int i1_inner = 0; i1_inner < 2; ++i1_inner) {
-        for (int i3_inner = 0; i3_inner < 7; ++i3_inner) {
-          compute[((((((((int)blockIdx.x) / 7) * 6272) + (((int)threadIdx.x) * 98)) + (i1_inner * 49)) + ((((int)blockIdx.x) % 7) * 7)) + i3_inner)] = max((conv2d_nchw[((i1_inner * 7) + i3_inner)] + bias[((((((int)blockIdx.x) / 7) * 128) + (((int)threadIdx.x) * 2)) + i1_inner)]), 0.000000e+00f);
-        }
+        compute[((((((int)blockIdx.x) * 196) + ((((int)threadIdx.x) / 49) * 98)) + (i1_inner * 49)) + (((int)threadIdx.x) % 49))] = max((conv2d_nchw[i1_inner] + bias[(((((int)blockIdx.x) * 4) + ((((int)threadIdx.x) / 49) * 2)) + i1_inner)]), 0.000000e+00f);
       }
     }
 
@@ -1377,7 +1435,7 @@ In the example below we resume the status and do more 5 trials.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 5 minutes  25.528 seconds)
+   **Total running time of the script:** ( 5 minutes  28.594 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_conv2d_layer_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
index 22a3a8b39f..315890fd55 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_cuda.rst.txt
@@ -643,7 +643,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-       7.8928       7.8942       7.9029       7.8812       0.0089   
+       7.8539       7.8461       7.8710       7.8445       0.0121   
                
 
 
@@ -671,7 +671,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  1.299 seconds)
+   **Total running time of the script:** ( 1 minutes  0.986 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_cuda.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
index 86583b48df..d54a822b37 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_network_x86.rst.txt
@@ -662,7 +662,7 @@ so we can read the log file and load the best schedules.
     Evaluate inference time cost...
     Execution time summary:
      mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)  
-      749.7531     749.9048     750.1008     749.2537      0.3621   
+      753.0748     752.8119     754.0954     752.3170      0.7495   
                
 
 
@@ -690,7 +690,7 @@ Other Tips
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  32.411 seconds)
+   **Total running time of the script:** ( 1 minutes  31.712 seconds)
 
 
 .. _sphx_glr_download_how_to_tune_with_autoscheduler_tune_network_x86.py:
diff --git a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
index 6a57ddaed8..80346051b1 100644
--- a/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
+++ b/docs/_sources/how_to/tune_with_autoscheduler/tune_sparse_x86.rst.txt
@@ -386,77 +386,28 @@ layout transformation, parallelization, vectorization, unrolling, and operator f
                  placeholder_4: Buffer(placeholder_14: Pointer(float32), float32, [128, 512], []),
                  compute: Buffer(compute_2: Pointer(float32), float32, [128, 512], [])}
       buffer_map = {placeholder_5: placeholder, placeholder_6: placeholder_1, placeholder_7: placeholder_2, placeholder_8: placeholder_3, placeholder_9: placeholder_4, compute_1: compute} {
-      for (i0.outer.i1.outer.fused: int32, 0, 32) "parallel" {
-        allocate(compute_3: Pointer(global float32), float32, [2048]), storage_scope = global {
-          for (i.outer.inner: int32, 0, 2) {
-            for (nb_j.inner: int32, 0, 2) {
-              for (i.inner.init: int32, 0, 32) {
-                let cse_var_1: int32 = (((i.outer.inner*1024) + (i.inner.init*32)) + (nb_j.inner*16))
-                 {
-                  compute_4: Buffer(compute_3, float32, [2048], [])[cse_var_1] = 0f32
-                  compute_4[(cse_var_1 + 1)] = 0f32
-                  compute_4[(cse_var_1 + 2)] = 0f32
-                  compute_4[(cse_var_1 + 3)] = 0f32
-                  compute_4[(cse_var_1 + 4)] = 0f32
-                  compute_4[(cse_var_1 + 5)] = 0f32
-                  compute_4[(cse_var_1 + 6)] = 0f32
-                  compute_4[(cse_var_1 + 7)] = 0f32
-                  compute_4[(cse_var_1 + 8)] = 0f32
-                  compute_4[(cse_var_1 + 9)] = 0f32
-                  compute_4[(cse_var_1 + 10)] = 0f32
-                  compute_4[(cse_var_1 + 11)] = 0f32
-                  compute_4[(cse_var_1 + 12)] = 0f32
-                  compute_4[(cse_var_1 + 13)] = 0f32
-                  compute_4[(cse_var_1 + 14)] = 0f32
-                  compute_4[(cse_var_1 + 15)] = 0f32
-                }
+      for (i0.outer: int32, 0, 64) "parallel" {
+        allocate(compute_3: Pointer(global float32), float32, [64]), storage_scope = global;
+        for (i1.outer: int32, 0, 16) {
+          for (nb_j.inner: int32, 0, 2) {
+            for (i.inner.init: int32, 0, 2) {
+              for (j.init: int32, 0, 16) {
+                compute_4: Buffer(compute_3, float32, [64], [])[(((i.inner.init*32) + (nb_j.inner*16)) + j.init)] = 0f32
               }
-              for (elem_idx: int32, 0, let cse_var_2: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner) in (placeholder_15: Buffer(placeholder_13, int32, [33], [])[(cse_var_2 + 1)] - placeholder_15[cse_var_2])) {
-                for (i.inner: int32, 0, 32) {
-                  let cse_var_21: int32 = (elem_idx*16)
-                  let cse_var_20: int32 = ((floormod(i0.outer.i1.outer.fused, 16)*2) + nb_j.inner)
-                  let cse_var_19: int32 = (((i.outer.inner*1024) + (i.inner*32)) + (nb_j.inner*16))
-                  let cse_var_18: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*16384) + (i.outer.inner*8192)) + (i.inner*256))
-                  let cse_var_17: int32 = (cse_var_19 + 9)
-                  let cse_var_16: int32 = (cse_var_19 + 8)
-                  let cse_var_15: int32 = (cse_var_19 + 7)
-                  let cse_var_14: int32 = (cse_var_19 + 6)
-                  let cse_var_13: int32 = (cse_var_19 + 5)
-                  let cse_var_12: int32 = (cse_var_19 + 4)
-                  let cse_var_11: int32 = (cse_var_19 + 3)
-                  let cse_var_10: int32 = (cse_var_19 + 2)
-                  let cse_var_9: int32 = (cse_var_19 + 15)
-                  let cse_var_8: int32 = (cse_var_19 + 14)
-                  let cse_var_7: int32 = (cse_var_19 + 13)
-                  let cse_var_6: int32 = (cse_var_19 + 12)
-                  let cse_var_5: int32 = (cse_var_19 + 11)
-                  let cse_var_4: int32 = (cse_var_19 + 10)
-                  let cse_var_3: int32 = (cse_var_19 + 1)
-                   {
-                    compute_4[cse_var_19] = (compute_4[cse_var_19] + (placeholder_16: Buffer(placeholder_11, float32, [78656], [])[((placeholder_15[cse_var_20]*16) + cse_var_21)]*max(placeholder_17: Buffer(placeholder_10, float32, [32768], [])[(cse_var_18 + placeholder_18: Buffer(placeholder_12, int32, [4916], [])[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_3] = (compute_4[cse_var_3] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 1)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_10] = (compute_4[cse_var_10] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 2)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_11] = (compute_4[cse_var_11] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 3)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_12] = (compute_4[cse_var_12] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 4)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_13] = (compute_4[cse_var_13] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 5)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_14] = (compute_4[cse_var_14] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 6)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_15] = (compute_4[cse_var_15] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 7)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_16] = (compute_4[cse_var_16] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 8)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_17] = (compute_4[cse_var_17] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 9)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_4] = (compute_4[cse_var_4] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 10)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_5] = (compute_4[cse_var_5] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 11)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_6] = (compute_4[cse_var_6] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 12)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_7] = (compute_4[cse_var_7] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 13)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_8] = (compute_4[cse_var_8] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 14)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                    compute_4[cse_var_9] = (compute_4[cse_var_9] + (placeholder_16[(((placeholder_15[cse_var_20]*16) + cse_var_21) + 15)]*max(placeholder_17[(cse_var_18 + placeholder_18[(placeholder_15[cse_var_20] + elem_idx)])], 0f32)))
-                  }
+            }
+            for (elem_idx: int32, 0, let cse_var_1: int32 = ((i1.outer*2) + nb_j.inner) in (placeholder_15: Buffer(placeholder_13, int32, [33], [])[(cse_var_1 + 1)] - placeholder_15[cse_var_1])) {
+              for (i.inner: int32, 0, 2) {
+                for (j: int32, 0, 16) {
+                  let cse_var_3: int32 = ((i1.outer*2) + nb_j.inner)
+                  let cse_var_2: int32 = (((i.inner*32) + (nb_j.inner*16)) + j)
+                  compute_4[cse_var_2] = (compute_4[cse_var_2] + (placeholder_16: Buffer(placeholder_11, float32, [78656], [])[(((placeholder_15[cse_var_3]*16) + (elem_idx*16)) + j)]*max(placeholder_17: Buffer(placeholder_10, float32, [32768], [])[(((i0.outer*512) + (i.inner*256)) + placeholder_18: Buffer(placeholder_12, int32, [4916], [])[(placeholder_15[cse_var_3] + elem_idx)])], 0f32)))
                 }
               }
             }
           }
-          for (i0.inner: int32, 0, 64) {
-            let cse_var_22: int32 = (((floordiv(i0.outer.i1.outer.fused, 16)*32768) + (i0.inner*512)) + (floormod(i0.outer.i1.outer.fused, 16)*32))
-            compute_5: Buffer(compute_2, float32, [65536], [])[ramp(cse_var_22, 1, 32)] = max((compute_4[ramp((i0.inner*32), 1, 32)] + placeholder_19: Buffer(placeholder_14, float32, [65536], [])[ramp(cse_var_22, 1, 32)]), broadcast(0f32, 32))
+          for (i0.inner: int32, 0, 2) {
+            let cse_var_4: int32 = (((i0.outer*1024) + (i0.inner*512)) + (i1.outer*32))
+            compute_5: Buffer(compute_2, float32, [65536], [])[ramp(cse_var_4, 1, 32)] = max((compute_4[ramp((i0.inner*32), 1, 32)] + placeholder_19: Buffer(placeholder_14, float32, [65536], [])[ramp(cse_var_4, 1, 32)]), broadcast(0f32, 32))
           }
         }
       }
@@ -512,7 +463,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 1.726 ms
+    Execution time of this operator: 1.872 ms
 
 
 
diff --git a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
index e9429cece1..ae274ab131 100644
--- a/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:40.102** total execution time for **how_to_tune_with_autotvm** files:
+**00:44.517** total execution time for **how_to_tune_with_autotvm** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:40.068 | 0.0 MB |
+| :ref:`sphx_glr_how_to_tune_with_autotvm_tune_conv2d_cuda.py` (``tune_conv2d_cuda.py``)           | 00:44.482 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_tune_with_autotvm_tune_relay_x86.py` (``tune_relay_x86.py``)               | 00:00.020 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
index 58801d2c7c..435a06b503 100644
--- a/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
+++ b/docs/_sources/how_to/tune_with_autotvm/tune_conv2d_cuda.rst.txt
@@ -387,8 +387,9 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 2, 64]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 64, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5122684
-    No: 2   GFLOPS: 0.00/0.00       result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 1, 64]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 32]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10212162
+    No: 2   GFLOPS: 34.97/34.97     result: MeasureResult(costs=(0.006620220352941177,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.395618915557861, timestamp=1669628709.695415) [('tile_f', [-1, 4, 1, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 8, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,1984318
+    No: 3   GFLOPS: 0.00/34.97      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -510,9 +511,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 2, 16]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 256, 2]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9358972
-    No: 3   GFLOPS: 36.45/36.45     result: MeasureResult(costs=(0.006351378578947369,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.12886381149292, timestamp=1669626231.419011)  [('tile_f', [-1, 32, 16, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 1, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,423099
-    No: 4   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 2, 64]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 2]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7987086
+    No: 4   GFLOPS: 0.00/34.97      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -634,254 +634,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 32, 2]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 16, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,1988232
-    No: 5   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
-        func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
-        func = build(s, args, target_host=task.target_host, runtime=runtime)
-      File "/workspace/python/tvm/driver/build_module.py", line 227, in build
-        input_mod = lower(inputs, args, name=name, binds=binds)
-      File "/workspace/python/tvm/driver/build_module.py", line 134, in lower
-        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 331, in tvm._ffi._cy3.core.PackedFuncBase.__call__
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 276, in tvm._ffi._cy3.core.FuncCall
-      File "tvm/_ffi/_cython/./base.pxi", line 181, in tvm._ffi._cy3.core.CHECK_CALL
-    tvm._ffi.base.TVMError: Traceback (most recent call last):
-      24: TVMFuncCall
-            at ../src/runtime/c_runtime_api.cc:477
-      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      22: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      21: operator()
-            at ../include/tvm/runtime/packed_func.h:1731
-      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
-            at ../include/tvm/runtime/packed_func.h:1671
-      19: run<>
-            at ../include/tvm/runtime/packed_func.h:1631
-      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1646
-      13: operator()
-            at ../src/driver/driver_api.cc:389
-      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, tvm::GlobalVarSupply, bool)
-            at ../src/driver/driver_api.cc:375
-      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
-            at ../src/driver/driver_api.cc:270
-      10: tvm::transform::Pass::operator()(tvm::IRModule) const
-            at ../src/ir/transform.cc:258
-      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:453
-      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/tir/ir/transform.cc:100
-      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
-            at ../include/tvm/runtime/packed_func.h:1750
-      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
-            at ../include/tvm/runtime/packed_func.h:1694
-      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
-            at ../include/tvm/runtime/packed_func.h:1618
-      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      1: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      0: operator()
-            at ../src/runtime/c_runtime_api.cc:534
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
-        raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel
-
-    Traceback (most recent call last):
-      24: TVMFuncCall
-            at ../src/runtime/c_runtime_api.cc:477
-      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      22: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      21: operator()
-            at ../include/tvm/runtime/packed_func.h:1731
-      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
-            at ../include/tvm/runtime/packed_func.h:1671
-      19: run<>
-            at ../include/tvm/runtime/packed_func.h:1631
-      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1646
-      13: operator()
-            at ../src/driver/driver_api.cc:389
-      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, tvm::GlobalVarSupply, bool)
-            at ../src/driver/driver_api.cc:375
-      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
-            at ../src/driver/driver_api.cc:270
-      10: tvm::transform::Pass::operator()(tvm::IRModule) const
-            at ../src/ir/transform.cc:258
-      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:453
-      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/tir/ir/transform.cc:100
-      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
-            at ../include/tvm/runtime/packed_func.h:1750
-      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
-            at ../include/tvm/runtime/packed_func.h:1694
-      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
-            at ../include/tvm/runtime/packed_func.h:1618
-      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      1: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      0: operator()
-            at ../src/runtime/c_runtime_api.cc:534
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
-        raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 32, 1]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 8, 32]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4991401
-    No: 6   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
-        func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
-        func = build(s, args, target_host=task.target_host, runtime=runtime)
-      File "/workspace/python/tvm/driver/build_module.py", line 227, in build
-        input_mod = lower(inputs, args, name=name, binds=binds)
-      File "/workspace/python/tvm/driver/build_module.py", line 134, in lower
-        return ffi.lower_schedule(inp, args, name, binds, simple_mode)
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 331, in tvm._ffi._cy3.core.PackedFuncBase.__call__
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 276, in tvm._ffi._cy3.core.FuncCall
-      File "tvm/_ffi/_cython/./base.pxi", line 181, in tvm._ffi._cy3.core.CHECK_CALL
-    tvm._ffi.base.TVMError: Traceback (most recent call last):
-      24: TVMFuncCall
-            at ../src/runtime/c_runtime_api.cc:477
-      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      22: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      21: operator()
-            at ../include/tvm/runtime/packed_func.h:1731
-      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
-            at ../include/tvm/runtime/packed_func.h:1671
-      19: run<>
-            at ../include/tvm/runtime/packed_func.h:1631
-      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1646
-      13: operator()
-            at ../src/driver/driver_api.cc:389
-      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, tvm::GlobalVarSupply, bool)
-            at ../src/driver/driver_api.cc:375
-      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
-            at ../src/driver/driver_api.cc:270
-      10: tvm::transform::Pass::operator()(tvm::IRModule) const
-            at ../src/ir/transform.cc:258
-      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:453
-      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/tir/ir/transform.cc:100
-      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
-            at ../include/tvm/runtime/packed_func.h:1750
-      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
-            at ../include/tvm/runtime/packed_func.h:1694
-      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
-            at ../include/tvm/runtime/packed_func.h:1618
-      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      1: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      0: operator()
-            at ../src/runtime/c_runtime_api.cc:534
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
-        raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel
-
-    Traceback (most recent call last):
-      24: TVMFuncCall
-            at ../src/runtime/c_runtime_api.cc:477
-      23: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      22: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      21: operator()
-            at ../include/tvm/runtime/packed_func.h:1731
-      20: unpack_call<tvm::IRModule, 5, tvm::<lambda(tvm::te::Schedule, const tvm::runtime::Array<tvm::runtime::ObjectRef>&, const tvm::runtime::String&, const tvm::runtime::Map<tvm::te::Tensor, tvm::tir::Buffer>&, bool)> >
-            at ../include/tvm/runtime/packed_func.h:1671
-      19: run<>
-            at ../include/tvm/runtime/packed_func.h:1631
-      18: run<tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      17: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      16: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      15: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1631
-      14: run<tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_, tvm::runtime::TVMMovableArgValueWithContext_>
-            at ../include/tvm/runtime/packed_func.h:1646
-      13: operator()
-            at ../src/driver/driver_api.cc:389
-      12: tvm::LowerSchedule(tvm::te::Schedule, tvm::runtime::Array<tvm::runtime::ObjectRef, void> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<tvm::te::Tensor, tvm::tir::Buffer, std::hash<tvm::te::Tensor>, std::equal_to<tvm::te::Tensor>, std::allocator<std::pair<tvm::te::Tensor const, tvm::tir::Buffer> > > const&, tvm::GlobalVarSupply, bool)
-            at ../src/driver/driver_api.cc:375
-      11: tvm::LowerWithPassList(tvm::IRModule, tvm::runtime::Array<tvm::transform::Pass, void>)
-            at ../src/driver/driver_api.cc:270
-      10: tvm::transform::Pass::operator()(tvm::IRModule) const
-            at ../src/ir/transform.cc:258
-      9: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      8: tvm::transform::SequentialNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:453
-      7: tvm::transform::Pass::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/ir/transform.cc:274
-      6: tvm::tir::transform::PrimFuncPassNode::operator()(tvm::IRModule, tvm::transform::PassContext const&) const
-            at ../src/tir/ir/transform.cc:100
-      5: tvm::runtime::TypedPackedFunc<tvm::tir::PrimFunc (tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext)>::operator()(tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext) const
-            at ../include/tvm/runtime/packed_func.h:1750
-      4: tvm::tir::PrimFunc tvm::runtime::detail::typed_packed_call_dispatcher<tvm::tir::PrimFunc>::run<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::runtime::PackedFunc const&, tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&)
-            at ../include/tvm/runtime/packed_func.h:1694
-      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<tvm::tir::PrimFunc, tvm::IRModule, tvm::transform::PassContext>(tvm::tir::PrimFunc&&, tvm::IRModule&&, tvm::transform::PassContext&&) const
-            at ../include/tvm/runtime/packed_func.h:1618
-      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      1: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      0: operator()
-            at ../src/runtime/c_runtime_api.cc:534
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
-        raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 8, 2, 8]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 2, 128]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,8695206
-    No: 7   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 1, 16]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 16, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6277644
+    No: 5   GFLOPS: 0.00/34.97      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 142, in build
         res = future.result()
       File "/usr/lib/python3.7/concurrent/futures/_base.py", line 435, in result
@@ -898,8 +652,8 @@ for this template
         raise TimeoutError()
     TimeoutError
 
-            [('tile_f', [-1, 1, 2, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 64, 1]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,3315410
-    No: 8   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+            [('tile_f', [-1, 64, 2, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 2]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2945914
+    No: 6   GFLOPS: 0.00/34.97      result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1021,8 +775,10 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 8, 2, 8]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 32, 16]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4786906
-    No: 9   GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 16, 2]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 64]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3845246
+    No: 7   GFLOPS: 4.13/34.97      result: MeasureResult(costs=(0.0560691985,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.7680633068084717, timestamp=1669628723.7843988)       [('tile_f', [-1, 2, 4, 16]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,6045116
+    No: 8   GFLOPS: 803.88/803.88   result: MeasureResult(costs=(0.00028797948457350274,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.594731330871582, timestamp=1669628724.6996355)      [('tile_f', [-1, 1, 4, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 16]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7285415
+    No: 9   GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1144,8 +900,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 32, 4, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 16, 32]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4220557
-    No: 10  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 8, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 128]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,1336089
+    No: 10  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1267,8 +1023,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 8, 1, 64]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 64, 8]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10184223
-    No: 11  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 64, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 64, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4316005
+    No: 11  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1390,8 +1146,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 4, 8]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 64]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4226791
-    No: 12  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 512, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9529134
+    No: 12  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1513,8 +1269,9 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 1, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 8, 64]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9270141
-    No: 13  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 64, 1, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 64]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,8296206
+    No: 13  GFLOPS: 2.13/803.88     result: MeasureResult(costs=(0.10845242299999999,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.959181547164917, timestamp=1669628729.2698307) [('tile_f', [-1, 32, 1, 2]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 4, 4]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,74640
+    No: 14  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1636,8 +1393,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 16, 4, 4]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 2, 4]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,5105439
-    No: 14  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 1, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 64]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,8492661
+    No: 15  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -1759,162 +1516,8 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 8, 32]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 512]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8905357
-    No: 15  GFLOPS: 0.00/36.45      result: Traceback (most recent call last):
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 738, in __call__
-        yield remote, remote.load_module(os.path.split(build_result.filename)[1])
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 702, in run_through_rpc
-        costs = time_f(*args).results
-      File "/workspace/python/tvm/runtime/module.py", line 357, in evaluator
-        blob = feval(*args)
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 331, in tvm._ffi._cy3.core.PackedFuncBase.__call__
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 262, in tvm._ffi._cy3.core.FuncCall
-      File "tvm/_ffi/_cython/./packed_func.pxi", line 251, in tvm._ffi._cy3.core.FuncCall3
-      File "tvm/_ffi/_cython/./base.pxi", line 181, in tvm._ffi._cy3.core.CHECK_CALL
-    tvm._ffi.base.TVMError: Traceback (most recent call last):
-      4: TVMFuncCall
-            at ../src/runtime/c_runtime_api.cc:477
-      3: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      2: tvm::runtime::RPCWrappedFunc::operator()(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../src/runtime/rpc/rpc_module.cc:129
-      1: tvm::runtime::RPCClientSession::CallFunc(void*, TVMValue const*, int const*, int, std::function<void (tvm::runtime::TVMArgs)> const&)
-            at ../src/runtime/rpc/rpc_endpoint.cc:1012
-      0: tvm::runtime::RPCEndpoint::CallFunc(void*, TVMValue const*, int const*, int, std::function<void (tvm::runtime::TVMArgs)>)
-            at ../src/runtime/rpc/rpc_endpoint.cc:804
-      File "../src/runtime/rpc/rpc_endpoint.cc", line 804
-    TVMError: 
-    ---------------------------------------------------------------
-    An error occurred during the execution of TVM.
-    For more information, please see: https://tvm.apache.org/docs/errors.html
-    ---------------------------------------------------------------
-      Check failed: (code == RPCCode::kReturn) is false: code=kShutdown
-
-    During handling of the above exception, another exception occurred:
-
-    Traceback (most recent call last):
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 702, in run_through_rpc
-        costs = time_f(*args).results
-      File "/usr/lib/python3.7/contextlib.py", line 130, in __exit__
-        self.gen.throw(type, value, traceback)
-      File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 742, in __call__
-        remote.remove(build_result.filename)
-      File "/workspace/python/tvm/rpc/client.py", line 144, in remove
-        self._remote_funcs["remove"] = self.get_function("tvm.rpc.server.remove")
-      File "/workspace/python/tvm/rpc/client.py", line 72, in get_function
-        return self._sess.get_function(name)
-      File "/workspace/python/tvm/runtime/module.py", line 171, in get_function
-        self.handle, c_str(name), ctypes.c_int(query_imports), ctypes.byref(ret_handle)
-      File "/workspace/python/tvm/_ffi/base.py", line 348, in check_call
-        raise get_last_ffi_error()
-    tvm._ffi.base.TVMError: Traceback (most recent call last):
-      52: 0xffffffffffffffff
-      51: _start
-      50: __libc_start_main
-      49: _Py_UnixMain
-      48: 0x0000000000650da0
-      47: 0x0000000000650afa
-      46: _PyFunction_FastCallDict
-      45: _PyEval_EvalCodeWithName
-      44: _PyEval_EvalFrameDefault
-      43: _PyFunction_FastCallKeywords
-      42: _PyEval_EvalCodeWithName
-      41: _PyEval_EvalFrameDefault
-      40: _PyMethodDef_RawFastCallKeywords
-      39: 0x0000000000546369
-      38: _PyEval_EvalCodeWithName
-      37: _PyEval_EvalFrameDefault
-      36: _PyFunction_FastCallKeywords
-      35: _PyEval_EvalCodeWithName
-      34: _PyEval_EvalFrameDefault
-      33: _PyFunction_FastCallDict
-      32: _PyEval_EvalCodeWithName
-      31: _PyEval_EvalFrameDefault
-      30: _PyObject_FastCallDict
-      29: 0x00000000004c06e1
-      28: _PyFunction_FastCallDict
-      27: _PyEval_EvalFrameDefault
-      26: _PyMethodDescr_FastCallKeywords
-      25: 0x00000000005dcb58
-      24: 0x00000000005dc83f
-      23: 0x00000000004ba127
-      22: _PyEval_EvalFrameDefault
-      21: _PyFunction_FastCallKeywords
-      20: _PyEval_EvalFrameDefault
-      19: _PyFunction_FastCallKeywords
-      18: _PyEval_EvalFrameDefault
-      17: _PyFunction_FastCallKeywords
-      16: _PyEval_EvalCodeWithName
-      15: _PyEval_EvalFrameDefault
-      14: 0x0000000000537c30
-      13: _PyObject_FastCallKeywords
-      12: 0x00007f7950d88fa2
-      11: _ctypes_callproc
-      10: ffi_call
-      9: ffi_call_unix64
-      8: TVMModGetFunction
-            at ../src/runtime/c_runtime_api.cc:408
-      7: tvm::runtime::ModuleNode::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)
-            at ../src/runtime/module.cc:66
-      6: tvm::runtime::RPCModuleNode::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, tvm::runtime::ObjectPtr<tvm::runtime::Object> const&)
-            at ../src/runtime/rpc/rpc_module.cc:185
-      5: tvm::runtime::RPCClientSession::GetFunction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
-            at ../src/runtime/rpc/rpc_endpoint.cc:1007
-      4: tvm::runtime::TVMRetValue tvm::runtime::RPCEndpoint::SysCallRemote<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(tvm::runtime::RPCCode, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
-            at ../src/runtime/rpc/rpc_endpoint.h:223
-      3: tvm::runtime::TVMRetValue tvm::runtime::PackedFunc::operator()<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>(int&&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const
-            at ../include/tvm/runtime/packed_func.h:1618
-      2: tvm::runtime::PackedFuncObj::CallPacked(tvm::runtime::TVMArgs, tvm::runtime::TVMRetValue*) const
-            at ../include/tvm/runtime/packed_func.h:1217
-      1: Call
-            at ../include/tvm/runtime/packed_func.h:1213
-      0: operator()
-            at ../src/runtime/rpc/rpc_endpoint.cc:684
-      File "../src/runtime/rpc/rpc_endpoint.cc", line 684
-    TVMError: 
-    ---------------------------------------------------------------
-    An error occurred during the execution of TVM.
-    For more information, please see: https://tvm.apache.org/docs/errors.html
-    ---------------------------------------------------------------
-      Check failed: (code == RPCCode::kReturn) is false: code=1
-
-    Traceback (most recent call last):
-      52: 0xffffffffffffffff
-      51: _start
-      50: __libc_start_main
-      49: _Py_UnixMain
-      48: 0x0000000000650da0
-      47: 0x0000000000650afa
-      46: _PyFunction_FastCallDict
-      45: _PyEval_EvalCodeWithName
-      44: _PyEval_EvalFrameDefault
-      43: _PyFunction_FastCallKeywords
-      42: _PyEval_EvalCodeWithName
-      41: _PyEval_EvalFrameDefault
-      40: _PyMethodDef_RawFastCallKeywords
-      39: 0x0000000000546369
-      38: _PyEval_EvalCodeWithName
-      37: _PyEval_EvalFrameDefault
-      36: _PyFunction_FastCallKeywords
-      35: _PyEval_EvalCodeWithName
-      34: _PyEval_EvalFrameDefault
-      33: _PyFunction_FastCallDict
-      32: _PyEval_EvalCodeWithName
-      31: _PyEval_EvalFrameDefault
-      30: _PyObject_FastCallDict
-      29: 0x00000000004c06e1
-      28: _PyFunction_FastCallDict
-      27: _PyEval_EvalFrameDefault
-      26: _PyMethodDescr_FastCallKeywords
-      25: 0x00000000005dcb58
-      24: 0x00000000005dc83f
-      23: 0x00000000004ba127
-      22: _PyEval_EvalFrameDefault
-      21: _PyFunction_FastCallKeywords
-      20: _PyEval_EvalFrameDefault
-      19: _PyFunction_FastCall      [('tile_f', [-1, 32, 1, 16]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,3488269
-    No: 16  GFLOPS: 519.22/519.22   result: MeasureResult(costs=(0.0004458666472222222,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.265880823135376, timestamp=1669626253.6828759)       [('tile_f', [-1, 4, 2, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,586532
-    No: 17  GFLOPS: 0.00/519.22     result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 1, 64]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 4, 8]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,10171902
+    No: 16  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -2036,8 +1639,9 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 2, 128, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 128]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5405058
-    No: 18  GFLOPS: 0.00/519.22     result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 16, 4, 2]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 64, 8]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4763296
+    No: 17  GFLOPS: 11.29/803.88    result: MeasureResult(costs=(0.020500762833333335,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.721882581710815, timestamp=1669628734.215702) [('tile_f', [-1, 4, 4, 2]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,9299694
+    No: 18  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -2159,8 +1763,9 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 32, 1]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 8, 8]), ('tile_ry', [-1, 1, 3]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 0)],None,2235902
-    No: 19  GFLOPS: 0.00/519.22     result: Traceback (most recent call last):
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 8, 2, 32]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 128]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 1)],None,5988593
+    No: 19  GFLOPS: 89.66/803.88    result: MeasureResult(costs=(0.0025819905384615385,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.910473108291626, timestamp=1669628734.8620212)       [('tile_f', [-1, 4, 8, 1]), ('tile_y', [-1, 7, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 1, 1]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 1)],None,8908489
+    No: 20  GFLOPS: 0.00/803.88     result: Traceback (most recent call last):
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 588, in __call__
         func, arg_info = _build_func_common(measure_input, self.runtime, **kwargs)
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 540, in _build_func_common
@@ -2282,8 +1887,7 @@ for this template
       File "tvm/_ffi/_cython/./packed_func.pxi", line 56, in tvm._ffi._cy3.core.tvm_callback
       File "/workspace/python/tvm/autotvm/measure/measure_methods.py", line 871, in verify_pass
         raise InstantiationError("Skipped because of invalid gpu kernel")
-    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 4, 32, 2]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 7]), ('tile_rc', [-1, 16, 4]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7246892
-    No: 20  GFLOPS: 118.66/519.22   result: MeasureResult(costs=(0.001950959423076923,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.228919506072998, timestamp=1669626255.1327748)        [('tile_f', [-1, 1, 4, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 7, 1, 1]), ('tile_rc', [-1, 4, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 1, 3]), ('auto_unroll_max_step', 1500), ('unroll_explicit', 0)],None,4655095
+    tvm.autotvm.task.space.InstantiationError: Skipped because of invalid gpu kernel        [('tile_f', [-1, 1, 1, 128]), ('tile_y', [-1, 1, 1, 1]), ('tile_x', [-1, 1, 1, 1]), ('tile_rc', [-1, 32, 2]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7797010
 
 
 
@@ -2338,9 +1942,9 @@ and measure running time.
     Finish loading 20 records
 
     Best config:
-    [('tile_f', [-1, 4, 2, 1]), ('tile_y', [-1, 1, 7, 1]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 2, 1]), ('tile_ry', [-1, 1, 1]), ('tile_rx', [-1, 3, 1]), ('auto_unroll_max_step', 0), ('unroll_explicit', 0)],None,586532
+    [('tile_f', [-1, 1, 4, 4]), ('tile_y', [-1, 1, 1, 7]), ('tile_x', [-1, 1, 7, 1]), ('tile_rc', [-1, 1, 16]), ('tile_ry', [-1, 3, 1]), ('tile_rx', [-1, 1, 1]), ('auto_unroll_max_step', 512), ('unroll_explicit', 1)],None,7285415
     Finish loading 20 records
-    Time cost of this operator: 0.000752
+    Time cost of this operator: 0.000591
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
index 86e8fc91db..e6a54039bb 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_autotune.rst.txt
@@ -327,10 +327,10 @@ Timing the untuned program
     ########## Build without Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  310.6     98.644   (1, 2, 10, 10, 3)  2       1        [310.6]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.13      0.994    (1, 6, 10, 10)     1       1        [3.13]            
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         1.14      0.362    (1, 1, 10, 10, 3)  1       1        [1.14]            
-    Total_time                                    -                                             314.87    -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  309.6     98.729   (1, 2, 10, 10, 3)  2       1        [309.6]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       3.021     0.963    (1, 6, 10, 10)     1       1        [3.021]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.963     0.307    (1, 1, 10, 10, 3)  1       1        [0.963]           
+    Total_time                                    -                                             313.584   -        -                  -       -        -                 
 
 
 
@@ -394,10 +394,10 @@ Timing the tuned program
     ########## Build with Autotuning ##########
     Node Name                                     Ops                                           Time(us)  Time(%)  Shape              Inputs  Outputs  Measurements(us)  
     ---------                                     ---                                           --------  -------  -----              ------  -------  ----------------  
-    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  136.7     98.081   (1, 6, 10, 10, 1)  2       1        [136.7]           
-    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       1.813     1.301    (1, 6, 10, 10)     1       1        [1.813]           
-    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         0.862     0.618    (1, 3, 10, 10, 1)  1       1        [0.862]           
-    Total_time                                    -                                             139.375   -        -                  -       -        -                 
+    tvmgen_default_fused_nn_contrib_conv2d_NCHWc  tvmgen_default_fused_nn_contrib_conv2d_NCHWc  180.6     98.221   (1, 1, 10, 10, 6)  2       1        [180.6]           
+    tvmgen_default_fused_layout_transform_1       tvmgen_default_fused_layout_transform_1       2.123     1.154    (1, 6, 10, 10)     1       1        [2.123]           
+    tvmgen_default_fused_layout_transform         tvmgen_default_fused_layout_transform         1.148     0.625    (1, 1, 10, 10, 3)  1       1        [1.148]           
+    Total_time                                    -                                             183.871   -        -                  -       -        -                 
 
 
 
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
index 2de35cb37c..4f083e2077 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_pytorch.rst.txt
@@ -109,7 +109,7 @@ download a cat image and preprocess it to use as the model input.
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torch/ao/quantization/utils.py:281: UserWarning: must run observer before calling calculate_qparams. Returning default values.
       "must run observer before calling calculate_qparams. " +
     Downloading: "https://download.pytorch.org/models/quantized/mobilenet_v2_qnnpack_37f702c5.pth" to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2_qnnpack_37f702c5.pth
-
      0%|          | 0.00/3.42M [00:00<?, ?B/s]
      9%|9         | 320k/3.42M [00:00<00:01, 3.19MB/s]
     22%|##1       | 768k/3.42M [00:00<00:00, 3.90MB/s]
     38%|###7      | 1.29M/3.42M [00:00<00:00, 4.68MB/s]
     58%|#####8    | 1.99M/3.42M [00:00<00:00, 5.67MB/s]
     84%|########3 | 2.87M/3.42M [00:00<00:00, 6.90MB/s]
    100%|##########| 3.42M/3.42M [00:00<00:00, 6.40MB/s]
+
      0%|          | 0.00/3.42M [00:00<?, ?B/s]
    100%|##########| 3.42M/3.42M [00:00<00:00, 45.4MB/s]
     /workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
       return LooseVersion(torch_ver) > ver
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
@@ -314,7 +314,7 @@ Look up prediction top 1 index in 1000 class synset.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  4.380 seconds)
+   **Total running time of the script:** ( 1 minutes  3.341 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_pytorch.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
index 9400d1ad76..a0a429d342 100644
--- a/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/micro_train.rst.txt
@@ -225,7 +225,7 @@ take about **2 minutes** to download the Stanford Cars, while COCO 2017 validati
  .. code-block:: none
 
 
-    '/tmp/tmpouek94yy/images/random'
+    '/tmp/tmpwdhdsv1q/images/random'
 
 
 
@@ -316,7 +316,7 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
 
 .. image-sg:: /how_to/work_with_microtvm/images/sphx_glr_micro_train_001.png
-   :alt: [1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [0.0, 1.0]
+   :alt: [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [1.0, 0.0], [0.0, 1.0], [1.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 0.0]
    :srcset: /how_to/work_with_microtvm/images/sphx_glr_micro_train_001.png
    :class: sphx-glr-single-img
 
@@ -325,8 +325,8 @@ objects to other stuff? We can display some examples from our datasets using ``m
 
  .. code-block:: none
 
-    /tmp/tmpouek94yy/images/target contains 8144 images
-    /tmp/tmpouek94yy/images/random contains 5000 images
+    /tmp/tmpwdhdsv1q/images/target contains 8144 images
+    /tmp/tmpwdhdsv1q/images/random contains 5000 images
 
 
 
@@ -501,13 +501,13 @@ the time on our validation set).
  .. code-block:: none
 
     Epoch 1/3
-    328/328 - 47s - loss: 0.2075 - accuracy: 0.9306 - val_loss: 0.1527 - val_accuracy: 0.9464 - 47s/epoch - 144ms/step
+    328/328 - 47s - loss: 0.2700 - accuracy: 0.9136 - val_loss: 0.1449 - val_accuracy: 0.9520 - 47s/epoch - 143ms/step
     Epoch 2/3
-    328/328 - 44s - loss: 0.1039 - accuracy: 0.9612 - val_loss: 0.1844 - val_accuracy: 0.9411 - 44s/epoch - 133ms/step
+    328/328 - 43s - loss: 0.1072 - accuracy: 0.9607 - val_loss: 0.1226 - val_accuracy: 0.9539 - 43s/epoch - 132ms/step
     Epoch 3/3
-    328/328 - 44s - loss: 0.0686 - accuracy: 0.9754 - val_loss: 0.1831 - val_accuracy: 0.9445 - 44s/epoch - 133ms/step
+    328/328 - 43s - loss: 0.0699 - accuracy: 0.9742 - val_loss: 0.1387 - val_accuracy: 0.9603 - 43s/epoch - 132ms/step
 
-    <keras.callbacks.History object at 0x7f001d02bf10>
+    <keras.callbacks.History object at 0x7f72546a73d0>
 
 
 
@@ -864,7 +864,7 @@ Arduino tutorial for how to do that `on GitHub <https://github.com/guberti/tvm-a
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 4 minutes  49.304 seconds)
+   **Total running time of the script:** ( 4 minutes  36.325 seconds)
 
 
 .. _sphx_glr_download_how_to_work_with_microtvm_micro_train.py:
diff --git a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
index b93377912b..0e86d4d70b 100644
--- a/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_microtvm/sg_execution_times.rst.txt
@@ -5,18 +5,18 @@
 
 Computation times
 =================
-**06:55.319** total execution time for **how_to_work_with_microtvm** files:
+**06:41.855** total execution time for **how_to_work_with_microtvm** files:
 
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)               | 04:49.304 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_train.py` (``micro_train.py``)               | 04:36.325 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)           | 01:04.380 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_pytorch.py` (``micro_pytorch.py``)           | 01:03.341 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)         | 00:49.941 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_autotune.py` (``micro_autotune.py``)         | 00:50.050 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)                   | 00:07.933 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_aot.py` (``micro_aot.py``)                   | 00:08.359 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)             | 00:03.759 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_microtvm_micro_tflite.py` (``micro_tflite.py``)             | 00:03.778 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_microtvm_micro_reference_vm.py` (``micro_reference_vm.py``) | 00:00.001 | 0.0 MB |
 +---------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
index 2905b4cf48..b2c3362979 100644
--- a/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_relay/sg_execution_times.rst.txt
@@ -5,14 +5,14 @@
 
 Computation times
 =================
-**00:43.404** total execution time for **how_to_work_with_relay** files:
+**00:44.187** total execution time for **how_to_work_with_relay** files:
 
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:32.015 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_pipeline_executor.py` (``using_pipeline_executor.py``) | 00:32.247 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:09.839 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_external_lib.py` (``using_external_lib.py``)           | 00:10.195 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.544 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_build_gcn.py` (``build_gcn.py``)                             | 00:01.740 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.007 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_relay_using_relay_viz.py` (``using_relay_viz.py``)                 | 00:00.006 | 0.0 MB |
 +----------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
index fd187e2e2a..18ba48a6aa 100644
--- a/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/intrin_math.rst.txt
@@ -261,7 +261,7 @@ The following example customizes CUDA lowering rule for :code:`exp`.
  .. code-block:: none
 
 
-    <function my_cuda_math_rule at 0x7efe54c92cb0>
+    <function my_cuda_math_rule at 0x7f72b700d680>
 
 
 
diff --git a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
index d8f7065c34..0e027d944e 100644
--- a/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/sg_execution_times.rst.txt
@@ -5,22 +5,22 @@
 
 Computation times
 =================
-**00:04.530** total execution time for **how_to_work_with_schedules** files:
+**00:08.845** total execution time for **how_to_work_with_schedules** files:
 
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:02.169 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_intrin_math.py` (``intrin_math.py``)                 | 00:06.412 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.135 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tensorize.py` (``tensorize.py``)                     | 00:01.105 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.516 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_reduction.py` (``reduction.py``)                     | 00:00.570 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.498 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_scan.py` (``scan.py``)                               | 00:00.550 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.115 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_extern_op.py` (``extern_op.py``)                     | 00:00.113 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.049 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_schedule_primitives.py` (``schedule_primitives.py``) | 00:00.048 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.029 | 0.0 MB |
+| :ref:`sphx_glr_how_to_work_with_schedules_tedd.py` (``tedd.py``)                               | 00:00.028 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_how_to_work_with_schedules_tuple_inputs.py` (``tuple_inputs.py``)               | 00:00.019 | 0.0 MB |
 +------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
index 98ac66aaba..fcc13021ad 100644
--- a/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
+++ b/docs/_sources/how_to/work_with_schedules/tensorize.rst.txt
@@ -343,7 +343,7 @@ The importing needs to happen before the tensorized GEMV being executed.
                  B: Buffer(B_2: Pointer(float32), float32, [512, 64], []),
                  C: Buffer(C_2: Pointer(float32), float32, [1024, 512], [])}
       buffer_map = {A_1: A, B_1: B, C_1: C} {
-      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmp0z6k7f0o/input0.cc'\nsource_filename = \"/tmp/tmp0z6k7f0o/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
+      attr [IterVar(i: int32, (nullptr), "DataPar", "")] "pragma_import_llvm" = "; ModuleID = '/tmp/tmpvsd38rzr/input0.cc'\nsource_filename = \"/tmp/tmpvsd38rzr/input0.cc\"\ntarget datalayout = \"e-m:e-i64:64-f80:128-n8:16:32:64-S128\"\ntarget triple = \"x86_64-pc-linux-gnu\"\n\n; Function Attrs: noinline nounwind optnone uwtable\ndefine dso_local i32 @gemv_update(float*, float*, float*, i32, i32, i32) #0 {\n  %7 = alloca float*, align 8\n  %8 = alloca float*, align 8\n  %9 = alloca floa [...]
       for (i, 0, 1024) {
         for (j.outer: int32, 0, 32) {
           @tir.call_extern("gemv_update", @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), C_2, ((i*512) + (j.outer*16)), 16, 2, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), A_2, (i*64), 64, 1, dtype=handle), @tir.tvm_access_ptr(@tir.type_annotation(, dtype=float32), B_2, (j.outer*1024), 1024, 1, dtype=handle), 16, 64, 64, dtype=int32)
diff --git a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
index 080335dab3..2771f31dcc 100644
--- a/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/autotvm/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:26.945** total execution time for **topic_vta_tutorials_autotvm** files:
+**00:26.644** total execution time for **topic_vta_tutorials_autotvm** files:
 
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:26.938 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_relay_vta.py` (``tune_relay_vta.py``) | 00:26.637 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.007 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_autotvm_tune_alu_vta.py` (``tune_alu_vta.py``)     | 00:00.006 | 0.0 MB |
 +---------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
index e1ec7efb3e..60bab0f68f 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_classification.rst.txt
@@ -289,7 +289,7 @@ The compilation steps are:
       DeprecationWarning,
     /workspace/vta/tutorials/frontend/deploy_classification.py:213: DeprecationWarning: legacy graph executor behavior of producing json / lib / params will be removed in the next release. Please see documents of tvm.contrib.graph_executor.GraphModule for the  new recommended usage.
       relay_prog, target=tvm.target.Target(target, host=env.target_host), params=params
-    resnet18_v1 inference graph built in 29.64s!
+    resnet18_v1 inference graph built in 29.39s!
 
 
 
diff --git a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
index f0296a4de9..7d11389c88 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/deploy_detection.rst.txt
@@ -333,7 +333,7 @@ The compilation steps are:
 
     /workspace/python/tvm/relay/build_module.py:348: DeprecationWarning: Please use input parameter mod (tvm.IRModule) instead of deprecated parameter mod (tvm.relay.function.Function)
       DeprecationWarning,
-    yolov3-tiny inference graph built in 20.03s!
+    yolov3-tiny inference graph built in 19.84s!
 
 
 
diff --git a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
index 3396ffd4cf..43d00d14b0 100644
--- a/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/frontend/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**01:41.812** total execution time for **topic_vta_tutorials_frontend** files:
+**01:41.660** total execution time for **topic_vta_tutorials_frontend** files:
 
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 00:52.312 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_detection.py` (``deploy_detection.py``)           | 00:52.252 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 00:49.500 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_frontend_deploy_classification.py` (``deploy_classification.py``) | 00:49.408 | 0.0 MB |
 +------------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
index 3fd1c0e143..5e983b7f36 100644
--- a/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/optimize/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:03.044** total execution time for **topic_vta_tutorials_optimize** files:
+**00:03.168** total execution time for **topic_vta_tutorials_optimize** files:
 
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.644 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_convolution_opt.py` (``convolution_opt.py``)         | 00:02.719 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.400 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_optimize_matrix_multiply_opt.py` (``matrix_multiply_opt.py``) | 00:00.449 | 0.0 MB |
 +--------------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
index 73acce586b..7e3c47aec1 100644
--- a/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
+++ b/docs/_sources/topic/vta/tutorials/sg_execution_times.rst.txt
@@ -5,10 +5,10 @@
 
 Computation times
 =================
-**00:00.695** total execution time for **topic_vta_tutorials** files:
+**00:00.796** total execution time for **topic_vta_tutorials** files:
 
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.376 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_matrix_multiply.py` (``matrix_multiply.py``) | 00:00.420 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.319 | 0.0 MB |
+| :ref:`sphx_glr_topic_vta_tutorials_vta_get_started.py` (``vta_get_started.py``) | 00:00.376 | 0.0 MB |
 +---------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
index 009c0b5156..c536cd2d81 100644
--- a/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/auto_scheduler_matmul_x86.rst.txt
@@ -325,7 +325,7 @@ We build the binary and check its correctness and performance.
 
  .. code-block:: none
 
-    Execution time of this operator: 97.934 ms
+    Execution time of this operator: 95.301 ms
 
 
 
@@ -425,7 +425,7 @@ resume the status and do more 5 trials.
     Resume search:
     /venv/apache-tvm-py3.7/lib/python3.7/site-packages/xgboost/training.py:17: UserWarning: Old style callback is deprecated.  See: https://xgboost.readthedocs.io/en/latest/python/callbacks.html
       warnings.warn(f'Old style callback is deprecated.  See: {link}', UserWarning)
-    *E
+
 
 
 
@@ -443,7 +443,7 @@ operations.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  31.332 seconds)
+   **Total running time of the script:** ( 1 minutes  35.271 seconds)
 
 
 .. _sphx_glr_download_tutorial_auto_scheduler_matmul_x86.py:
diff --git a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
index 853bdb32fc..44f4fafeea 100644
--- a/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_matmul_x86.rst.txt
@@ -450,16 +450,16 @@ reduce variance, we take 5 measurements and average them.
     waiting for device...
     device available
     Get devices for measurement successfully!
-    No: 1   GFLOPS: 12.63/12.63     result: MeasureResult(costs=(0.0212483088,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6079704761505127, timestamp=1669624853.461804)        [('tile_y', [-1, 64]), ('tile_x', [-1, 128])],None,76
-    No: 2   GFLOPS: 12.66/12.66     result: MeasureResult(costs=(0.0212002696,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6759452819824219, timestamp=1669624854.0140076)       [('tile_y', [-1, 1]), ('tile_x', [-1, 64])],None,60
-    No: 3   GFLOPS: 8.60/12.66      result: MeasureResult(costs=(0.031212879800000003,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.837571382522583, timestamp=1669624855.447086) [('tile_y', [-1, 16]), ('tile_x', [-1, 64])],None,64
-    No: 4   GFLOPS: 1.51/12.66      result: MeasureResult(costs=(0.17724532099999998,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.972870349884033, timestamp=1669624859.211555)  [('tile_y', [-1, 1]), ('tile_x', [-1, 1])],None,0
-    No: 5   GFLOPS: 9.08/12.66      result: MeasureResult(costs=(0.029568406599999996,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6832387447357178, timestamp=1669624860.0617573)       [('tile_y', [-1, 16]), ('tile_x', [-1, 32])],None,54
-    No: 6   GFLOPS: 10.51/12.66     result: MeasureResult(costs=(0.0255390934,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.5550482273101807, timestamp=1669624860.6400492)       [('tile_y', [-1, 1]), ('tile_x', [-1, 256])],None,80
-    No: 7   GFLOPS: 12.47/12.66     result: MeasureResult(costs=(0.021527988199999997,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.616046667098999, timestamp=1669624861.9244158)        [('tile_y', [-1, 256]), ('tile_x', [-1, 128])],None,78
-    No: 8   GFLOPS: 3.92/12.66      result: MeasureResult(costs=(0.0684133678,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3372626304626465, timestamp=1669624863.2241879)       [('tile_y', [-1, 64]), ('tile_x', [-1, 16])],None,46
-    No: 9   GFLOPS: 12.09/12.66     result: MeasureResult(costs=(0.0221961496,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.4923093318939209, timestamp=1669624863.8296545)       [('tile_y', [-1, 8]), ('tile_x', [-1, 256])],None,83
-    No: 10  GFLOPS: 2.70/12.66      result: MeasureResult(costs=(0.09954078,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.7121598720550537, timestamp=1669624865.5897145) [('tile_y', [-1, 2]), ('tile_x', [-1, 8])],None,31
+    No: 1   GFLOPS: 4.17/4.17       result: MeasureResult(costs=(0.06435957540000001,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.2164695262908936, timestamp=1669627278.2483773)        [('tile_y', [-1, 16]), ('tile_x', [-1, 16])],None,44
+    No: 2   GFLOPS: 1.88/4.17       result: MeasureResult(costs=(0.1425277486,), error_no=MeasureErrorNo.NO_ERROR, all_cost=2.4316654205322266, timestamp=1669627281.434531)        [('tile_y', [-1, 4]), ('tile_x', [-1, 2])],None,12
+    No: 3   GFLOPS: 3.63/4.17       result: MeasureResult(costs=(0.0738692736,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.327462911605835, timestamp=1669627282.7781491)        [('tile_y', [-1, 16]), ('tile_x', [-1, 8])],None,34
+    No: 4   GFLOPS: 0.90/4.17       result: MeasureResult(costs=(0.2967946858,), error_no=MeasureErrorNo.NO_ERROR, all_cost=4.879603385925293, timestamp=1669627288.4285693)        [('tile_y', [-1, 256]), ('tile_x', [-1, 2])],None,18
+    No: 5   GFLOPS: 4.02/4.17       result: MeasureResult(costs=(0.0667171866,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.234037160873413, timestamp=1669627289.8670535)        [('tile_y', [-1, 8]), ('tile_x', [-1, 16])],None,43
+    No: 6   GFLOPS: 3.95/4.17       result: MeasureResult(costs=(0.0679458934,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.263340711593628, timestamp=1669627291.8537948)        [('tile_y', [-1, 32]), ('tile_x', [-1, 16])],None,45
+    No: 7   GFLOPS: 13.08/13.08     result: MeasureResult(costs=(0.0205166232,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6252446174621582, timestamp=1669627292.3920207)       [('tile_y', [-1, 64]), ('tile_x', [-1, 128])],None,76
+    No: 8   GFLOPS: 3.74/13.08      result: MeasureResult(costs=(0.0717989706,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3089611530303955, timestamp=1669627293.7042894)       [('tile_y', [-1, 128]), ('tile_x', [-1, 16])],None,47
+    No: 9   GFLOPS: 14.88/14.88     result: MeasureResult(costs=(0.0180432594,), error_no=MeasureErrorNo.NO_ERROR, all_cost=0.6519720554351807, timestamp=1669627294.4709468)       [('tile_y', [-1, 64]), ('tile_x', [-1, 64])],None,66
+    No: 10  GFLOPS: 3.51/14.88      result: MeasureResult(costs=(0.0764741526,), error_no=MeasureErrorNo.NO_ERROR, all_cost=1.3857595920562744, timestamp=1669627295.8962233)       [('tile_y', [-1, 4]), ('tile_x', [-1, 16])],None,42
 
 
 
diff --git a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
index f1526847ec..c02bf6584f 100644
--- a/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
+++ b/docs/_sources/tutorial/autotvm_relay_x86.rst.txt
@@ -320,7 +320,7 @@ standard deviation.
 
  .. code-block:: none
 
-    {'mean': 516.3532675099668, 'median': 516.8544877499698, 'std': 1.6785668288473534}
+    {'mean': 505.1729258000023, 'median': 504.6300729000052, 'std': 2.2159750793573254}
 
 
 
@@ -554,31 +554,31 @@ the tuning data to.
 
  .. code-block:: none
 
-
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   13.35/  14.21 GFLOPS | Progress: (4/20) | 7.14 s
    [Task  1/25]  Current/Best:   16.22/  16.48 GFLOPS | Progress: (8/20) | 10.11 s
    [Task  1/25]  Current/Best:   12.71/  18.97 GFLOPS | Progress: (12/20) | 13.13 s
    [Task  1/25]  Current/Best:   11.91/  18.97 GFLOPS | Progress: (16/20) | 15.85 s
    [Task  1/25]  Current/Best:    9.59/  18.97 GFLOPS | Progress: (20/20) | 19.03 s Done.
-
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:   13.71/  13.71 GFLOPS | Progress: (4/20) | 4.22 s
    [Task  2/25]  Current/Best:   19.39/  19.39 GFLOPS | Progress: (8/20) | 5.32 s
    [Task  2/25]  Current/Best:   12.71/  19.98 GFLOPS | Progress: (12/20) | 6.64 s
    [Task  2/25]  Current/Best:   11.22/  19.98 GFLOPS | Progress: (16/20) | 8.20 s
    [Task  2/25]  Current/Best:   16.46/  19.98 GFLOPS | Progress: (20/20) | 9.43 s Done.
-
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:   12.56/  12.56 GFLOPS | Progress: (4/20) | 5.06 s
    [Task  3/25]  Current/Best:   14.92/  14.92 GFLOPS | Progress: (8/20) | 8.22 s
    [Task  3/25]  Current/Best:    6.53/  14.92 GFLOPS | Progress: (12/20) | 11.03 s
    [Task  3/25]  Current/Best:   14.31/  17.57 GFLOPS | Progress: (16/20) | 12.68 s
    [Task  3/25]  Current/Best:   21.69/  21.69 GFLOPS | Progress: (20/20) | 14.42 s Done.
-
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:   13.98/  13.98 GFLOPS | Progress: (4/20) | 3.49 s
    [Task  4/25]  Current/Best:   13.00/  16.40 GFLOPS | Progress: (8/20) | 5.04 s
    [Task  4/25]  Current/Best:   16.82/  16.82 GFLOPS | Progress: (12/20) | 9.95 s
    [Task  4/25]  Current/Best:    4.88/  16.82 GFLOPS | Progress: (16/20) | 12.14 s
    [Task  4/25]  Current/Best:   12.40/  19.86 GFLOPS | Progress: (20/20) | 14.54 s Done.
-
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:   16.12/  16.12 GFLOPS | Progress: (4/20) | 3.39 s
    [Task  5/25]  Current/Best:   11.83/  16.12 GFLOPS | Progress: (8/20) | 5.82 s
    [Task  5/25]  Current/Best:   22.02/  22.02 GFLOPS | Progress: (12/20) | 8.10 s
    [Task  5/25]  Current/Best:   16.28/  22.02 GFLOPS | Progress: (16/20) | 9.79 s
    [Task  5/25]  Current/Best:   18.14/  22.02 GFLOPS | Progress: (20/20) | 11.70 s Done.
-
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   14.51/  17.52 GFLOPS | Progress: (4/20) | 3.93 s
    [Task  6/25]  Current/Best:    1.39/  17.65 GFLOPS | Progress: (8/20) | 7.51 s
    [Task  6/25]  Current/Best:    3.96/  21.12 GFLOPS | Progress: (12/20) | 10.03 s
    [Task  6/25]  Current/Best:   11.67/  21.12 GFLOPS | Progress: (16/20) | 12.91 s
    [Task  6/25]  Current/Best:    7.17/  22.49 GFLOPS | Progress: (20/20) | 15.60 s Done.
-
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:    4.87/  13.43 GFLOPS | Progress: (4/20) | 4.17 s
    [Task  7/25]  Current/Best:   16.06/  18.98 GFLOPS | Progress: (8/20) | 6.13 s
    [Task  7/25]  Current/Best:    6.90/  18.98 GFLOPS | Progress: (12/20) | 8.99 s
    [Task  7/25]  Current/Best:    5.25/  18.98 GFLOPS | Progress: (16/20) | 11.24 s
    [Task  7/25]  Current/Best:    3.14/  18.98 GFLOPS | Progress: (20/20) | 13.61 s Done.
-
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:   16.99/  16.99 GFLOPS | Progress: (4/20) | 3.60 s
    [Task  8/25]  Current/Best:   11.37/  20.23 GFLOPS | Progress: (8/20) | 5.67 s
    [Task  8/25]  Current/Best:   14.13/  20.23 GFLOPS | Progress: (12/20) | 7.70 s
    [Task  8/25]  Current/Best:   16.86/  20.23 GFLOPS | Progress: (16/20) | 13.09 s
    [Task  8/25]  Current/Best:    7.61/  20.23 GFLOPS | Progress: (20/20) | 20.19 s Done.
-
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:   11.12/  18.63 GFLOPS | Progress: (4/20) | 3.18 s
    [Task  9/25]  Current/Best:   13.40/  18.63 GFLOPS | Progress: (8/20) | 8.34 s
    [Task  9/25]  Current/Best:   10.51/  18.63 GFLOPS | Progress: (12/20) | 10.17 s
    [Task  9/25]  Current/Best:    8.45/  18.63 GFLOPS | Progress: (16/20) | 14.69 s
    [Task  9/25]  Current/Best:    6.02/  18.63 GFLOPS | Progress: (20/20) | 16.48 s Done.
-
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:   11.31/  20.06 GFLOPS | Progress: (4/20) | 2.73 s
    [Task 10/25]  Current/Best:   16.67/  20.06 GFLOPS | Progress: (8/20) | 4.14 s
    [Task 10/25]  Current/Best:   14.03/  20.06 GFLOPS | Progress: (12/20) | 6.02 s
    [Task 10/25]  Current/Best:   12.61/  20.06 GFLOPS | Progress: (16/20) | 8.27 s
    [Task 10/25]  Current/Best:    5.10/  20.06 GFLOPS | Progress: (20/20) | 9.71 s Done.
-
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   12.62/  19.11 GFLOPS | Progress: (4/20) | 4.34 s
    [Task 11/25]  Current/Best:   16.65/  19.11 GFLOPS | Progress: (8/20) | 6.63 s
    [Task 11/25]  Current/Best:    1.58/  19.11 GFLOPS | Progress: (12/20) | 10.69 s
    [Task 11/25]  Current/Best:   17.93/  21.66 GFLOPS | Progress: (16/20) | 13.30 s
    [Task 11/25]  Current/Best:   11.46/  21.66 GFLOPS | Progress: (20/20) | 16.42 s Done.
-
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:   14.24/  20.11 GFLOPS | Progress: (4/20) | 3.67 s
    [Task 12/25]  Current/Best:   16.49/  20.11 GFLOPS | Progress: (8/20) | 10.02 s
    [Task 12/25]  Current/Best:    7.73/  20.11 GFLOPS | Progress: (12/20) | 13.58 s
    [Task 12/25]  Current/Best:   15.83/  20.11 GFLOPS | Progress: (16/20) | 16.41 s
    [Task 12/25]  Current/Best:    5.22/  20.11 GFLOPS | Progress: (20/20) | 19.25 s Done.
-
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:   12.31/  21.93 GFLOPS | Progress: (4/20) | 4.80 s
    [Task 13/25]  Current/Best:   14.91/  21.93 GFLOPS | Progress: (8/20) | 7.61 s
    [Task 13/25]  Current/Best:   21.63/  21.93 GFLOPS | Progress: (12/20) | 11.45 s
    [Task 13/25]  Current/Best:    8.55/  21.93 GFLOPS | Progress: (16/20) | 13.73 s
    [Task 13/25]  Current/Best:   20.43/  21.93 GFLOPS | Progress: (20/20) | 17.52 s Done.
-
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:   15.09/  16.86 GFLOPS | Progress: (4/20) | 3.50 s
    [Task 14/25]  Current/Best:   12.27/  16.86 GFLOPS | Progress: (8/20) | 5.36 s
    [Task 14/25]  Current/Best:   17.53/  17.53 GFLOPS | Progress: (12/20) | 7.68 s
    [Task 14/25]  Current/Best:   15.76/  17.53 GFLOPS | Progress: (16/20) | 10.01 s
    [Task 14/25]  Current/Best:   11.34/  17.53 GFLOPS | Progress: (20/20) | 13.96 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:    5.11/  18.57 GFLOPS | Progress: (4/20) | 3.20 s
    [Task 15/25]  Current/Best:   13.70/  22.19 GFLOPS | Progress: (8/20) | 5.62 s
    [Task 15/25]  Current/Best:   13.93/  22.19 GFLOPS | Progress: (12/20) | 6.76 s Done.
-
    [Task 15/25]  Current/Best:   13.00/  22.19 GFLOPS | Progress: (16/20) | 9.84 s
    [Task 15/25]  Current/Best:   21.15/  22.19 GFLOPS | Progress: (20/20) | 12.25 s
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   14.30/  14.30 GFLOPS | Progress: (4/20) | 3.90 s
    [Task 16/25]  Current/Best:   15.57/  18.13 GFLOPS | Progress: (8/20) | 5.39 s
    [Task 16/25]  Current/Best:   17.50/  18.44 GFLOPS | Progress: (12/20) | 6.65 s
    [Task 16/25]  Current/Best:    9.50/  18.44 GFLOPS | Progress: (16/20) | 8.69 s
    [Task 16/25]  Current/Best:   11.92/  18.75 GFLOPS | Progress: (20/20) | 9.97 s Done.
-
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:    7.78/  12.89 GFLOPS | Progress: (4/20) | 4.26 s
    [Task 17/25]  Current/Best:   19.11/  19.11 GFLOPS | Progress: (8/20) | 6.31 s
    [Task 17/25]  Current/Best:   17.69/  19.11 GFLOPS | Progress: (12/20) | 8.36 s
    [Task 17/25]  Current/Best:   10.11/  19.23 GFLOPS | Progress: (16/20) | 11.02 s
    [Task 17/25]  Current/Best:   13.81/  19.23 GFLOPS | Progress: (20/20) | 13.87 s Done.
-
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:   18.69/  18.69 GFLOPS | Progress: (4/20) | 3.89 s
    [Task 18/25]  Current/Best:   12.59/  18.69 GFLOPS | Progress: (8/20) | 6.38 s
    [Task 18/25]  Current/Best:    5.58/  18.69 GFLOPS | Progress: (12/20) | 8.43 s
    [Task 18/25]  Current/Best:   18.30/  18.69 GFLOPS | Progress: (16/20) | 10.46 s
    [Task 18/25]  Current/Best:   14.58/  20.14 GFLOPS | Progress: (20/20) | 12.06 s Done.
-
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:    7.58/  13.80 GFLOPS | Progress: (4/20) | 6.58 s
    [Task 19/25]  Current/Best:   16.78/  16.78 GFLOPS | Progress: (8/20) | 10.15 s
    [Task 19/25]  Current/Best:    2.66/  20.57 GFLOPS | Progress: (12/20) | 13.76 s
    [Task 19/25]  Current/Best:    8.62/  20.57 GFLOPS | Progress: (16/20) | 17.70 s
    [Task 19/25]  Current/Best:    9.64/  20.57 GFLOPS | Progress: (20/20) | 22.88 s Done.
-
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:   16.27/  16.27 GFLOPS | Progress: (4/20) | 3.45 s
    [Task 20/25]  Current/Best:    2.67/  16.27 GFLOPS | Progress: (8/20) | 6.55 s
    [Task 20/25]  Current/Best:   10.86/  16.27 GFLOPS | Progress: (12/20) | 8.89 s
    [Task 20/25]  Current/Best:   10.49/  16.27 GFLOPS | Progress: (16/20) | 11.36 s
    [Task 20/25]  Current/Best:    7.71/  16.27 GFLOPS | Progress: (20/20) | 14.05 s
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s Done.
-     Done.
-
    [Task 21/25]  Current/Best:    9.27/  12.58 GFLOPS | Progress: (4/20) | 5.26 s
    [Task 21/25]  Current/Best:   16.88/  16.88 GFLOPS | Progress: (8/20) | 6.83 s
    [Task 21/25]  Current/Best:    6.66/  16.88 GFLOPS | Progress: (12/20) | 9.35 s
    [Task 21/25]  Current/Best:    2.72/  16.88 GFLOPS | Progress: (16/20) | 11.78 s
    [Task 21/25]  Current/Best:   12.03/  16.88 GFLOPS | Progress: (20/20) | 14.14 s
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:    9.38/  21.97 GFLOPS | Progress: (4/20) | 4.83 s
    [Task 22/25]  Current/Best:   14.12/  21.97 GFLOPS | Progress: (8/20) | 6.17 s
    [Task 22/25]  Current/Best:    5.33/  21.97 GFLOPS | Progress: (12/20) | 9.26 s
    [Task 22/25]  Current/Best:   13.86/  21.97 GFLOPS | Progress: (16/20) | 10.77 s
    [Task 22/25]  Current/Best:   12.37/  21.97 GFLOPS | Progress: (20/20) | 12.87 s Done.
-
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:   21.09/  21.09 GFLOPS | Progress: (4/20) | 3.61 s
    [Task 23/25]  Current/Best:   10.75/  21.09 GFLOPS | Progress: (8/20) | 8.42 s
    [Task 23/25]  Current/Best:    9.05/  21.09 GFLOPS | Progress: (12/20) | 10.74 s
    [Task 23/25]  Current/Best:   13.42/  21.09 GFLOPS | Progress: (16/20) | 13.08 s
    [Task 23/25]  Current/Best:   19.48/  21.09 GFLOPS | Progress: (20/20) | 15.01 s Done.
-
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:    3.17/   9.96 GFLOPS | Progress: (4/20) | 7.02 s
    [Task 24/25]  Current/Best:    2.91/   9.96 GFLOPS | Progress: (8/20) | 17.83 s
    [Task 24/25]  Current/Best:    7.83/   9.96 GFLOPS | Progress: (12/20) | 26.58 s
    [Task 24/25]  Current/Best:    8.48/   9.96 GFLOPS | Progress: (16/20) | 37.35 s
    [Task 24/25]  Current/Best:    2.87/   9.96 GFLOPS | Progress: (20/20) | 40.66 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s Done.
-     Done.
-
    [Task 25/25]  Current/Best:    9.05/   9.05 GFLOPS | Progress: (4/20) | 5.90 s
    [Task 25/25]  Current/Best:    9.55/   9.55 GFLOPS | Progress: (8/20) | 16.64 s
    [Task 25/25]  Current/Best:    7.13/   9.55 GFLOPS | Progress: (12/20) | 27.39 s
    [Task 25/25]  Current/Best:    3.01/   9.55 GFLOPS | Progress: (16/20) | 38.93 s
    [Task 25/25]  Current/Best:    5.70/   9.55 GFLOPS | Progress: (20/20) | 40.73 s
+
    [Task  1/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  1/25]  Current/Best:   18.06/  18.06 GFLOPS | Progress: (4/20) | 8.15 s
    [Task  1/25]  Current/Best:    9.34/  19.56 GFLOPS | Progress: (8/20) | 11.08 s
    [Task  1/25]  Current/Best:   15.66/  24.10 GFLOPS | Progress: (12/20) | 12.83 s
    [Task  1/25]  Current/Best:   15.21/  24.10 GFLOPS | Progress: (16/20) | 15.81 s
    [Task  1/25]  Current/Best:   13.38/  24.10 GFLOPS | Progress: (20/20) | 18.80 s Done.
+
    [Task  2/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  2/25]  Current/Best:   16.04/  16.04 GFLOPS | Progress: (4/20) | 2.61 s
    [Task  2/25]  Current/Best:   20.59/  20.59 GFLOPS | Progress: (8/20) | 3.89 s
    [Task  2/25]  Current/Best:    6.15/  20.59 GFLOPS | Progress: (12/20) | 6.50 s
    [Task  2/25]  Current/Best:   13.26/  20.87 GFLOPS | Progress: (16/20) | 8.22 s
    [Task  2/25]  Current/Best:   18.84/  20.87 GFLOPS | Progress: (20/20) | 9.33 s Done.
+
    [Task  3/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  3/25]  Current/Best:    9.90/  16.76 GFLOPS | Progress: (4/20) | 3.69 s
    [Task  3/25]  Current/Best:   22.67/  22.67 GFLOPS | Progress: (8/20) | 5.90 s
    [Task  3/25]  Current/Best:   10.23/  22.67 GFLOPS | Progress: (12/20) | 8.03 s
    [Task  3/25]  Current/Best:   15.06/  22.67 GFLOPS | Progress: (16/20) | 9.91 s
    [Task  3/25]  Current/Best:   17.50/  22.67 GFLOPS | Progress: (20/20) | 12.93 s Done.
+
    [Task  4/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  4/25]  Current/Best:   13.27/  15.94 GFLOPS | Progress: (4/20) | 3.22 s
    [Task  4/25]  Current/Best:   14.22/  17.19 GFLOPS | Progress: (8/20) | 6.14 s
    [Task  4/25]  Current/Best:   11.83/  17.19 GFLOPS | Progress: (12/20) | 8.68 s
    [Task  4/25]  Current/Best:   12.52/  17.19 GFLOPS | Progress: (16/20) | 14.64 s
    [Task  4/25]  Current/Best:    6.92/  17.19 GFLOPS | Progress: (20/20) | 21.19 s Done.
+
    [Task  5/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  5/25]  Current/Best:   20.13/  20.13 GFLOPS | Progress: (4/20) | 3.39 s
    [Task  5/25]  Current/Best:    4.31/  20.13 GFLOPS | Progress: (8/20) | 5.68 s
    [Task  5/25]  Current/Best:    5.51/  23.44 GFLOPS | Progress: (12/20) | 7.08 s
    [Task  5/25]  Current/Best:   19.34/  23.44 GFLOPS | Progress: (16/20) | 9.00 s
    [Task  5/25]  Current/Best:    3.35/  23.44 GFLOPS | Progress: (20/20) | 12.18 s Done.
+
    [Task  6/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  6/25]  Current/Best:   18.65/  20.26 GFLOPS | Progress: (4/20) | 5.09 s
    [Task  6/25]  Current/Best:   17.30/  20.26 GFLOPS | Progress: (8/20) | 7.99 s
    [Task  6/25]  Current/Best:    6.42/  20.26 GFLOPS | Progress: (12/20) | 10.50 s
    [Task  6/25]  Current/Best:    2.43/  20.26 GFLOPS | Progress: (16/20) | 13.14 s
    [Task  6/25]  Current/Best:    7.14/  20.26 GFLOPS | Progress: (20/20) | 15.49 s Done.
+
    [Task  7/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  7/25]  Current/Best:   19.05/  19.05 GFLOPS | Progress: (4/20) | 3.35 s
    [Task  7/25]  Current/Best:   12.31/  19.05 GFLOPS | Progress: (8/20) | 5.37 s
    [Task  7/25]  Current/Best:   17.23/  19.05 GFLOPS | Progress: (12/20) | 7.45 s
    [Task  7/25]  Current/Best:   17.61/  19.05 GFLOPS | Progress: (16/20) | 10.96 s
    [Task  7/25]  Current/Best:   16.39/  19.05 GFLOPS | Progress: (20/20) | 12.88 s Done.
+
    [Task  8/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  8/25]  Current/Best:    7.89/  17.33 GFLOPS | Progress: (4/20) | 11.27 s
    [Task  8/25]  Current/Best:   10.58/  17.33 GFLOPS | Progress: (8/20) | 16.57 s
    [Task  8/25]  Current/Best:    2.79/  17.33 GFLOPS | Progress: (12/20) | 20.13 s
    [Task  8/25]  Current/Best:   12.46/  18.91 GFLOPS | Progress: (16/20) | 25.55 s
    [Task  8/25]  Current/Best:    8.15/  18.91 GFLOPS | Progress: (20/20) | 30.24 s Done.
+
    [Task  9/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task  9/25]  Current/Best:   16.71/  22.27 GFLOPS | Progress: (4/20) | 2.81 s
    [Task  9/25]  Current/Best:   12.42/  22.27 GFLOPS | Progress: (8/20) | 4.18 s
    [Task  9/25]  Current/Best:    6.27/  22.27 GFLOPS | Progress: (12/20) | 9.77 s
    [Task  9/25]  Current/Best:    5.08/  22.27 GFLOPS | Progress: (16/20) | 11.26 s
    [Task  9/25]  Current/Best:   18.19/  22.27 GFLOPS | Progress: (20/20) | 12.52 s Done.
+
    [Task 10/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 10/25]  Current/Best:    3.95/  13.49 GFLOPS | Progress: (4/20) | 3.38 s
    [Task 10/25]  Current/Best:   20.68/  20.68 GFLOPS | Progress: (8/20) | 4.68 s
    [Task 10/25]  Current/Best:   10.43/  20.68 GFLOPS | Progress: (12/20) | 8.44 s
    [Task 10/25]  Current/Best:   13.51/  20.68 GFLOPS | Progress: (16/20) | 10.81 s
    [Task 10/25]  Current/Best:    4.99/  20.68 GFLOPS | Progress: (20/20) | 12.96 s Done.
+
    [Task 11/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 11/25]  Current/Best:   19.94/  19.94 GFLOPS | Progress: (4/20) | 3.39 s
    [Task 11/25]  Current/Best:   23.71/  23.71 GFLOPS | Progress: (8/20) | 5.28 s
    [Task 11/25]  Current/Best:   21.02/  23.71 GFLOPS | Progress: (12/20) | 7.20 s
    [Task 11/25]  Current/Best:   17.61/  23.71 GFLOPS | Progress: (16/20) | 9.34 s
    [Task 11/25]  Current/Best:   23.16/  23.71 GFLOPS | Progress: (20/20) | 11.29 s Done.
+
    [Task 12/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 12/25]  Current/Best:   18.15/  18.43 GFLOPS | Progress: (4/20) | 3.01 s
    [Task 12/25]  Current/Best:    3.54/  19.88 GFLOPS | Progress: (8/20) | 5.29 s
    [Task 12/25]  Current/Best:   12.24/  20.64 GFLOPS | Progress: (12/20) | 8.23 s
    [Task 12/25]  Current/Best:   18.70/  20.64 GFLOPS | Progress: (16/20) | 10.36 s
    [Task 12/25]  Current/Best:   11.45/  20.64 GFLOPS | Progress: (20/20) | 12.83 s Done.
+
    [Task 13/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 13/25]  Current/Best:   11.74/  18.56 GFLOPS | Progress: (4/20) | 5.40 s
    [Task 13/25]  Current/Best:   12.46/  18.56 GFLOPS | Progress: (8/20) | 7.51 s
    [Task 13/25]  Current/Best:   14.12/  18.56 GFLOPS | Progress: (12/20) | 10.87 s
    [Task 13/25]  Current/Best:    9.94/  18.56 GFLOPS | Progress: (16/20) | 13.69 s
    [Task 13/25]  Current/Best:    9.00/  20.87 GFLOPS | Progress: (20/20) | 15.64 s Done.
+
    [Task 14/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 14/25]  Current/Best:   14.18/  20.20 GFLOPS | Progress: (4/20) | 4.58 s
    [Task 14/25]  Current/Best:   15.85/  20.20 GFLOPS | Progress: (8/20) | 6.42 s
    [Task 14/25]  Current/Best:   13.08/  20.20 GFLOPS | Progress: (12/20) | 10.02 s
    [Task 14/25]  Current/Best:    7.63/  20.20 GFLOPS | Progress: (16/20) | 14.66 s
    [Task 14/25]  Current/Best:   13.35/  20.20 GFLOPS | Progress: (20/20) | 16.53 s
    [Task 15/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 15/25]  Current/Best:   16.62/  16.62 GFLOPS | Progress: (4/20) | 4.41 s
    [Task 15/25]  Current/Best:   14.22/  16.62 GFLOPS | Progress: (8/20) | 7.23 s
    [Task 15/25]  Current/Best:   14.17/  18.23 GFLOPS | Progress: (12/20) | 9.08 s
    [Task 15/25]  Current/Best:   22.22/  22.22 GFLOPS | Progress: (16/20) | 11.37 s
    [Task 15/25]  Current/Best:   16.48/  22.22 GFLOPS | Progress: (20/20)
  | 13.24 s Done.
+
    [Task 16/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 16/25]  Current/Best:   11.99/  19.70 GFLOPS | Progress: (4/20) | 3.76 s
    [Task 16/25]  Current/Best:   13.77/  19.70 GFLOPS | Progress: (8/20) | 5.62 s
    [Task 16/25]  Current/Best:   12.82/  19.70 GFLOPS | Progress: (12/20) | 7.83 s
    [Task 16/25]  Current/Best:    9.74/  19.70 GFLOPS | Progress: (16/20) | 9.67 s
    [Task 16/25]  Current/Best:   19.45/  23.04 GFLOPS | Progress: (20/20) | 11.58 s Done.
+
    [Task 17/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 17/25]  Current/Best:   24.03/  24.03 GFLOPS | Progress: (4/20) | 3.54 s
    [Task 17/25]  Current/Best:   19.26/  24.03 GFLOPS | Progress: (8/20) | 5.84 s
    [Task 17/25]  Current/Best:    3.13/  24.03 GFLOPS | Progress: (12/20) | 8.67 s
    [Task 17/25]  Current/Best:   17.56/  24.03 GFLOPS | Progress: (16/20) | 10.42 s
    [Task 17/25]  Current/Best:   22.23/  24.03 GFLOPS | Progress: (20/20) | 12.68 s Done.
+
    [Task 18/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 18/25]  Current/Best:    7.18/  18.48 GFLOPS | Progress: (4/20) | 7.21 s
    [Task 18/25]  Current/Best:    7.81/  18.48 GFLOPS | Progress: (8/20) | 13.60 s
    [Task 18/25]  Current/Best:   11.81/  18.48 GFLOPS | Progress: (12/20) | 15.59 s
    [Task 18/25]  Current/Best:    5.99/  18.48 GFLOPS | Progress: (16/20) | 19.35 s
    [Task 18/25]  Current/Best:   11.29/  18.48 GFLOPS | Progress: (20/20) | 25.60 s Done.
+
    [Task 19/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 19/25]  Current/Best:   11.10/  16.70 GFLOPS | Progress: (4/20) | 6.72 s
    [Task 19/25]  Current/Best:   21.37/  21.37 GFLOPS | Progress: (8/20) | 8.63 s
    [Task 19/25]  Current/Best:   22.49/  22.49 GFLOPS | Progress: (12/20) | 11.92 s
    [Task 19/25]  Current/Best:    9.44/  22.49 GFLOPS | Progress: (16/20) | 15.79 s
    [Task 19/25]  Current/Best:    5.44/  22.54 GFLOPS | Progress: (20/20) | 19.07 s Done.
+
    [Task 20/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 20/25]  Current/Best:   15.38/  19.96 GFLOPS | Progress: (4/20) | 4.85 s
    [Task 20/25]  Current/Best:   11.64/  20.56 GFLOPS | Progress: (8/20) | 7.09 s
    [Task 20/25]  Current/Best:    4.82/  20.56 GFLOPS | Progress: (12/20) | 10.88 s
    [Task 20/25]  Current/Best:   10.22/  20.56 GFLOPS | Progress: (16/20) | 13.21 s
    [Task 20/25]  Current/Best:   16.11/  20.56 GFLOPS | Progress: (20/20) | 14.93 s Done.
+
    [Task 21/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 21/25]  Current/Best:    5.26/  12.30 GFLOPS | Progress: (4/20) | 3.21 s
    [Task 21/25]  Current/Best:    5.32/  18.71 GFLOPS | Progress: (8/20) | 6.87 s
    [Task 21/25]  Current/Best:   23.16/  23.16 GFLOPS | Progress: (12/20) | 8.80 s
    [Task 21/25]  Current/Best:   14.23/  23.16 GFLOPS | Progress: (16/20) | 10.38 s Done.
+
    [Task 21/25]  Current/Best:   15.87/  23.16 GFLOPS | Progress: (20/20) | 12.57 s Done.
+
    [Task 22/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 22/25]  Current/Best:   11.99/  12.93 GFLOPS | Progress: (4/20) | 3.38 s
    [Task 22/25]  Current/Best:   10.60/  17.28 GFLOPS | Progress: (8/20) | 6.69 s
    [Task 22/25]  Current/Best:   11.03/  17.28 GFLOPS | Progress: (12/20) | 8.23 s
    [Task 22/25]  Current/Best:   10.72/  17.28 GFLOPS | Progress: (16/20) | 9.60 s
    [Task 22/25]  Current/Best:   19.96/  19.96 GFLOPS | Progress: (20/20) | 11.25 s Done.
+
    [Task 23/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 23/25]  Current/Best:   19.09/  20.15 GFLOPS | Progress: (4/20) | 5.06 s
    [Task 23/25]  Current/Best:   17.54/  20.35 GFLOPS | Progress: (8/20) | 6.95 s
    [Task 23/25]  Current/Best:   11.54/  20.35 GFLOPS | Progress: (12/20) | 9.67 s
    [Task 23/25]  Current/Best:   11.63/  23.17 GFLOPS | Progress: (16/20) | 14.66 s
    [Task 23/25]  Current/Best:   13.46/  23.17 GFLOPS | Progress: (20/20) | 16.90 s Done.
+
    [Task 24/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s
    [Task 24/25]  Current/Best:   10.24/  10.24 GFLOPS | Progress: (4/20) | 11.99 s
    [Task 24/25]  Current/Best:    1.75/  10.24 GFLOPS | Progress: (8/20) | 23.61 s
    [Task 24/25]  Current/Best:    4.11/  10.24 GFLOPS | Progress: (12/20) | 34.26 s
    [Task 24/25]  Current/Best:    5.52/  10.24 GFLOPS | Progress: (16/20) | 44.97 s
    [Task 24/25]  Current/Best:    1.97/  10.24 GFLOPS | Progress: (20/20) | 55.69 s
    [Task 25/25]  Current/Best:    0.00/   0.00 GFLOPS | Progress: (0/20) | 0.00 s Done.
+
    [Task 25/25]  Current/Best:    6.55/   8.59 GFLOPS | Progress: (4/20) | 3.47 s
    [Task 25/25]  Current/Best:    5.26/   8.59 GFLOPS | Progress: (8/20) | 14.15 s
    [Task 25/25]  Current/Best:    2.77/   8.59 GFLOPS | Progress: (12/20) | 17.39 s
    [Task 25/25]  Current/Best:    7.53/   8.59 GFLOPS | Progress: (16/20) | 28.09 s
    [Task 25/25]  Current/Best:    7.68/   8.59 GFLOPS | Progress: (20/20) | 38.80 s
 
 
 
@@ -675,7 +675,7 @@ Verify that the optimized model runs and produces the same results:
  .. code-block:: none
 
     class='n02123045 tabby, tabby cat' with probability=0.621102
-    class='n02123159 tiger cat' with probability=0.356379
+    class='n02123159 tiger cat' with probability=0.356380
     class='n02124075 Egyptian cat' with probability=0.019712
     class='n02129604 tiger, Panthera tigris' with probability=0.001215
     class='n04040759 radiator' with probability=0.000262
@@ -732,8 +732,8 @@ improvement in comparing the optimized model to the unoptimized model.
 
  .. code-block:: none
 
-    optimized: {'mean': 417.1637104700494, 'median': 416.4078337500541, 'std': 2.486283027320619}
-    unoptimized: {'mean': 516.3532675099668, 'median': 516.8544877499698, 'std': 1.6785668288473534}
+    optimized: {'mean': 399.8582539900008, 'median': 398.99670404998915, 'std': 2.6953935826277684}
+    unoptimized: {'mean': 505.1729258000023, 'median': 504.6300729000052, 'std': 2.2159750793573254}
 
 
 
@@ -756,7 +756,7 @@ profiling/benchmarking.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 10 minutes  32.789 seconds)
+   **Total running time of the script:** ( 10 minutes  51.757 seconds)
 
 
 .. _sphx_glr_download_tutorial_autotvm_relay_x86.py:
diff --git a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
index 42632d1922..16bd1c7a7c 100644
--- a/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
+++ b/docs/_sources/tutorial/cross_compilation_and_rpc.rst.txt
@@ -270,7 +270,7 @@ device and returns the measured cost. Network overhead is excluded.
 
  .. code-block:: none
 
-    1.236e-07 secs/op
+    1.232e-07 secs/op
 
 
 
diff --git a/docs/_sources/tutorial/intro_topi.rst.txt b/docs/_sources/tutorial/intro_topi.rst.txt
index 55539f0287..57c2a94615 100644
--- a/docs/_sources/tutorial/intro_topi.rst.txt
+++ b/docs/_sources/tutorial/intro_topi.rst.txt
@@ -260,7 +260,7 @@ As you can see, scheduled stages of computation have been accumulated and we can
 
  .. code-block:: none
 
-    [stage(a, placeholder(a, 0x19c5a400)), stage(b, placeholder(b, 0x1b55eb50)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(mi [...]
+    [stage(a, placeholder(a, 0x1208f070)), stage(b, placeholder(b, 0x108b8ca0)), stage(T_add, compute(T_add, body=[(a[ax0, ax1, ax2] + b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(min=0, ext=10))], reduce_axis=[], tag=broadcast, attrs={})), stage(T_multiply, compute(T_multiply, body=[(a[ax0, ax1, ax2]*b[ax1, ax2])], axis=[iter_var(ax0, range(min=0, ext=100)), iter_var(ax1, range(min=0, ext=10)), iter_var(ax2, range(mi [...]
 
 
 
diff --git a/docs/_sources/tutorial/sg_execution_times.rst.txt b/docs/_sources/tutorial/sg_execution_times.rst.txt
index 8ca7ca04a9..b44ba8c84d 100644
--- a/docs/_sources/tutorial/sg_execution_times.rst.txt
+++ b/docs/_sources/tutorial/sg_execution_times.rst.txt
@@ -5,32 +5,32 @@
 
 Computation times
 =================
-**13:58.382** total execution time for **tutorial** files:
+**14:26.825** total execution time for **tutorial** files:
 
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 10:32.789 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_relay_x86.py` (``autotvm_relay_x86.py``)                 | 10:51.757 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:31.332 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_auto_scheduler_matmul_x86.py` (``auto_scheduler_matmul_x86.py``) | 01:35.271 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:01.151 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_expr_get_started.py` (``tensor_expr_get_started.py``)     | 01:01.070 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:34.324 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_relay_quick_start.py` (``relay_quick_start.py``)                 | 00:33.346 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:16.849 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_autotvm_matmul_x86.py` (``autotvm_matmul_x86.py``)               | 00:22.906 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:00.986 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_tensor_ir_blitz_course.py` (``tensor_ir_blitz_course.py``)       | 00:01.546 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.772 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_intro_topi.py` (``intro_topi.py``)                               | 00:00.755 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.170 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_cross_compilation_and_rpc.py` (``cross_compilation_and_rpc.py``) | 00:00.166 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_introduction.py` (``introduction.py``)                           | 00:00.005 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.002 | 0.0 MB |
+| :ref:`sphx_glr_tutorial_uma.py` (``uma.py``)                                             | 00:00.001 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_tvmc_command_line_driver.py` (``tvmc_command_line_driver.py``)   | 00:00.001 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
-| :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)                             | 00:00.001 | 0.0 MB |
-+------------------------------------------------------------------------------------------+-----------+--------+
 | :ref:`sphx_glr_tutorial_install.py` (``install.py``)                                     | 00:00.001 | 0.0 MB |
 +------------------------------------------------------------------------------------------+-----------+--------+
+| :ref:`sphx_glr_tutorial_tvmc_python.py` (``tvmc_python.py``)                             | 00:00.001 | 0.0 MB |
++------------------------------------------------------------------------------------------+-----------+--------+
diff --git a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
index 32f09c7b45..f58ec8cee1 100644
--- a/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
+++ b/docs/_sources/tutorial/tensor_expr_get_started.rst.txt
@@ -295,7 +295,7 @@ helper function to run a profile of the TVM generated code.
  .. code-block:: none
 
     Numpy running time: 0.000007
-    naive: 0.000007
+    naive: 0.000006
 
 
 
@@ -393,7 +393,7 @@ compile and run this new schedule with the parallel operation applied:
 
  .. code-block:: none
 
-    parallel: 0.000008
+    parallel: 0.000007
 
 
 
@@ -448,7 +448,7 @@ factor to be the number of threads on your CPU.
 
  .. code-block:: none
 
-    vector: 0.000025
+    vector: 0.000027
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [n: int32], [stride: int32], type="auto"),
@@ -499,10 +499,10 @@ We can now compare the different schedules
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                   numpy    7.1494800067739565e-06                   1.0
-                   naive              6.7856e-06      0.9491039898804963
-                parallel              8.2205e-06      1.1498039007328196
-                  vector             2.46759e-05       3.451425834692899
+                   numpy    7.088049999310897e-06                    1.0
+                   naive    6.443799999999999e-06     0.9091075825687556
+                parallel    6.690799999999999e-06     0.9439549665494009
+                  vector             2.73856e-05       3.863629630527781
 
 
 
@@ -923,7 +923,7 @@ matrix multiplication.
 
  .. code-block:: none
 
-    Numpy running time: 0.018623
+    Numpy running time: 0.018481
 
 
 
@@ -981,7 +981,7 @@ optimizations.
 
  .. code-block:: none
 
-    none: 3.395222
+    none: 3.419747
 
 
 
@@ -1083,7 +1083,7 @@ schedule.
 
  .. code-block:: none
 
-    blocking: 0.309869
+    blocking: 0.301686
 
 
 
@@ -1178,7 +1178,7 @@ already cache friendly from our previous optimizations.
 
  .. code-block:: none
 
-    vectorization: 0.347837
+    vectorization: 0.333559
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1251,7 +1251,7 @@ more cache friendly.
 
  .. code-block:: none
 
-    loop permutation: 0.120404
+    loop permutation: 0.115636
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1349,7 +1349,7 @@ optimized schedule.
 
  .. code-block:: none
 
-    array packing: 0.110559
+    array packing: 0.106958
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1441,7 +1441,7 @@ to `C` when all the block results are ready.
 
  .. code-block:: none
 
-    block caching: 0.111164
+    block caching: 0.109095
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1526,7 +1526,7 @@ of thread-level parallelization.
 
  .. code-block:: none
 
-    parallelization: 0.148097
+    parallelization: 0.143992
     @main = primfn(A_1: handle, B_1: handle, C_1: handle) -> ()
       attr = {"from_legacy_te_schedule": True, "global_symbol": "main", "tir.noalias": True}
       buffers = {A: Buffer(A_2: Pointer(float32), float32, [1024, 1024], []),
@@ -1606,13 +1606,13 @@ working, we can compare the results.
  .. code-block:: none
 
                 Operator                  Timing             Performance
-                    none            3.3952222293                     1.0
-                blocking            0.3098692862     0.09126627515745453
-           vectorization            0.3478373588     0.10244906969512696
-        loop permutation     0.12040382589999998    0.035462723135158046
-           array packing            0.1105588837     0.03256307724009988
-           block caching            0.1111637172     0.03274121977662677
-         parallelization     0.14809664279999998    0.043619130883969674
+                    none      3.4197465450999998                     1.0
+                blocking            0.3016855546     0.08821868832129434
+           vectorization            0.3335594248     0.09753922415038103
+        loop permutation     0.11563567370000001     0.03381410644765155
+           array packing     0.10695834359999998     0.03127668737709692
+           block caching            0.1090946397     0.03190138165540858
+         parallelization             0.143991662    0.042105945601822195
 
 
 
@@ -1654,7 +1654,7 @@ the computation for specific platforms.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** ( 1 minutes  1.151 seconds)
+   **Total running time of the script:** ( 1 minutes  1.070 seconds)
 
 
 .. _sphx_glr_download_tutorial_tensor_expr_get_started.py:
diff --git a/docs/commit_hash b/docs/commit_hash
index e5aa7162f4..aeb0e4019e 100644
--- a/docs/commit_hash
+++ b/docs/commit_hash
@@ -1 +1 @@
-b8d7cd7fe0f7f268272eb8714163e540875d9c0f
+c38a0c50a7cde09d548f570f7aafa8e293ef1485
diff --git a/docs/how_to/compile_models/from_darknet.html b/docs/how_to/compile_models/from_darknet.html
index f72eeeb07e..63163e28f8 100644
--- a/docs/how_to/compile_models/from_darknet.html
+++ b/docs/how_to/compile_models/from_darknet.html
@@ -585,7 +585,7 @@ class:[&#39;truck 0.9266&#39;] left:471 top:83 right:689 bottom:169
 class:[&#39;bicycle 0.9984&#39;] left:111 top:113 right:577 bottom:447
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  14.327 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  12.099 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-darknet-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7716f96385bd5abb6e822041e285be54/from_darknet.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_darknet.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/from_keras.html b/docs/how_to/compile_models/from_keras.html
index 8fc0736fa9..00937e43bf 100644
--- a/docs/how_to/compile_models/from_keras.html
+++ b/docs/how_to/compile_models/from_keras.html
@@ -506,7 +506,7 @@ pip install -U tensorflow --user
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Relay top-1 id: 285, class name: Egyptian cat
 
 1/1 [==============================] - ETA: 0s
-1/1 [==============================] - 1s 943ms/step
+1/1 [==============================] - 1s 953ms/step
 Keras top-1 id: 285, class name: Egyptian cat
 </pre></div>
 </div>
diff --git a/docs/how_to/compile_models/from_mxnet.html b/docs/how_to/compile_models/from_mxnet.html
index ca42163361..4fb8010196 100644
--- a/docs/how_to/compile_models/from_mxnet.html
+++ b/docs/how_to/compile_models/from_mxnet.html
@@ -440,7 +440,7 @@ to download the full example code</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;x&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#tuple" title="builtins.tuple" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">x</span><span class="o">.</span><span class="n">shape</span></a><span class="p">)</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_from_mxnet_001.png" srcset="../../_images/sphx_glr_from_mxnet_001.png" alt="from mxnet" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip915a424c-07c5-4445-a296-d730d07e9e37 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
+<img src="../../_images/sphx_glr_from_mxnet_001.png" srcset="../../_images/sphx_glr_from_mxnet_001.png" alt="from mxnet" class = "sphx-glr-single-img"/><div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/resnet18_v1-a0666292.zip3358f288-3827-46ed-aa94-71892ca6c9e0 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...
 x (1, 3, 224, 224)
 </pre></div>
 </div>
diff --git a/docs/how_to/compile_models/from_oneflow.html b/docs/how_to/compile_models/from_oneflow.html
index dd94b1a20e..d0f20de879 100644
--- a/docs/how_to/compile_models/from_oneflow.html
+++ b/docs/how_to/compile_models/from_oneflow.html
@@ -448,13 +448,13 @@ Deprecated in NumPy 1.20; for more details and guidance: https://numpy.org/devdo
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading: &quot;https://oneflow-public.oss-cn-beijing.aliyuncs.com/model_zoo/flowvision/classification/ResNet/resnet18.zip&quot; to /workspace/.oneflow/flowvision_cache/resnet18.zip
 
   0%|          | 0.00/41.5M [00:00&lt;?, ?B/s]
- 19%|#9        | 7.99M/41.5M [00:00&lt;00:00, 43.2MB/s]
- 32%|###1      | 13.2M/41.5M [00:00&lt;00:00, 43.9MB/s]
- 42%|####1     | 17.4M/41.5M [00:00&lt;00:00, 30.5MB/s]
- 58%|#####7    | 24.0M/41.5M [00:00&lt;00:00, 36.0MB/s]
- 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 44.0MB/s]
- 92%|#########2| 38.3M/41.5M [00:00&lt;00:00, 48.5MB/s]
-100%|##########| 41.5M/41.5M [00:00&lt;00:00, 44.1MB/s]
+ 16%|#6        | 6.82M/41.5M [00:00&lt;00:00, 71.5MB/s]
+ 33%|###2      | 13.6M/41.5M [00:00&lt;00:00, 56.3MB/s]
+ 46%|####6     | 19.2M/41.5M [00:00&lt;00:00, 33.5MB/s]
+ 58%|#####7    | 24.0M/41.5M [00:00&lt;00:00, 31.4MB/s]
+ 77%|#######7  | 32.0M/41.5M [00:00&lt;00:00, 41.4MB/s]
+ 92%|#########2| 38.3M/41.5M [00:00&lt;00:00, 42.8MB/s]
+100%|##########| 41.5M/41.5M [00:01&lt;00:00, 42.3MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_pytorch.html b/docs/how_to/compile_models/from_pytorch.html
index 6364de1991..537c2760c1 100644
--- a/docs/how_to/compile_models/from_pytorch.html
+++ b/docs/how_to/compile_models/from_pytorch.html
@@ -431,12 +431,12 @@ be unstable.</p>
 Downloading: &quot;https://download.pytorch.org/models/resnet18-f37072fd.pth&quot; to /workspace/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth
 
   0%|          | 0.00/44.7M [00:00&lt;?, ?B/s]
- 18%|#7        | 7.99M/44.7M [00:00&lt;00:00, 43.5MB/s]
- 36%|###5      | 16.0M/44.7M [00:00&lt;00:00, 47.4MB/s]
- 65%|######4   | 29.0M/44.7M [00:00&lt;00:00, 75.9MB/s]
- 84%|########3 | 37.3M/44.7M [00:00&lt;00:00, 62.7MB/s]
- 99%|#########8| 44.2M/44.7M [00:00&lt;00:00, 59.3MB/s]
-100%|##########| 44.7M/44.7M [00:00&lt;00:00, 59.7MB/s]
+ 18%|#7        | 7.99M/44.7M [00:00&lt;00:00, 77.7MB/s]
+ 39%|###8      | 17.4M/44.7M [00:00&lt;00:00, 89.5MB/s]
+ 58%|#####8    | 26.0M/44.7M [00:00&lt;00:00, 87.2MB/s]
+ 77%|#######6  | 34.3M/44.7M [00:00&lt;00:00, 61.0MB/s]
+ 92%|#########2| 41.2M/44.7M [00:00&lt;00:00, 64.2MB/s]
+100%|##########| 44.7M/44.7M [00:00&lt;00:00, 64.0MB/s]
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/compile_models/from_tensorflow.html b/docs/how_to/compile_models/from_tensorflow.html
index 1358ea7cea..6c8fcb1328 100644
--- a/docs/how_to/compile_models/from_tensorflow.html
+++ b/docs/how_to/compile_models/from_tensorflow.html
@@ -645,7 +645,7 @@ banana (score = 0.00022)
 desk (score = 0.00019)
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  11.819 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  11.231 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-compile-models-from-tensorflow-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7f1d3d1b878694c201c614c807cdebc8/from_tensorflow.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">from_tensorflow.py</span></code></a></p>
diff --git a/docs/how_to/compile_models/sg_execution_times.html b/docs/how_to/compile_models/sg_execution_times.html
index f668c1f1bd..5e2fabf8b0 100644
--- a/docs/how_to/compile_models/sg_execution_times.html
+++ b/docs/how_to/compile_models/sg_execution_times.html
@@ -340,7 +340,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-compile-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>05:49.685</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
+<p><strong>05:42.594</strong> total execution time for <strong>how_to_compile_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 81%" />
@@ -349,43 +349,43 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_darknet.html#sphx-glr-how-to-compile-models-from-darknet-py"><span class="std std-ref">Compile YOLO-V2 and YOLO-V3 in DarkNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_darknet.py</span></code>)</p></td>
-<td><p>01:14.327</p></td>
+<td><p>01:12.099</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_tensorflow.html#sphx-glr-how-to-compile-models-from-tensorflow-py"><span class="std std-ref">Compile Tensorflow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tensorflow.py</span></code>)</p></td>
-<td><p>01:11.819</p></td>
+<td><p>01:11.231</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_paddle.html#sphx-glr-how-to-compile-models-from-paddle-py"><span class="std std-ref">Compile PaddlePaddle Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_paddle.py</span></code>)</p></td>
-<td><p>00:47.112</p></td>
+<td><p>00:45.648</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_oneflow.html#sphx-glr-how-to-compile-models-from-oneflow-py"><span class="std std-ref">Compile OneFlow Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_oneflow.py</span></code>)</p></td>
-<td><p>00:31.506</p></td>
+<td><p>00:32.032</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_mxnet.html#sphx-glr-how-to-compile-models-from-mxnet-py"><span class="std std-ref">Compile MXNet Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_mxnet.py</span></code>)</p></td>
-<td><p>00:29.100</p></td>
+<td><p>00:28.257</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_coreml.html#sphx-glr-how-to-compile-models-from-coreml-py"><span class="std std-ref">Compile CoreML Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_coreml.py</span></code>)</p></td>
-<td><p>00:27.126</p></td>
+<td><p>00:26.279</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_tflite.html#sphx-glr-how-to-compile-models-from-tflite-py"><span class="std std-ref">Compile TFLite Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_tflite.py</span></code>)</p></td>
-<td><p>00:26.018</p></td>
+<td><p>00:25.558</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_pytorch.html#sphx-glr-how-to-compile-models-from-pytorch-py"><span class="std std-ref">Compile PyTorch Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_pytorch.py</span></code>)</p></td>
-<td><p>00:23.016</p></td>
+<td><p>00:22.180</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="from_keras.html#sphx-glr-how-to-compile-models-from-keras-py"><span class="std std-ref">Compile Keras Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_keras.py</span></code>)</p></td>
-<td><p>00:17.241</p></td>
+<td><p>00:16.945</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="from_onnx.html#sphx-glr-how-to-compile-models-from-onnx-py"><span class="std std-ref">Compile ONNX Models</span></a> (<code class="docutils literal notranslate"><span class="pre">from_onnx.py</span></code>)</p></td>
-<td><p>00:02.420</p></td>
+<td><p>00:02.365</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/deploy/adreno.html b/docs/how_to/deploy/adreno.html
new file mode 100644
index 0000000000..ae74c3669a
--- /dev/null
+++ b/docs/how_to/deploy/adreno.html
@@ -0,0 +1,707 @@
+
+
+
+
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Deploy to Adreno GPU &mdash; tvm 0.11.dev0 documentation</title>
+  
+
+  
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-binder.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-dataframe.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-rendered-html.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/tlcpack_theme.css" type="text/css" />
+
+  
+  
+    <link rel="shortcut icon" href="../../_static/tvm-logo-square.png"/>
+  
+
+  
+  
+  
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+    
+    <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="Integrate TVM into Your Project" href="integrate.html" />
+    <link rel="prev" title="Deploy to Android" href="android.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    
+<header class="header">
+    <div class="innercontainer">
+      <div class="headerInner d-flex justify-content-between align-items-center">
+          <div class="headerLogo">
+               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
+          </div>
+
+          <div id="headMenu" class="headerNav">
+            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../_static/img/close-icon.svg" alt="Close"></button>
+             <ul class="nav">
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
+                </li>
+             </ul>
+               <div class="responsivetlcdropdown">
+                 <button type="button" class="btn-link">
+                   ASF
+                 </button>
+                 <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/security/>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                 </ul>
+               </div>
+          </div>
+            <div class="responsiveMenuIcon">
+              <button type="button" id="menuBtn" class="btn-menu"><img src="../../_static/img/menu-icon.svg" alt="Menu Icon"></button>
+            </div>
+
+            <div class="tlcDropdown">
+              <div class="dropdown">
+                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  ASF
+                </button>
+                <div class="dropdown-menu dropdown-menu-right">
+                  <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/security/>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                  </ul>
+                </div>
+              </div>
+          </div>
+       </div>
+    </div>
+ </header>
+ 
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../index.html">
+          
+
+          
+            
+            <img src="../../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
+          
+          </a>
+
+          
+            
+            
+              <input type="checkbox" class="version-toggle-box" hidden id="version-toggle">
+              <label for="version-toggle" class="version-toggle-label">
+                  <div tabindex="0" class="version version-selector version-selector-show">
+                    0.11.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round [...]
+                  </div>
+                </label>
+                <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+                  <p class="caption" role="heading"><span class="caption-text">Versions</span></p>
+                  <ol style="text-align: left">
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.11.dev0 (main)</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li>
+                    
+                  </ol>
+                </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../install/index.html">Installing TVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contribute/index.html">Contributor Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../tutorial/index.html">User Tutorial</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">How To Guides</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../compile_models/index.html">Compile Deep Learning Models</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="index.html">Deploy Models and Integrate TVM</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="index.html#build-the-tvm-runtime-library">Build the TVM runtime library</a></li>
+<li class="toctree-l3"><a class="reference internal" href="index.html#cross-compile-the-tvm-runtime-for-other-architectures">Cross compile the TVM runtime for other architectures</a></li>
+<li class="toctree-l3"><a class="reference internal" href="index.html#optimize-and-tune-models-for-target-devices">Optimize and tune models for target devices</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
+<li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
+<li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4 current"><a class="current reference internal" href="#">Deploy to Adreno GPU</a></li>
+<li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
+<li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
+<li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="tensorrt.html">Relay TensorRT Integration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="vitis_ai.html">Vitis AI Integration</a></li>
+<li class="toctree-l4"><a class="reference internal" href="bnns.html">Relay BNNS Integration</a></li>
+</ul>
+</li>
+<li class="toctree-l3"><a class="reference internal" href="index.html#additional-deployment-how-tos">Additional Deployment How-Tos</a></li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_relay/index.html">Work With Relay</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_schedules/index.html">Work With Tensor Expression and Schedules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../optimize_operators/index.html">Optimize Tensor Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../tune_with_autotvm/index.html">Auto-Tune with Templates and AutoTVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../tune_with_autoscheduler/index.html">Use AutoScheduler for Template-Free Scheduling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_microtvm/index.html">Work With microTVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../extend_tvm/index.html">Extend TVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../profile/index.html">Profile Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../../errors.html">Handle TVM Errors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../../faq.html">Frequently Asked Questions</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Developer Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/tutorial/index.html">Developer Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/how_to/how_to.html">Developer How-To Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Architecture  Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../arch/index.html">Design and Architecture</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Topic Guides</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Reference Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/langref/index.html">Language Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/python/index.html">Python API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/links.html">Other APIs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/publications.html">Publications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../genindex.html">Index</a></li>
+</ul>
+
+            
+          
+        </div>
+        
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+      
+      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
+        
+            <div class="togglemenu">
+
+            </div>
+            <div class="nav-content">
+              <!-- tvm -->
+              Table of Contents
+            </div>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="../index.html">How To Guides</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="index.html">Deploy Models and Integrate TVM</a> <span class="br-arrow">></span></li>
+        
+      <li>Deploy to Adreno GPU</li>
+    
+    
+      
+      
+        
+      
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/apache/tvm/edit/main/docs/how_to/deploy/adreno.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="deploy-to-adreno-gpu">
+<h1>Deploy to Adreno GPU<a class="headerlink" href="#deploy-to-adreno-gpu" title="Permalink to this headline">¶</a></h1>
+<p><strong>Authors</strong>: Daniil Barinov, Egor Churaev, Andrey Malyshev</p>
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>Adreno is a series of graphics processing unit (GPU) semiconductor
+intellectual property cores developed by Qualcomm and used in many of
+their SoCs.</p>
+<p>The Adreno GPU accelerates the rendering of complex geometries to
+deliver high-performance graphics and a rich user experience with low
+power consumption.</p>
+<p>This guide will demonstrate <a class="reference internal" href="#advantages-of-the-textures"><span class="std std-ref">the benefits of using textures with Adreno</span></a>,
+how to <a class="reference internal" href="#building-tvm-for-adreno"><span class="std std-ref">build TVM with OpenCL</span></a> (needed by Adreno devices) and TVM RPC
+enabled. It will also provide <a class="reference internal" href="#build-and-deploy-model-for-adreno"><span class="std std-ref">example code</span></a> to better understand the differences in compiling and deploying models
+for Adreno devices.</p>
+</div>
+<div class="section" id="advantages-of-the-textures">
+<span id="id1"></span><h2>Advantages of the Textures<a class="headerlink" href="#advantages-of-the-textures" title="Permalink to this headline">¶</a></h2>
+<p>One of the Adreno’s advantages is the clever handling of textures. At
+the moment, TVM is able to benefit from this by having texture support
+for Adreno. The graph below shows the Adreno A5x architecture.</p>
+<p><img alt="High-level overview of the Adreno A5x architecture for OpenCL" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/adreno_architecture.png" /></p>
+<p><em>Fig. 1 High-level overview of the Adreno A5x architecture for OpenCL</em></p>
+<p><em>source:</em> <a class="reference external" href="https://dl.acm.org/doi/10.1145/3204919.3204935">OpenCL Optimization and Best Practices for Qualcomm Adreno GPUs</a></p>
+<p>Reasons of using textures:</p>
+<ul class="simple">
+<li><p>Texture processor (TP) has a dedicated L1 cache, which is read-only cache and stores data
+fetched from level-2 (L2) cache for texture operations (primary
+reason)</p></li>
+<li><p>The handling of image boundaries is built-in.</p></li>
+<li><p>Supports numerous image format and data type combinations with
+support for automatic format conversions</p></li>
+</ul>
+<p>Overall, with textures, it is possible to achieve a significant performance boost
+compared to OpenCL buffer based solutions.</p>
+</div>
+<div class="section" id="building-tvm-for-adreno">
+<span id="id2"></span><h2>Building TVM for Adreno<a class="headerlink" href="#building-tvm-for-adreno" title="Permalink to this headline">¶</a></h2>
+<p>This section gives instructions on how to build the Android part of TVM
+with OpenCL and TVM RPC Server in order to deploy models on Adreno.</p>
+<p>Since the process of building TVM for Adreno is exactly the same as the
+process of building TVM for Android, please refer to these instructions:
+<a class="reference external" href="https://github.com/apache/tvm/tree/main/apps/cpp_rpc">TVM RPC
+Server</a>.</p>
+<p>Since there are many required packages for Android, you can use the official Docker Image to build TVM.
+For more information refer to this guide: <a class="reference external" href="https://tvm.apache.org/docs/how_to/deploy_models/deploy_model_on_android.html">Deploy the Pretrained Model on Android</a>.</p>
+<p><strong>Prerequisites</strong>: Android NDK and Android Debug Bridge must
+be installed, the desired device must have OpenCL support and Android part of TVM must be built:</p>
+<ul class="simple">
+<li><p>Read documentation about <em>Android NDK installation</em> here: <a class="reference external" href="https://developer.android.com/ndk">https://developer.android.com/ndk</a></p></li>
+<li><p>To get access to adb tools you can see <em>Android Debug Bridge installation</em> here: <a class="reference external" href="https://developer.android.com/studio/command-line/adb">https://developer.android.com/studio/command-line/adb</a></p></li>
+</ul>
+<p>You can also build the android part of TVM locally. From the root
+folder of TVM:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>mkdir build_android
+cd build_android
+cmake .. -DUSE_OPENCL=ON -DUSE_MICRO=OFF -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_NATIVE_API_LEVEL=android-28 -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON -DANDROID_STL=c++_static -DUSE_CPP_RPC=ON
+make -jN tvm_runtime tvm_rpc
+</pre></div>
+</div>
+<p>where <strong>N</strong> is the number of cores available on your <em>CPU</em>.</p>
+<p>At this stage you have built TVM for Adreno.</p>
+</div>
+<div class="section" id="build-and-deploy-model-for-adreno">
+<span id="id3"></span><h2>Build and deploy model for Adreno<a class="headerlink" href="#build-and-deploy-model-for-adreno" title="Permalink to this headline">¶</a></h2>
+<p>In this section we will focus on target, needed to compile and deploy models for Adreno, demonstrate
+the differences in generated kernels with and without textures and, in addition, the
+possibility of choosing a different precision for model compilation will
+be considered.</p>
+<p>For the complete step-py-step process of compiling and deploying models on
+Adreno, including selection of precision, running the inference of the
+model, getting the predictions, and measuring the performance please refer to this tutorial: <a class="reference external" href="https://tvm.apache.org/docs/how_to/deploy_models/deploy_model_on_adreno.html">How To Deploy model on Adreno</a></p>
+<p><img alt="Android deployment pipeline" src="https://raw.githubusercontent.com/tlc-pack/web-data/main/images/how-to/android_deployment_pipeline.jpg" /></p>
+<p><em>Fig.2 Deployment pipeline on Adreno devices</em></p>
+<p>The figure above demonstrates a generalized pipeline for deploying and running neural network models on android devices.
+As can be seen from the figure, the compiled model has a set_input() and a run() methods,
+which <em>prepare the inputs</em> for inference and <em>execute the inference</em> on the remote device using the Graph Executor runtime module.</p>
+<div class="section" id="adreno-target">
+<h3>Adreno target<a class="headerlink" href="#adreno-target" title="Permalink to this headline">¶</a></h3>
+<p>Normally, when compiling models for Android using OpenCL, the
+corresponding target is used</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">target</span><span class="o">=</span><span class="s2">&quot;opencl&quot;</span>
+</pre></div>
+</div>
+<p>Using Adreno, we want to get all the benefits of textures, so we have to
+use the following target to generate texture leveraging kernels</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">target</span><span class="o">=</span><span class="s2">&quot;opencl -device=adreno&quot;</span>
+</pre></div>
+</div>
+<p>Let’s write a simple model with one convolutional (conv2d) layer and take a look at generated kernels for these
+two targets</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">tvm</span>
+<span class="kn">from</span> <span class="nn">tvm</span> <span class="kn">import</span> <span class="n">relay</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="n">input_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">56</span><span class="p">,</span> <span class="mi">56</span><span class="p">,</span> <span class="mi">32</span><span class="p">)</span>
+<span class="n">filter_shape</span><span class="o">=</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">64</span><span class="p">)</span>
+<span class="nb">filter</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="o">*</span><span class="n">filter_shape</span><span class="p">)</span>
+
+<span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float32&quot;</span>
+<span class="nb">input</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">relay</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">&quot;input&quot;</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="n">input_shape</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span>
+<span class="n">weight</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">relay</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s2">&quot;weight&quot;</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="n">filter_shape</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span>
+<span class="n">D</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">conv2d</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">weight</span><span class="p">,</span> <span class="n">padding</span><span class="o">=</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> < [...]
+
+<span class="n">mod</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">Function</span><span class="p">([</span><span class="nb">input</span><span class="p">,</span> <span class="n">weight</span><span class="p">],</span> <span class="n">D</span><span class="p">)</span>
+<span class="n">params</span> <span class="o">=</span> <span class="p">{</span>
+   <span class="s2">&quot;weight&quot;</span><span class="p">:</span> <span class="n">tvm</span><span class="o">.</span><span class="n">nd</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="nb">filter</span><span class="p">)</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Now compile our model with the classic OpenCL target and print its modules:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">target</span><span class="o">=</span><span class="s2">&quot;opencl&quot;</span>
+
+<span class="k">with</span> <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+   <span class="n">graph</span><span class="p">,</span> <span class="n">lib</span><span class="p">,</span> <span class="n">params</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">build_module</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span cla [...]
+<span class="nb">print</span><span class="p">(</span><span class="n">lib</span><span class="o">.</span><span class="n">imported_modules</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_source</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>Notice that the generated convolution kernel has pointers in
+the initialization of the function. The kernels generated with the above target are buffer-based.</p>
+<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">__kernel</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">tvmgen_default_fused_nn_conv2d_kernel0</span><span class="p">(</span><span class="n">__global</span><span class="w"> </span><span class="kt">float</span><span class="o">*</span><span class="w"> </span><span class="kr">restrict</span><span class="w"> </span><span class="n">p0</span><span cla [...]
+<span class="c1">// body..</span>
+</pre></div>
+</div>
+<p>Now take a look at “opencl -device=adreno” target:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">target</span><span class="o">=</span><span class="s2">&quot;opencl -device=adreno&quot;</span>
+
+<span class="k">with</span> <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+   <span class="n">graph</span><span class="p">,</span> <span class="n">lib</span><span class="p">,</span> <span class="n">params</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">build_module</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span cla [...]
+<span class="nb">print</span><span class="p">(</span><span class="n">lib</span><span class="o">.</span><span class="n">imported_modules</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">get_source</span><span class="p">())</span>
+</pre></div>
+</div>
+<p>The kernels generated this way is actually working with 2d arrays, leveraging textures</p>
+<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">__kernel</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">tvmgen_default_fused_nn_conv2d_kernel0</span><span class="p">(</span><span class="n">__write_only</span><span class="w"> </span><span class="n">image2d_t</span><span class="w"> </span><span class="n">pad_temp_global_texture</span><span class="p">,</span><span class="w"> </span><span class=" [...]
+<span class="c1">// body..</span>
+</pre></div>
+</div>
+<p><em>image2d_t</em> is a built-in OpenCL types that represents two-dimensional image object and provides several additional functions.
+When we use <em>image2d_t</em> we read <em>4 elements at one time</em>, and it helps to utilize hardware in a more efficient way.</p>
+</div>
+<div class="section" id="precisions">
+<h3>Precisions<a class="headerlink" href="#precisions" title="Permalink to this headline">¶</a></h3>
+<p>The right choice of precision for a specific workload can greatly increase the efficiency of the solution,
+shifting the initial balance of precision and speed to the side that is a priority for the problem.</p>
+<p>We can choose from <em>float16</em>, <em>float16_acc32</em> (Mixed Precision), <em>float32</em> (standard).</p>
+<p><strong>Float16</strong></p>
+<p>To leverage the GPU hardware capabilities and utilize the benefits of half precision computation and memory management,
+we can convert an original model having floating points operation to a model operating with half precision.
+Choosing lower precision will positively affect the performance of the model, but it may also have a decrease in the accuracy of the model.
+To do the conversion you need to write a simple conversion function and specify the <em>dtype</em> value of “float16” before calling the function:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span>  <span class="nf">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">dtype</span><span class="p">):</span>
+   <span class="c1"># downcast to float16</span>
+   <span class="k">if</span>  <span class="n">dtype</span> <span class="o">==</span> <span class="s2">&quot;float16&quot;</span><span class="p">:</span>
+      <span class="k">global</span>  <span class="n">conv2d_acc</span> <span class="o">=</span> <span class="s2">&quot;float16&quot;</span>
+      <span class="kn">from</span>  <span class="nn">tvm.ir</span>  <span class="kn">import</span>  <span class="n">IRModule</span>
+      <span class="n">mod</span> <span class="o">=</span> <span class="n">IRModule</span><span class="o">.</span><span class="n">from_expr</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+      <span class="n">seq</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
+         <span class="p">[</span>
+               <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">InferType</span><span class="p">(),</span>
+               <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">ToMixedPrecision</span><span class="p">()</span>
+         <span class="p">]</span>
+      <span class="p">)</span>
+      <span class="k">with</span>  <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+         <span class="n">mod</span> <span class="o">=</span> <span class="n">seq</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+   <span class="k">return</span>  <span class="n">mod</span>
+
+<span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float16&quot;</span>
+<span class="n">mod</span> <span class="o">=</span> <span class="n">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">[</span><span class="s2">&quot;main&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>We then can compile our model in any convinient way</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span>  <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+    <span class="n">lib</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
+        <span class="n">mod</span><span class="p">,</span> <span class="n">target_host</span><span class="o">=</span><span class="n">target_host</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">params</span>
+    <span class="p">)</span>
+</pre></div>
+</div>
+<p><strong>float16_acc32 (Mixed Precision)</strong></p>
+<p>ToMixedPrecision pass traverse over the network and split network to clusters of ops dealing with float or float16 data types.
+The clusters are defined by three types of operations:
+- Operations always be converted into float16 data type
+- Operations which can be converted if they follow by converted cluster
+- Operations never be converted to the float16 data type
+This list is defined in the ToMixedPrecision implementation here
+<a class="reference external" href="https://github.com/apache/tvm/blob/main/python/tvm/relay/transform/mixed_precision.py#L34">relay/transform/mixed_precision.py</a>
+and can be overridden by user</p>
+<p>In some cases, we want higher precision in accumulation than the input data.
+This is supported, for example, for conv2d and dense operations. To override accumulation type you need to register
+function with <code class="docutils literal notranslate"><span class="pre">&#64;register_mixed_precision_conversion</span></code> decorator to modify parameters of <code class="docutils literal notranslate"><span class="pre">ToMixedPrecision</span></code> conversion</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span>  <span class="nn">tvm.relay.op</span>  <span class="kn">import</span>  <span class="n">register_mixed_precision_conversion</span>
+
+<span class="n">conv2d_acc</span> <span class="o">=</span> <span class="s2">&quot;float32&quot;</span>
+
+<span class="c1"># Pick a priority &gt; 10 to overwrite defaults, higher priorities take precedence</span>
+<span class="nd">@register_mixed_precision_conversion</span><span class="p">(</span><span class="s2">&quot;nn.conv2d&quot;</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
+<span class="k">def</span>  <span class="nf">conv2d_mixed_precision_rule</span><span class="p">(</span><span class="n">call_node</span><span class="p">:</span> <span class="s2">&quot;relay.Call&quot;</span><span class="p">,</span> <span class="n">mixed_precision_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+    <span class="k">global</span>  <span class="n">conv2d_acc</span>
+    <span class="k">return</span> <span class="p">[</span>
+        <span class="c1"># always do main calculation in mixed_precision_type</span>
+        <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">mixed_precision</span><span class="o">.</span><span class="n">MIXED_PRECISION_ALWAYS</span><span class="p">,</span>
+        <span class="c1"># the dtype for the accumulator</span>
+        <span class="n">conv2d_acc</span><span class="p">,</span>
+        <span class="c1"># the output dtype for the operation (usually fp16)</span>
+        <span class="n">mixed_precision_type</span><span class="p">,</span>
+    <span class="p">]</span>
+
+<span class="c1"># Same for dense</span>
+<span class="nd">@register_mixed_precision_conversion</span><span class="p">(</span><span class="s2">&quot;nn.dense&quot;</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
+<span class="k">def</span>  <span class="nf">conv2d_mixed_precision_rule</span><span class="p">(</span><span class="n">call_node</span><span class="p">:</span> <span class="s2">&quot;relay.Call&quot;</span><span class="p">,</span> <span class="n">mixed_precision_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+    <span class="k">global</span>  <span class="n">conv2d_acc</span>
+    <span class="k">return</span> <span class="p">[</span>
+        <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">mixed_precision</span><span class="o">.</span><span class="n">MIXED_PRECISION_ALWAYS</span><span class="p">,</span>
+        <span class="n">conv2d_acc</span><span class="p">,</span>
+        <span class="n">mixed_precision_type</span><span class="p">,</span>
+    <span class="p">]</span>
+</pre></div>
+</div>
+<p>Now we need to modify the conversion function by adding some logical “forks” and ToMixedPrecision() call,
+then create a Relay graph from desired model in any convinient way and obtain <strong>mod</strong> (which is IR representation of the model),
+after which we can convert it to the required <strong>dtype</strong> and then assemble our model sequentialy</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span>  <span class="nf">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="n">dtype</span><span class="p">):</span>
+    <span class="c1"># downcast to float16</span>
+    <span class="k">if</span>  <span class="n">dtype</span> <span class="o">==</span> <span class="s2">&quot;float16&quot;</span>  <span class="ow">or</span>  <span class="n">dtype</span> <span class="o">==</span> <span class="s2">&quot;float16_acc32&quot;</span><span class="p">:</span>
+        <span class="k">global</span>  <span class="n">conv2d_acc</span>
+        <span class="n">conv2d_acc</span> <span class="o">=</span> <span class="s2">&quot;float16&quot;</span>  <span class="k">if</span>  <span class="n">dtype</span> <span class="o">==</span> <span class="s2">&quot;float16&quot;</span>  <span class="k">else</span>  <span class="s2">&quot;float32&quot;</span>
+        <span class="kn">from</span>  <span class="nn">tvm.ir</span>  <span class="kn">import</span>  <span class="n">IRModule</span>
+        <span class="n">mod</span> <span class="o">=</span> <span class="n">IRModule</span><span class="o">.</span><span class="n">from_expr</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+        <span class="n">seq</span> <span class="o">=</span> <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
+            <span class="p">[</span>
+                <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">InferType</span><span class="p">(),</span>
+                <span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">ToMixedPrecision</span><span class="p">()</span>
+            <span class="p">]</span>
+        <span class="p">)</span>
+        <span class="k">with</span> <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span>
+             <span class="n">config</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;relay.ToMixedPrecision.keep_orig_output_dtype&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">},</span>
+             <span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+         <span class="n">mod</span> <span class="o">=</span> <span class="n">seq</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+    <span class="k">return</span>  <span class="n">mod</span>
+
+<span class="n">dtype</span><span class="o">=</span><span class="s2">&quot;float16_acc32&quot;</span>
+<span class="n">mod</span> <span class="o">=</span> <span class="n">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">[</span><span class="s2">&quot;main&quot;</span><span class="p">],</span> <span class="n">dtype</span><span class="p">)</span>
+<span class="n">dtype</span> <span class="o">=</span> <span class="s2">&quot;float32&quot;</span>  <span class="k">if</span>  <span class="n">dtype</span> <span class="o">==</span> <span class="s2">&quot;float32&quot;</span>  <span class="k">else</span>  <span class="s2">&quot;float16&quot;</span>
+</pre></div>
+</div>
+<p>The <code class="docutils literal notranslate"><span class="pre">ToMixedPrecision</span></code> method is a pass to convert an FP32 relay graph into an FP16 version (with
+FP16 or FP32 accumulation dtypes). Doing this transformation is useful for reducing model size
+as it halves the expected size of the weights (FP16_acc16 case).</p>
+<p>From this point onwards, we can compile our model as normal</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span>  <span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span>
+    <span class="n">lib</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
+        <span class="n">mod</span><span class="p">,</span> <span class="n">target_host</span><span class="o">=</span><span class="n">target_host</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> <span class="n">params</span><span class="o">=</span><span class="n">params</span>
+    <span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          
+
+<footer>
+
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="integrate.html" class="btn btn-neutral float-right" title="Integrate TVM into Your Project" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="android.html" class="btn btn-neutral float-left" title="Deploy to Android" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+
+<div id="button" class="backtop"><img src="../../_static/img/right.svg" alt="backtop"/> </div>
+<section class="footerSec">
+    <div class="footerHeader">
+      <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
+        <div class="copywrite d-flex align-items-center">
+          <h5 id="copy-right-info">© 2022 Apache Software Foundation | All rights reserved</h5>
+        </div>
+      </div>
+
+    </div>
+
+    <div>
+      <div class="footernote">Copyright © 2022 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+    </div>
+
+</section>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+  </body>
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+    <!-- Theme Analytics -->
+    <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-75982049-2', 'auto');
+    ga('send', 'pageview');
+    </script>
+
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/how_to/deploy/android.html b/docs/how_to/deploy/android.html
index 0c0c208cb1..24b259d37a 100644
--- a/docs/how_to/deploy/android.html
+++ b/docs/how_to/deploy/android.html
@@ -48,7 +48,7 @@
     <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Integrate TVM into Your Project" href="integrate.html" />
+    <link rel="next" title="Deploy to Adreno GPU" href="adreno.html" />
     <link rel="prev" title="Deploy TVM Module using C++ API" href="cpp_deploy.html" /> 
 </head>
 
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
@@ -407,7 +408,7 @@ From android java TVM API to load model &amp; execute can be referred at this <a
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="integrate.html" class="btn btn-neutral float-right" title="Integrate TVM into Your Project" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="adreno.html" class="btn btn-neutral float-right" title="Deploy to Adreno GPU" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="cpp_deploy.html" class="btn btn-neutral float-left" title="Deploy TVM Module using C++ API" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/how_to/deploy/arm_compute_lib.html b/docs/how_to/deploy/arm_compute_lib.html
index c690d236f4..b0d710ee40 100644
--- a/docs/how_to/deploy/arm_compute_lib.html
+++ b/docs/how_to/deploy/arm_compute_lib.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy/bnns.html b/docs/how_to/deploy/bnns.html
index db9b55f53f..c8b3c444ae 100644
--- a/docs/how_to/deploy/bnns.html
+++ b/docs/how_to/deploy/bnns.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy/cpp_deploy.html b/docs/how_to/deploy/cpp_deploy.html
index 3118d24d32..af98e6a5c7 100644
--- a/docs/how_to/deploy/cpp_deploy.html
+++ b/docs/how_to/deploy/cpp_deploy.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4 current"><a class="current reference internal" href="#">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy/hls.html b/docs/how_to/deploy/hls.html
index 9e046810e7..9a951d5618 100644
--- a/docs/how_to/deploy/hls.html
+++ b/docs/how_to/deploy/hls.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy/index.html b/docs/how_to/deploy/index.html
index 9583a7843b..7e3971c75d 100644
--- a/docs/how_to/deploy/index.html
+++ b/docs/how_to/deploy/index.html
@@ -247,6 +247,7 @@
 <li class="toctree-l3"><a class="reference internal" href="#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul>
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
@@ -509,6 +510,13 @@ target device without relying on RPC. See the following resources on how to do s
 <li class="toctree-l2"><a class="reference internal" href="android.html#tvm-runtime-for-android-target">TVM Runtime for Android Target</a></li>
 </ul>
 </li>
+<li class="toctree-l1"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="adreno.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="adreno.html#advantages-of-the-textures">Advantages of the Textures</a></li>
+<li class="toctree-l2"><a class="reference internal" href="adreno.html#building-tvm-for-adreno">Building TVM for Adreno</a></li>
+<li class="toctree-l2"><a class="reference internal" href="adreno.html#build-and-deploy-model-for-adreno">Build and deploy model for Adreno</a></li>
+</ul>
+</li>
 <li class="toctree-l1"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a><ul>
 <li class="toctree-l2"><a class="reference internal" href="integrate.html#dlpack-support">DLPack Support</a></li>
 <li class="toctree-l2"><a class="reference internal" href="integrate.html#integrate-user-defined-c-array">Integrate User Defined C++ Array</a></li>
diff --git a/docs/how_to/deploy/integrate.html b/docs/how_to/deploy/integrate.html
index 703c8f2ab2..5e9c5c85bd 100644
--- a/docs/how_to/deploy/integrate.html
+++ b/docs/how_to/deploy/integrate.html
@@ -49,7 +49,7 @@
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="next" title="HLS Backend Example" href="hls.html" />
-    <link rel="prev" title="Deploy to Android" href="android.html" /> 
+    <link rel="prev" title="Deploy to Adreno GPU" href="adreno.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4 current"><a class="current reference internal" href="#">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
@@ -434,7 +435,7 @@ So the only thing you need to solve is to create a corresponding DLTensor object
         <a href="hls.html" class="btn btn-neutral float-right" title="HLS Backend Example" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="android.html" class="btn btn-neutral float-left" title="Deploy to Android" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="adreno.html" class="btn btn-neutral float-left" title="Deploy to Adreno GPU" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
 
diff --git a/docs/how_to/deploy/tensorrt.html b/docs/how_to/deploy/tensorrt.html
index b411189637..8491694e84 100644
--- a/docs/how_to/deploy/tensorrt.html
+++ b/docs/how_to/deploy/tensorrt.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy/vitis_ai.html b/docs/how_to/deploy/vitis_ai.html
index a64fa3c906..775af3d478 100644
--- a/docs/how_to/deploy/vitis_ai.html
+++ b/docs/how_to/deploy/vitis_ai.html
@@ -243,6 +243,7 @@
 <li class="toctree-l3 current"><a class="reference internal" href="index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a><ul class="current">
 <li class="toctree-l4"><a class="reference internal" href="cpp_deploy.html">Deploy TVM Module using C++ API</a></li>
 <li class="toctree-l4"><a class="reference internal" href="android.html">Deploy to Android</a></li>
+<li class="toctree-l4"><a class="reference internal" href="adreno.html">Deploy to Adreno GPU</a></li>
 <li class="toctree-l4"><a class="reference internal" href="integrate.html">Integrate TVM into Your Project</a></li>
 <li class="toctree-l4"><a class="reference internal" href="hls.html">HLS Backend Example</a></li>
 <li class="toctree-l4"><a class="reference internal" href="arm_compute_lib.html">Relay Arm<sup>®</sup> Compute Library Integration</a></li>
diff --git a/docs/how_to/deploy_models/deploy_model_on_adreno.html b/docs/how_to/deploy_models/deploy_model_on_adreno.html
new file mode 100644
index 0000000000..af01d84a03
--- /dev/null
+++ b/docs/how_to/deploy_models/deploy_model_on_adreno.html
@@ -0,0 +1,1008 @@
+
+
+
+
+
+
+<!DOCTYPE html>
+<html class="writer-html5" lang="en" >
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Deploy the Pretrained Model on Adreno &mdash; tvm 0.11.dev0 documentation</title>
+  
+
+  
+  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/theme.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-binder.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-dataframe.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/sg_gallery-rendered-html.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+  <link rel="stylesheet" href="../../_static/css/tlcpack_theme.css" type="text/css" />
+
+  
+  
+    <link rel="shortcut icon" href="../../_static/tvm-logo-square.png"/>
+  
+
+  
+  
+  
+  
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
+        <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+        <script src="../../_static/jquery.js"></script>
+        <script src="../../_static/underscore.js"></script>
+        <script src="../../_static/doctools.js"></script>
+    
+    <script type="text/javascript" src="../../_static/js/theme.js"></script>
+
+    
+    <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="Deploy the Pretrained Model on Android" href="deploy_model_on_android.html" />
+    <link rel="prev" title="Deploy Deep Learning Models" href="index.html" /> 
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+    
+    
+<header class="header">
+    <div class="innercontainer">
+      <div class="headerInner d-flex justify-content-between align-items-center">
+          <div class="headerLogo">
+               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
+          </div>
+
+          <div id="headMenu" class="headerNav">
+            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../../_static/img/close-icon.svg" alt="Close"></button>
+             <ul class="nav">
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
+                </li>
+                <li class="nav-item">
+                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
+                </li>
+             </ul>
+               <div class="responsivetlcdropdown">
+                 <button type="button" class="btn-link">
+                   ASF
+                 </button>
+                 <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/security/>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                 </ul>
+               </div>
+          </div>
+            <div class="responsiveMenuIcon">
+              <button type="button" id="menuBtn" class="btn-menu"><img src="../../_static/img/menu-icon.svg" alt="Menu Icon"></button>
+            </div>
+
+            <div class="tlcDropdown">
+              <div class="dropdown">
+                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                  ASF
+                </button>
+                <div class="dropdown-menu dropdown-menu-right">
+                  <ul>
+                     <li>
+                       <a href=https://apache.org/>Apache Homepage</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/licenses/>License</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/security/>Security</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
+                     </li>
+                     <li>
+                       <a href=https://www.apache.org/events/current-event>Events</a>
+                     </li>
+                  </ul>
+                </div>
+              </div>
+          </div>
+       </div>
+    </div>
+ </header>
+ 
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search" >
+          
+
+          
+            <a href="../../index.html">
+          
+
+          
+            
+            <img src="../../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
+          
+          </a>
+
+          
+            
+            
+              <input type="checkbox" class="version-toggle-box" hidden id="version-toggle">
+              <label for="version-toggle" class="version-toggle-label">
+                  <div tabindex="0" class="version version-selector version-selector-show">
+                    0.11.dev0 <span class="chevron versions-hidden"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m8 4 8 8-8 8" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></svg></span><span class="chevron versions-shown"><svg fill="none" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="m4 8 8 8 8-8" stroke="#000" stroke-linecap="round" stroke-linejoin="round [...]
+                  </div>
+                </label>
+                <div class="version-details wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+                  <p class="caption" role="heading"><span class="caption-text">Versions</span></p>
+                  <ol style="text-align: left">
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="/">0.11.dev0 (main)</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.8.0/">v0.8.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.9.0/">v0.9.0</a></div></li>
+                    
+                    
+                    
+                    
+                      <li><div class="version"><a style="font-size: 0.8em; padding: 4px" href="v0.10.0/">v0.10.0</a></div></li>
+                    
+                  </ol>
+                </div>
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../install/index.html">Installing TVM</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../contribute/index.html">Contributor Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">User Guide</span></p>
+<ul class="current">
+<li class="toctree-l1"><a class="reference internal" href="../../tutorial/index.html">User Tutorial</a></li>
+<li class="toctree-l1 current"><a class="reference internal" href="../index.html">How To Guides</a><ul class="current">
+<li class="toctree-l2"><a class="reference internal" href="../compile_models/index.html">Compile Deep Learning Models</a></li>
+<li class="toctree-l2 current"><a class="reference internal" href="../deploy/index.html">Deploy Models and Integrate TVM</a><ul class="current">
+<li class="toctree-l3"><a class="reference internal" href="../deploy/index.html#build-the-tvm-runtime-library">Build the TVM runtime library</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../deploy/index.html#cross-compile-the-tvm-runtime-for-other-architectures">Cross compile the TVM runtime for other architectures</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../deploy/index.html#optimize-and-tune-models-for-target-devices">Optimize and tune models for target devices</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../deploy/index.html#deploy-optimized-model-on-target-devices">Deploy optimized model on target devices</a></li>
+<li class="toctree-l3 current"><a class="reference internal" href="../deploy/index.html#additional-deployment-how-tos">Additional Deployment How-Tos</a><ul class="current">
+<li class="toctree-l4 current"><a class="reference internal" href="index.html">Deploy Deep Learning Models</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_relay/index.html">Work With Relay</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_schedules/index.html">Work With Tensor Expression and Schedules</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../optimize_operators/index.html">Optimize Tensor Operators</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../tune_with_autotvm/index.html">Auto-Tune with Templates and AutoTVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../tune_with_autoscheduler/index.html">Use AutoScheduler for Template-Free Scheduling</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../work_with_microtvm/index.html">Work With microTVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../extend_tvm/index.html">Extend TVM</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../profile/index.html">Profile Models</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../../errors.html">Handle TVM Errors</a></li>
+<li class="toctree-l2"><a class="reference internal" href="../../faq.html">Frequently Asked Questions</a></li>
+</ul>
+</li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Developer Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/tutorial/index.html">Developer Tutorial</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../dev/how_to/how_to.html">Developer How-To Guide</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Architecture  Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../arch/index.html">Design and Architecture</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Topic Guides</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/microtvm/index.html">microTVM: TVM on bare-metal</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
+</ul>
+<p class="caption" role="heading"><span class="caption-text">Reference Guide</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/langref/index.html">Language Reference</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/python/index.html">Python API</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/api/links.html">Other APIs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../reference/publications.html">Publications</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../genindex.html">Index</a></li>
+</ul>
+
+            
+          
+        </div>
+        
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+      
+      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
+        
+            <div class="togglemenu">
+
+            </div>
+            <div class="nav-content">
+              <!-- tvm -->
+              Table of Contents
+            </div>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../../index.html">Docs</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="../index.html">How To Guides</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="../deploy/index.html">Deploy Models and Integrate TVM</a> <span class="br-arrow">></span></li>
+        
+          <li><a href="index.html">Deploy Deep Learning Models</a> <span class="br-arrow">></span></li>
+        
+      <li>Deploy the Pretrained Model on Adreno</li>
+    
+    
+      
+      
+        
+      
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            
+              <a href="https://github.com/apache/tvm/edit/main/docs/how_to/deploy_models/deploy_model_on_adreno.rst" class="fa fa-github"> Edit on GitHub</a>
+            
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="sphx-glr-download-link-note admonition note">
+<p class="admonition-title">Note</p>
+<p>Click <a class="reference internal" href="#sphx-glr-download-how-to-deploy-models-deploy-model-on-adreno-py"><span class="std std-ref">here</span></a>
+to download the full example code</p>
+</div>
+<div class="sphx-glr-example-title section" id="deploy-the-pretrained-model-on-adreno">
+<span id="tutorial-deploy-model-on-adreno"></span><span id="sphx-glr-how-to-deploy-models-deploy-model-on-adreno-py"></span><h1>Deploy the Pretrained Model on Adreno<a class="headerlink" href="#deploy-the-pretrained-model-on-adreno" title="Permalink to this headline">¶</a></h1>
+<p><strong>Author</strong>: Daniil Barinov</p>
+<p>This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno (on different precisions).</p>
+<p>For us to begin with, PyTorch must be installed.
+TorchVision is also required since we will be using it as our model zoo.</p>
+<p>A quick solution is to install it via pip:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>pip install torch
+pip install torchvision
+</pre></div>
+</div>
+<p>Besides that, you should have TVM builded for Android.
+See the following instructions on how to build it.</p>
+<p><a class="reference external" href="https://tvm.apache.org/docs/how_to/deploy/adreno.html">Deploy to Adreno GPU</a></p>
+<p>After the build section there should be two files in <em>build</em> directory «libtvm_runtime.so» and «tvm_rpc».
+Let’s push them to the device and run TVM RPC Server.</p>
+<div class="section" id="tvm-rpc-server">
+<h2>TVM RPC Server<a class="headerlink" href="#tvm-rpc-server" title="Permalink to this headline">¶</a></h2>
+<p>To get the hash of the device use:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>adb devices
+</pre></div>
+</div>
+<p>Then to upload these two files to the device you should use:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>adb -s &lt;device_hash&gt; push <span class="o">{</span>libtvm_runtime.so,tvm_rpc<span class="o">}</span> /data/local/tmp
+</pre></div>
+</div>
+<p>At this moment you will have «libtvm_runtime.so» and «tvm_rpc» on path /data/local/tmp on your device.
+Sometimes cmake can’t find «libc++_shared.so». Use:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>find <span class="si">${</span><span class="nv">ANDROID_NDK_HOME</span><span class="si">}</span> -name libc++_shared.so
+</pre></div>
+</div>
+<p>to find it and also push it with adb on the desired device:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>adb -s &lt;device_hash&gt; push libc++_shared.so /data/local/tmp
+</pre></div>
+</div>
+<p>We are now ready to run the TVM RPC Server.
+Launch rpc_tracker with following line in 1st console:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python3 -m tvm.exec.rpc_tracker --port <span class="m">9190</span>
+</pre></div>
+</div>
+<p>Then we need to run tvm_rpc server from under the desired device in 2nd console:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>adb -s &lt;device_hash&gt; reverse tcp:9190 tcp:9190
+adb -s &lt;device_hash&gt; forward tcp:9090 tcp:9090
+adb -s &lt;device_hash&gt; forward tcp:9091 tcp:9091
+adb -s &lt;device_hash&gt; forward tcp:9092 tcp:9092
+adb -s &lt;device_hash&gt; forward tcp:9093 tcp:9093
+adb -s &lt;device_hash&gt; shell <span class="nv">LD_LIBRARY_PATH</span><span class="o">=</span>/data/local/tmp /data/local/tmp/tvm_rpc server --host<span class="o">=</span><span class="m">0</span>.0.0.0 --port<span class="o">=</span><span class="m">9090</span> --tracker<span class="o">=</span><span class="m">127</span>.0.0.1:9190 --key<span class="o">=</span>android --port-end<span class="o">=</span><span class="m">9190</span>
+</pre></div>
+</div>
+<p>Before proceeding to compile and infer model, specify TVM_TRACKER_HOST and TVM_TRACKER_PORT</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nb">export</span> <span class="nv">TVM_TRACKER_HOST</span><span class="o">=</span><span class="m">0</span>.0.0.0
+<span class="nb">export</span> <span class="nv">TVM_TRACKER_PORT</span><span class="o">=</span><span class="m">9190</span>
+</pre></div>
+</div>
+<p>check that the tracker is running and the device is available</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>python -m tvm.exec.query_rpc_tracker --port <span class="m">9190</span>
+</pre></div>
+</div>
+<p>For example, if we have 1 Android device,
+the output can be:</p>
+<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>Queue Status
+----------------------------------
+key          total  free  pending
+----------------------------------
+android      <span class="m">1</span>      <span class="m">1</span>     <span class="m">0</span>
+----------------------------------
+</pre></div>
+</div>
+</div>
+<div class="section" id="load-a-test-image">
+<h2>Load a test image<a class="headerlink" href="#load-a-test-image" title="Permalink to this headline">¶</a></h2>
+<p>As an example we would use classical cat image from ImageNet</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span>
+<span class="kn">from</span> <span class="nn">tvm.contrib.download</span> <span class="kn">import</span> <span class="n">download_testdata</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">img_url</span></a> <span class="o">=</span> <span class="s2">&quot;https://github.com/dmlc/mxnet.js/blob/main/data/cat.png?raw=true&quot;</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">img_path</span></a> <span class="o">=</span> <span class="n">download_testdata</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span [...]
+<span class="n">img</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">img_path</span></a><span class="p">)</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="mi">22 [...]
+<span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
+<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
+
+<span class="c1"># Preprocess the image and convert to tensor</span>
+<span class="kn">from</span> <span class="nn">torchvision</span> <span class="kn">import</span> <span class="n">transforms</span>
+
+<span class="n">my_preprocess</span> <span class="o">=</span> <span class="n">transforms</span><span class="o">.</span><span class="n">Compose</span><span class="p">(</span>
+    <span class="p">[</span>
+        <span class="n">transforms</span><span class="o">.</span><span class="n">Resize</span><span class="p">(</span><span class="mi">256</span><span class="p">),</span>
+        <span class="n">transforms</span><span class="o">.</span><span class="n">CenterCrop</span><span class="p">(</span><span class="mi">224</span><span class="p">),</span>
+        <span class="n">transforms</span><span class="o">.</span><span class="n">ToTensor</span><span class="p">(),</span>
+        <span class="n">transforms</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="n">mean</span><span class="o">=</span><span class="p">[</span><span class="mf">0.485</span><span class="p">,</span> <span class="mf">0.456</span><span class="p">,</span> <span class="mf">0.406</span><span class="p">],</span> <span class="n">std</span><span class="o">=</span><span class="p">[</span><span class="mf">0.229</span><span class="p">,</span> <span [...]
+    <span class="p">]</span>
+<span class="p">)</span>
+<span class="n">img</span> <span class="o">=</span> <span class="n">my_preprocess</span><span class="p">(</span><span class="n">img</span><span class="p">)</span>
+<span class="n">img</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">expand_dims</span><span class="p">(</span><span class="n">img</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</pre></div>
+</div>
+<img src="../../_images/sphx_glr_deploy_model_on_adreno_001.png" srcset="../../_images/sphx_glr_deploy_model_on_adreno_001.png" alt="deploy model on adreno" class = "sphx-glr-single-img"/></div>
+<div class="section" id="load-pretrained-pytorch-model">
+<h2>Load pretrained Pytorch model<a class="headerlink" href="#load-pretrained-pytorch-model" title="Permalink to this headline">¶</a></h2>
+<p>Create a Relay graph from a Pytorch ResNet-18 model</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>
+<span class="kn">import</span> <span class="nn">torch</span>
+<span class="kn">import</span> <span class="nn">torchvision</span>
+<span class="kn">import</span> <span class="nn">tvm</span>
+<span class="kn">from</span> <span class="nn">tvm</span> <span class="kn">import</span> <span class="n">te</span>
+<span class="kn">from</span> <span class="nn">tvm</span> <span class="kn">import</span> <span class="n">relay</span><span class="p">,</span> <span class="n">rpc</span>
+<span class="kn">from</span> <span class="nn">tvm.contrib</span> <span class="kn">import</span> <span class="n">utils</span><span class="p">,</span> <span class="n">ndk</span>
+<span class="kn">from</span> <span class="nn">tvm.contrib</span> <span class="kn">import</span> <span class="n">graph_executor</span>
+
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">model_name</span></a> <span class="o">=</span> <span class="s2">&quot;resnet18&quot;</span>
+<span class="n">model</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">torchvision</span><span class="o">.</span><span class="n">models</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">model_name</span></a><span class="p">)(</span><span class="n">pretrained</ [...]
+<span class="n">model</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
+
+<span class="c1"># We grab the TorchScripted model via tracing</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">input_shape</span></a> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">224</span><span class="p">,</span> <span class="mi">224</span><span class="p">]</span>
+<span class="n">input_data</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">input_shape</span></a><span class="p">)</span>
+<span class="n">scripted_model</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">jit</span><span class="o">.</span><span class="n">trace</span><span class="p">(</span><span class="n">model</span><span class="p">,</span> <span class="n">input_data</span><span class="p">)</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
+
+<span class="c1"># Input name can be arbitrary</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">input_name</span></a> <span class="o">=</span> <span class="s2">&quot;input0&quot;</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#list" title="builtins.list" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">shape_list</span></a> <span class="o">=</span> <span class="p">[(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">input_name</span></a><sp [...]
+<span class="n">mod</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <a href="../../reference/api/python/relay/frontend.html#tvm.relay.frontend.from_pytorch" title="tvm.relay.frontend.from_pytorch" class="sphx-glr-backref-module-tvm-relay-frontend sphx-glr-backref-typ [...]
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:209: UserWarning: The parameter &#39;pretrained&#39; is deprecated since 0.13 and will be removed in 0.15, please use &#39;weights&#39; instead.
+  f&quot;The parameter &#39;{pretrained_param}&#39; is deprecated since 0.13 and will be removed in 0.15, &quot;
+/venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for &#39;weights&#39; are deprecated since 0.13 and will be removed in 0.15. The current behavior is equivalent to passing `weights=ResNet18_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet18_Weights.DEFAULT` to get the most up-to-date weights.
+  warnings.warn(msg)
+/workspace/python/tvm/relay/frontend/pytorch_utils.py:47: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
+  return LooseVersion(torch_ver) &gt; ver
+/venv/apache-tvm-py3.7/lib/python3.7/site-packages/setuptools/_distutils/version.py:346: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
+  other = LooseVersion(other)
+</pre></div>
+</div>
+</div>
+<div class="section" id="precisions">
+<h2>Precisions<a class="headerlink" href="#precisions" title="Permalink to this headline">¶</a></h2>
+<p>Since TVM support Mixed Precision, we need to register mixed_precision_conversion:</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">tvm.relay.op</span> <span class="kn">import</span> <span class="n">register_mixed_precision_conversion</span>
+
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a> <span class="o">=</span> <span class="s2">&quot;float32&quot;</span>
+
+
+<span class="nd">@register_mixed_precision_conversion</span><span class="p">(</span><span class="s2">&quot;nn.conv2d&quot;</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">conv2d_mixed_precision_rule</span><span class="p">(</span><span class="n">call_node</span><span class="p">:</span> <span class="s2">&quot;relay.Call&quot;</span><span class="p">,</span> <span class="n">mixed_precision_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+    <span class="k">global</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a>
+    <span class="k">return</span> <span class="p">[</span>
+        <a href="https://docs.python.org/3/library/functions.html#int" title="builtins.int" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">mixed_precision</span><span class="o">.</span><span class="n">MIXED_PRECISION_ALWAYS</span></a><span class="p">,</span>
+        <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a><span class="p">,</span>
+        <span class="n">mixed_precision_type</span><span class="p">,</span>
+    <span class="p">]</span>
+
+
+<span class="nd">@register_mixed_precision_conversion</span><span class="p">(</span><span class="s2">&quot;nn.dense&quot;</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
+<span class="k">def</span> <span class="nf">conv2d_mixed_precision_rule</span><span class="p">(</span><span class="n">call_node</span><span class="p">:</span> <span class="s2">&quot;relay.Call&quot;</span><span class="p">,</span> <span class="n">mixed_precision_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span>
+    <span class="k">global</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a>
+    <span class="k">return</span> <span class="p">[</span>
+        <a href="https://docs.python.org/3/library/functions.html#int" title="builtins.int" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">mixed_precision</span><span class="o">.</span><span class="n">MIXED_PRECISION_ALWAYS</span></a><span class="p">,</span>
+        <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a><span class="p">,</span>
+        <span class="n">mixed_precision_type</span><span class="p">,</span>
+    <span class="p">]</span>
+</pre></div>
+</div>
+<p>and also define the conversion function itself</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dtype</span></a><span class="p">):</span>
+    <span class="c1"># downcast to float16</span>
+    <span class="k">if</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dtype</span></a> <span class="o">==</span> <span class="s2">&quot;float16&quot;</span> <span class="ow">or</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-cla [...]
+        <span class="k">global</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a>
+        <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">conv2d_acc</span></a> <span class="o">=</span> <span class="s2">&quot;float16&quot;</span> <span class="k">if</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref [...]
+        <span class="kn">from</span> <span class="nn">tvm.ir</span> <span class="kn">import</span> <span class="n">IRModule</span>
+
+        <span class="n">mod</span> <span class="o">=</span> <a href="../../reference/api/python/ir.html#tvm.ir.IRModule.from_expr" title="tvm.ir.IRModule.from_expr" class="sphx-glr-backref-module-tvm-ir-IRModule sphx-glr-backref-type-py-method"><span class="n">IRModule</span><span class="o">.</span><span class="n">from_expr</span></a><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+        <span class="n">seq</span> <span class="o">=</span> <a href="../../reference/api/python/ir.html#tvm.transform.Sequential" title="tvm.transform.Sequential" class="sphx-glr-backref-module-tvm-transform sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">Sequential</span></a><span class="p">(</span>
+            <span class="p">[</span><a href="../../reference/api/python/relay/transform.html#tvm.relay.transform.InferType" title="tvm.relay.transform.InferType" class="sphx-glr-backref-module-tvm-relay-transform sphx-glr-backref-type-py-function"><span class="n">relay</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">InferType</span></a><span class="p">(),</span> <a href="../../reference/api/python/relay/transform.html#tvm.relay.transf [...]
+        <span class="p">)</span>
+        <span class="k">with</span> <a href="../../reference/api/python/ir.html#tvm.transform.PassContext" title="tvm.transform.PassContext" class="sphx-glr-backref-module-tvm-transform sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span></a><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span [...]
+            <span class="n">mod</span> <span class="o">=</span> <span class="n">seq</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">mod</span>
+</pre></div>
+</div>
+<p>Let’s choose “float16_acc32” for example.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dtype</span></a> <span class="o">=</span> <span class="s2">&quot;float16_acc32&quot;</span>
+<span class="n">mod</span> <span class="o">=</span> <span class="n">convert_to_dtype</span><span class="p">(</span><span class="n">mod</span><span class="p">[</span><span class="s2">&quot;main&quot;</span><span class="p">],</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dtype</span></a><span class="p">)</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dtype</span></a> <span class="o">=</span> <span class="s2">&quot;float32&quot;</span> <span class="k">if</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><s [...]
+
+<span class="nb">print</span><span class="p">(</span><span class="n">mod</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>def @main(%input0: Tensor[(1, 3, 224, 224), float32] /* ty=Tensor[(1, 3, 224, 224), float32] */, %conv1.weight: Tensor[(64, 3, 7, 7), float32] /* ty=Tensor[(64, 3, 7, 7), float32] */, %bn1.weight: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %bn1.bias: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %bn1.running_mean: Tensor[(64), float32] /* ty=Tensor[(64), float32] */, %b [...]
+  %0 = cast(%input0, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 3, 224, 224), float16] */;
+  %1 = cast(%conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64, 3, 7, 7), float16] */;
+  %2 = nn.conv2d(%0, %1, strides=[2, 2], padding=[3, 3, 3, 3], channels=64, kernel_size=[7, 7], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 64, 112, 112), float32] */;
+  %3 = cast(%2, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 64, 112, 112), float16] */;
+  %4 = cast(%bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %5 = cast(%bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %6 = cast(%bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %7 = cast(%bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %8 = nn.batch_norm(%3, %4, %5, %6, %7) /* ty=(Tensor[(1, 64, 112, 112), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+  %9 = %8.0 /* ty=Tensor[(1, 64, 112, 112), float16] */;
+  %10 = nn.relu(%9) /* ty=Tensor[(1, 64, 112, 112), float16] */;
+  %11 = nn.max_pool2d(%10, pool_size=[3, 3], strides=[2, 2], padding=[1, 1, 1, 1]) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %12 = cast(%layer1.0.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64, 64, 3, 3), float16] */;
+  %13 = nn.conv2d(%11, %12, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 64, 56, 56), float32] */;
+  %14 = cast(%13, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %15 = cast(%layer1.0.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %16 = cast(%layer1.0.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %17 = cast(%layer1.0.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %18 = cast(%layer1.0.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %19 = nn.batch_norm(%14, %15, %16, %17, %18) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+  %20 = %19.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %21 = nn.relu(%20) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %22 = cast(%layer1.0.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64, 64, 3, 3), float16] */;
+  %23 = nn.conv2d(%21, %22, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 64, 56, 56), float32] */;
+  %24 = cast(%23, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %25 = cast(%layer1.0.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %26 = cast(%layer1.0.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %27 = cast(%layer1.0.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %28 = cast(%layer1.0.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %29 = nn.batch_norm(%24, %25, %26, %27, %28) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+  %30 = %29.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %31 = add(%30, %11) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %32 = nn.relu(%31) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %33 = cast(%layer1.1.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64, 64, 3, 3), float16] */;
+  %34 = nn.conv2d(%32, %33, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 64, 56, 56), float32] */;
+  %35 = cast(%34, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %36 = cast(%layer1.1.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %37 = cast(%layer1.1.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %38 = cast(%layer1.1.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %39 = cast(%layer1.1.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %40 = nn.batch_norm(%35, %36, %37, %38, %39) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+  %41 = %40.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %42 = nn.relu(%41) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %43 = cast(%layer1.1.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64, 64, 3, 3), float16] */;
+  %44 = nn.conv2d(%42, %43, padding=[1, 1, 1, 1], channels=64, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 64, 56, 56), float32] */;
+  %45 = cast(%44, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %46 = cast(%layer1.1.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %47 = cast(%layer1.1.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %48 = cast(%layer1.1.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %49 = cast(%layer1.1.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(64), float16] */;
+  %50 = nn.batch_norm(%45, %46, %47, %48, %49) /* ty=(Tensor[(1, 64, 56, 56), float16], Tensor[(64), float16], Tensor[(64), float16]) */;
+  %51 = %50.0 /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %52 = add(%51, %32) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %53 = nn.relu(%52) /* ty=Tensor[(1, 64, 56, 56), float16] */;
+  %54 = cast(%layer2.0.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128, 64, 3, 3), float16] */;
+  %55 = nn.conv2d(%53, %54, strides=[2, 2], padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 128, 28, 28), float32] */;
+  %56 = cast(%55, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %57 = cast(%layer2.0.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %58 = cast(%layer2.0.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %59 = cast(%layer2.0.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %60 = cast(%layer2.0.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %61 = nn.batch_norm(%56, %57, %58, %59, %60) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+  %62 = %61.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %63 = nn.relu(%62) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %64 = cast(%layer2.0.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128, 128, 3, 3), float16] */;
+  %65 = nn.conv2d(%63, %64, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 128, 28, 28), float32] */;
+  %66 = cast(%65, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %67 = cast(%layer2.0.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %68 = cast(%layer2.0.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %69 = cast(%layer2.0.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %70 = cast(%layer2.0.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %71 = nn.batch_norm(%66, %67, %68, %69, %70) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+  %72 = cast(%layer2.0.downsample.0.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128, 64, 1, 1), float16] */;
+  %73 = nn.conv2d(%53, %72, strides=[2, 2], padding=[0, 0, 0, 0], channels=128, kernel_size=[1, 1], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 128, 28, 28), float32] */;
+  %74 = cast(%73, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %75 = cast(%layer2.0.downsample.1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %76 = cast(%layer2.0.downsample.1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %77 = cast(%layer2.0.downsample.1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %78 = cast(%layer2.0.downsample.1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %79 = nn.batch_norm(%74, %75, %76, %77, %78) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+  %80 = %71.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %81 = %79.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %82 = add(%80, %81) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %83 = nn.relu(%82) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %84 = cast(%layer2.1.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128, 128, 3, 3), float16] */;
+  %85 = nn.conv2d(%83, %84, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 128, 28, 28), float32] */;
+  %86 = cast(%85, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %87 = cast(%layer2.1.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %88 = cast(%layer2.1.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %89 = cast(%layer2.1.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %90 = cast(%layer2.1.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %91 = nn.batch_norm(%86, %87, %88, %89, %90) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+  %92 = %91.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %93 = nn.relu(%92) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %94 = cast(%layer2.1.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128, 128, 3, 3), float16] */;
+  %95 = nn.conv2d(%93, %94, padding=[1, 1, 1, 1], channels=128, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 128, 28, 28), float32] */;
+  %96 = cast(%95, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %97 = cast(%layer2.1.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %98 = cast(%layer2.1.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %99 = cast(%layer2.1.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %100 = cast(%layer2.1.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(128), float16] */;
+  %101 = nn.batch_norm(%96, %97, %98, %99, %100) /* ty=(Tensor[(1, 128, 28, 28), float16], Tensor[(128), float16], Tensor[(128), float16]) */;
+  %102 = %101.0 /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %103 = add(%102, %83) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %104 = nn.relu(%103) /* ty=Tensor[(1, 128, 28, 28), float16] */;
+  %105 = cast(%layer3.0.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256, 128, 3, 3), float16] */;
+  %106 = nn.conv2d(%104, %105, strides=[2, 2], padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 256, 14, 14), float32] */;
+  %107 = cast(%106, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %108 = cast(%layer3.0.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %109 = cast(%layer3.0.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %110 = cast(%layer3.0.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %111 = cast(%layer3.0.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %112 = nn.batch_norm(%107, %108, %109, %110, %111) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+  %113 = %112.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %114 = nn.relu(%113) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %115 = cast(%layer3.0.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256, 256, 3, 3), float16] */;
+  %116 = nn.conv2d(%114, %115, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 256, 14, 14), float32] */;
+  %117 = cast(%116, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %118 = cast(%layer3.0.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %119 = cast(%layer3.0.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %120 = cast(%layer3.0.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %121 = cast(%layer3.0.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %122 = nn.batch_norm(%117, %118, %119, %120, %121) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+  %123 = cast(%layer3.0.downsample.0.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256, 128, 1, 1), float16] */;
+  %124 = nn.conv2d(%104, %123, strides=[2, 2], padding=[0, 0, 0, 0], channels=256, kernel_size=[1, 1], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 256, 14, 14), float32] */;
+  %125 = cast(%124, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %126 = cast(%layer3.0.downsample.1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %127 = cast(%layer3.0.downsample.1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %128 = cast(%layer3.0.downsample.1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %129 = cast(%layer3.0.downsample.1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %130 = nn.batch_norm(%125, %126, %127, %128, %129) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+  %131 = %122.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %132 = %130.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %133 = add(%131, %132) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %134 = nn.relu(%133) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %135 = cast(%layer3.1.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256, 256, 3, 3), float16] */;
+  %136 = nn.conv2d(%134, %135, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 256, 14, 14), float32] */;
+  %137 = cast(%136, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %138 = cast(%layer3.1.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %139 = cast(%layer3.1.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %140 = cast(%layer3.1.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %141 = cast(%layer3.1.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %142 = nn.batch_norm(%137, %138, %139, %140, %141) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+  %143 = %142.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %144 = nn.relu(%143) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %145 = cast(%layer3.1.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256, 256, 3, 3), float16] */;
+  %146 = nn.conv2d(%144, %145, padding=[1, 1, 1, 1], channels=256, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 256, 14, 14), float32] */;
+  %147 = cast(%146, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %148 = cast(%layer3.1.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %149 = cast(%layer3.1.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %150 = cast(%layer3.1.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %151 = cast(%layer3.1.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(256), float16] */;
+  %152 = nn.batch_norm(%147, %148, %149, %150, %151) /* ty=(Tensor[(1, 256, 14, 14), float16], Tensor[(256), float16], Tensor[(256), float16]) */;
+  %153 = %152.0 /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %154 = add(%153, %134) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %155 = nn.relu(%154) /* ty=Tensor[(1, 256, 14, 14), float16] */;
+  %156 = cast(%layer4.0.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512, 256, 3, 3), float16] */;
+  %157 = nn.conv2d(%155, %156, strides=[2, 2], padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %158 = cast(%157, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %159 = cast(%layer4.0.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %160 = cast(%layer4.0.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %161 = cast(%layer4.0.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %162 = cast(%layer4.0.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %163 = nn.batch_norm(%158, %159, %160, %161, %162) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+  %164 = %163.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %165 = nn.relu(%164) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %166 = cast(%layer4.0.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512, 512, 3, 3), float16] */;
+  %167 = nn.conv2d(%165, %166, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %168 = cast(%167, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %169 = cast(%layer4.0.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %170 = cast(%layer4.0.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %171 = cast(%layer4.0.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %172 = cast(%layer4.0.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %173 = nn.batch_norm(%168, %169, %170, %171, %172) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+  %174 = cast(%layer4.0.downsample.0.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512, 256, 1, 1), float16] */;
+  %175 = nn.conv2d(%155, %174, strides=[2, 2], padding=[0, 0, 0, 0], channels=512, kernel_size=[1, 1], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %176 = cast(%175, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %177 = cast(%layer4.0.downsample.1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %178 = cast(%layer4.0.downsample.1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %179 = cast(%layer4.0.downsample.1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %180 = cast(%layer4.0.downsample.1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %181 = nn.batch_norm(%176, %177, %178, %179, %180) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+  %182 = %173.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %183 = %181.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %184 = add(%182, %183) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %185 = nn.relu(%184) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %186 = cast(%layer4.1.conv1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512, 512, 3, 3), float16] */;
+  %187 = nn.conv2d(%185, %186, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %188 = cast(%187, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %189 = cast(%layer4.1.bn1.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %190 = cast(%layer4.1.bn1.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %191 = cast(%layer4.1.bn1.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %192 = cast(%layer4.1.bn1.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %193 = nn.batch_norm(%188, %189, %190, %191, %192) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+  %194 = %193.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %195 = nn.relu(%194) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %196 = cast(%layer4.1.conv2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512, 512, 3, 3), float16] */;
+  %197 = nn.conv2d(%195, %196, padding=[1, 1, 1, 1], channels=512, kernel_size=[3, 3], out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %198 = cast(%197, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %199 = cast(%layer4.1.bn2.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %200 = cast(%layer4.1.bn2.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %201 = cast(%layer4.1.bn2.running_mean, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %202 = cast(%layer4.1.bn2.running_var, dtype=&quot;float16&quot;) /* ty=Tensor[(512), float16] */;
+  %203 = nn.batch_norm(%198, %199, %200, %201, %202) /* ty=(Tensor[(1, 512, 7, 7), float16], Tensor[(512), float16], Tensor[(512), float16]) */;
+  %204 = %203.0 /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %205 = add(%204, %185) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %206 = nn.relu(%205) /* ty=Tensor[(1, 512, 7, 7), float16] */;
+  %207 = cast(%206, dtype=&quot;float32&quot;) /* ty=Tensor[(1, 512, 7, 7), float32] */;
+  %208 = nn.adaptive_avg_pool2d(%207, output_size=[1, 1]) /* ty=Tensor[(1, 512, 1, 1), float32] */;
+  %209 = reshape(%208, newshape=[0, -1, 1, 1]) /* ty=Tensor[(1, 512, 1, 1), float32] */;
+  %210 = squeeze(%209, axis=[2, 3]) /* ty=Tensor[(1, 512), float32] */;
+  %211 = cast(%210, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 512), float16] */;
+  %212 = cast(%fc.weight, dtype=&quot;float16&quot;) /* ty=Tensor[(1000, 512), float16] */;
+  %213 = nn.dense(%211, %212, units=None, out_dtype=&quot;float32&quot;) /* ty=Tensor[(1, 1000), float32] */;
+  %214 = cast(%213, dtype=&quot;float16&quot;) /* ty=Tensor[(1, 1000), float16] */;
+  %215 = cast(%fc.bias, dtype=&quot;float16&quot;) /* ty=Tensor[(1000), float16] */;
+  nn.bias_add(%214, %215, axis=-1) /* ty=Tensor[(1, 1000), float16] */
+}
+</pre></div>
+</div>
+<p>As you can see in the IR, the architecture now contains cast operations, which are
+needed to convert to FP16 precision.
+You can also use “float16” or “float32” precisions as other dtype options.</p>
+</div>
+<div class="section" id="compile-the-model-with-relay">
+<h2>Compile the model with relay<a class="headerlink" href="#compile-the-model-with-relay" title="Permalink to this headline">¶</a></h2>
+<p>Specify Adreno target before compiling to generate texture
+leveraging kernels and get all the benefits of textures
+Note: This generated example running on our x86 server for demonstration.
+If running it on the Android device, we need to
+specify its instruction set. Set <code class="code docutils literal notranslate"><span class="pre">local_demo</span></code> to False if you want
+to run this tutorial with a real device.</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">local_demo</span></a> <span class="o">=</span> <span class="kc">True</span>
+
+<span class="c1"># by default on CPU target will execute.</span>
+<span class="c1"># select &#39;cpu&#39;, &#39;opencl&#39; and &#39;vulkan&#39;</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">test_target</span></a> <span class="o">=</span> <span class="s2">&quot;cpu&quot;</span>
+
+<span class="c1"># Change target configuration.</span>
+<span class="c1"># Run `adb shell cat /proc/cpuinfo` to find the arch.</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">arch</span></a> <span class="o">=</span> <span class="s2">&quot;arm64&quot;</span>
+<a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">target</span></a> <span class="o">=</span> <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class"><span class="n">tvm</span><span class="o">.</span><span class="n">target< [...]
+
+<span class="k">if</span> <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">local_demo</span></a><span class="p">:</span>
+    <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">target</span></a> <span class="o">=</span> <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class"><span class="n">tvm</span><span class="o">.</span><span class="n">tar [...]
+<span class="k">elif</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">test_target</span></a> <span class="o">==</span> <span class="s2">&quot;opencl&quot;</span><span class="p">:</span>
+    <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">target</span></a> <span class="o">=</span> <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class"><span class="n">tvm</span><span class="o">.</span><span class="n">tar [...]
+<span class="k">elif</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">test_target</span></a> <span class="o">==</span> <span class="s2">&quot;vulkan&quot;</span><span class="p">:</span>
+    <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">target</span></a> <span class="o">=</span> <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class"><span class="n">tvm</span><span class="o">.</span><span class="n">tar [...]
+
+<span class="k">with</span> <a href="../../reference/api/python/ir.html#tvm.transform.PassContext" title="tvm.transform.PassContext" class="sphx-glr-backref-module-tvm-transform sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">tvm</span><span class="o">.</span><span class="n">transform</span><span class="o">.</span><span class="n">PassContext</span></a><span class="p">(</span><span class="n">opt_level</span><span class="o">=</span><span class="mi">3</span><span c [...]
+    <span class="n">lib</span> <span class="o">=</span> <span class="n">relay</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <a href="../../reference/api/python/target.html#tvm.target.Target" title="tvm.target.Target" class="sphx-glr-backref-module-tvm-target sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">target</span></a><span class="o">=</span><a href="../../reference/api/py [...]
+</pre></div>
+</div>
+</div>
+<div class="section" id="deploy-the-model-remotely-by-rpc">
+<h2>Deploy the Model Remotely by RPC<a class="headerlink" href="#deploy-the-model-remotely-by-rpc" title="Permalink to this headline">¶</a></h2>
+<p>Using RPC you can deploy the model from host
+machine to the remote Adreno device</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">rpc_tracker_host</span></a> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span [...]
+<a href="https://docs.python.org/3/library/functions.html#int" title="builtins.int" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">rpc_tracker_port</span></a> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;TVM_TRACKER_PO [...]
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">key</span></a> <span class="o">=</span> <span class="s2">&quot;android&quot;</span>
+
+<span class="k">if</span> <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">local_demo</span></a><span class="p">:</span>
+    <a href="../../reference/api/python/rpc.html#tvm.rpc.LocalSession" title="tvm.rpc.LocalSession" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">remote</span></a> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.LocalSession" title="tvm.rpc.LocalSession" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-class"><span class="n">rpc</span><span class="o">.</span><span class="n">Loc [...]
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">tracker</span> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.connect_tracker" title="tvm.rpc.connect_tracker" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-function"><span class="n">rpc</span><span class="o">.</span><span class="n">connect_tracker</span></a><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref- [...]
+    <span class="c1"># When running a heavy model, we should increase the `session_timeout`</span>
+    <a href="../../reference/api/python/rpc.html#tvm.rpc.LocalSession" title="tvm.rpc.LocalSession" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">remote</span></a> <span class="o">=</span> <span class="n">tracker</span><span class="o">.</span><span class="n">request</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx- [...]
+
+<span class="k">if</span> <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">local_demo</span></a><span class="p">:</span>
+    <span class="n">dev</span> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.cpu" title="tvm.rpc.RPCSession.cpu" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</span><span class="n">cpu</span></a><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+<span class="k">elif</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">test_target</span></a> <span class="o">==</span> <span class="s2">&quot;opencl&quot;</span><span class="p">:</span>
+    <span class="n">dev</span> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.cl" title="tvm.rpc.RPCSession.cl" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</span><span class="n">cl</span></a><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+<span class="k">elif</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">test_target</span></a> <span class="o">==</span> <span class="s2">&quot;vulkan&quot;</span><span class="p">:</span>
+    <span class="n">dev</span> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.vulkan" title="tvm.rpc.RPCSession.vulkan" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</span><span class="n">vulkan</span></a><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+<span class="k">else</span><span class="p">:</span>
+    <span class="n">dev</span> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.cpu" title="tvm.rpc.RPCSession.cpu" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</span><span class="n">cpu</span></a><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+
+<a href="../../reference/api/python/contrib.html#tvm.contrib.utils.TempDirectory" title="tvm.contrib.utils.TempDirectory" class="sphx-glr-backref-module-tvm-contrib-utils sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">temp</span></a> <span class="o">=</span> <a href="../../reference/api/python/contrib.html#tvm.contrib.utils.tempdir" title="tvm.contrib.utils.tempdir" class="sphx-glr-backref-module-tvm-contrib-utils sphx-glr-backref-type-py-function"><span class= [...]
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dso_binary</span></a> <span class="o">=</span> <span class="s2">&quot;dev_lib_cl.so&quot;</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dso_binary_path</span></a> <span class="o">=</span> <a href="../../reference/api/python/contrib.html#tvm.contrib.utils.TempDirectory.relpath" title="tvm.contrib.utils.TempDirectory.relpath" class="sphx-glr-backref-module-tvm-contrib-utils sphx-glr-backref-type-py-method"><span class="n">temp</s [...]
+<span class="n">fcompile</span> <span class="o">=</span> <a href="../../reference/api/python/contrib.html#tvm.contrib.ndk.create_shared" title="tvm.contrib.ndk.create_shared" class="sphx-glr-backref-module-tvm-contrib-ndk sphx-glr-backref-type-py-function"><span class="n">ndk</span><span class="o">.</span><span class="n">create_shared</span></a> <span class="k">if</span> <span class="ow">not</span> <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" clas [...]
+<span class="n">lib</span><span class="o">.</span><span class="n">export_library</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dso_binary_path</span></a><span class="p">,</span> <span class="n">fcompile</span><span class="p">)</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">remote_path</span></a> <span class="o">=</span> <span class="s2">&quot;/data/local/tmp/&quot;</span> <span class="o">+</span> <a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backre [...]
+<a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.upload" title="tvm.rpc.RPCSession.upload" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</span><span class="n">upload</span></a><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">dso_bin [...]
+<a href="../../reference/api/python/runtime.html#tvm.runtime.Module" title="tvm.runtime.Module" class="sphx-glr-backref-module-tvm-runtime sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">rlib</span></a> <span class="o">=</span> <a href="../../reference/api/python/rpc.html#tvm.rpc.RPCSession.load_module" title="tvm.rpc.RPCSession.load_module" class="sphx-glr-backref-module-tvm-rpc sphx-glr-backref-type-py-method"><span class="n">remote</span><span class="o">.</sp [...]
+<a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule" title="tvm.contrib.graph_executor.GraphModule" class="sphx-glr-backref-module-tvm-contrib-graph_executor sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">m</span></a> <span class="o">=</span> <a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule" title="tvm.contrib.graph_executor.GraphModule" class="sphx-glr-backref-module-tvm-c [...]
+</pre></div>
+</div>
+</div>
+<div class="section" id="run-inference">
+<h2>Run inference<a class="headerlink" href="#run-inference" title="Permalink to this headline">¶</a></h2>
+<p>We now can set inputs, infer our model and get predictions as output</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule.set_input" title="tvm.contrib.graph_executor.GraphModule.set_input" class="sphx-glr-backref-module-tvm-contrib-graph_executor sphx-glr-backref-type-py-method"><span class="n">m</span><span class="o">.</span><span class="n">set_input</span></a><span class="p">(</span><a href="https://docs.python.org/3/library/std [...]
+<a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule.run" title="tvm.contrib.graph_executor.GraphModule.run" class="sphx-glr-backref-module-tvm-contrib-graph_executor sphx-glr-backref-type-py-method"><span class="n">m</span><span class="o">.</span><span class="n">run</span></a><span class="p">()</span>
+<span class="n">tvm_output</span> <span class="o">=</span> <a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule.get_output" title="tvm.contrib.graph_executor.GraphModule.get_output" class="sphx-glr-backref-module-tvm-contrib-graph_executor sphx-glr-backref-type-py-method"><span class="n">m</span><span class="o">.</span><span class="n">get_output</span></a><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="get-predictions-and-performance-statistic">
+<h2>Get predictions and performance statistic<a class="headerlink" href="#get-predictions-and-performance-statistic" title="Permalink to this headline">¶</a></h2>
+<p>This piece of code displays the top-1 and top-5 predictions, as
+well as provides information about the model’s performance</p>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">os.path</span> <span class="kn">import</span> <a href="https://docs.python.org/3/library/os.path.html#os.path.join" title="os.path.join" class="sphx-glr-backref-module-os-path sphx-glr-backref-type-py-function"><span class="n">join</span></a><span class="p">,</span> <span class="n">isfile</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">plt</span>
+<span class="kn">from</span> <span class="nn">tvm.contrib</span> <span class="kn">import</span> <span class="n">download</span>
+
+<span class="c1"># Download ImageNet categories</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">categ_url</span></a> <span class="o">=</span> <span class="s2">&quot;https://github.com/uwsampl/web-data/raw/main/vta/models/&quot;</span>
+<a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">categ_fn</span></a> <span class="o">=</span> <span class="s2">&quot;synset.txt&quot;</span>
+<span class="n">download</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><a href="https://docs.python.org/3/library/os.path.html#os.path.join" title="os.path.join" class="sphx-glr-backref-module-os-path sphx-glr-backref-type-py-function"><span class="n">join</span></a><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr [...]
+<a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a> <span class="o">=</span> <span class="nb">eval</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><a href="https://docs.python.org/3/library/stdtypes.html#str" title="builtins.str" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-p [...]
+
+<span class="n">top_categories</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">argsort</span><span class="p">(</span><span class="n">tvm_output</span><span class="o">.</span><span class="n">asnumpy</span><span class="p">()[</span><span class="mi">0</span><span class="p">])</span>
+<span class="n">top5</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">flip</span><span class="p">(</span><span class="n">top_categories</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">0</span><span class="p">)[:</span><span class="mi">5</span><span class="p">]</span>
+
+<span class="c1"># Report top-1 classification result</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Top-1 id: </span><span class="si">{}</span><span class="s2">, class name: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">top5</span><span class="p">[</span><span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> <a href="https://docs.python.org/3/library/stdtyp [...]
+
+<span class="c1"># Report top-5 classification results</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Top5 predictions: </span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">#1:&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">top5</span><span class="p">[</span><span class="mi">1</span> <span cl [...]
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">#2:&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">top5</span><span class="p">[</span><span class="mi">2</span> <span cl [...]
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">#3:&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">top5</span><span class="p">[</span><span class="mi">3</span> <span cl [...]
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">#4:&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">top5</span><span class="p">[</span><span class="mi">4</span> <span cl [...]
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">#5:&quot;</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">top5</span><span class="p">[</span><span class="mi">5</span> <span cl [...]
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\t</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">top5</span><span class="p">)</span>
+<a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">ImageNetClassifier</span></a> <span class="o">=</span> <span class="kc">False</span>
+<span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">top_categories</span><span class="p">[</span><span class="o">-</span><span class="mi">5</span><span class="p">:]:</span>
+    <span class="k">if</span> <span class="s2">&quot;cat&quot;</span> <span class="ow">in</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">synset</span></a><span class="p">[</span><span class="n">k</span><span class="p">]:</span>
+        <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">ImageNetClassifier</span></a> <span class="o">=</span> <span class="kc">True</span>
+<span class="k">assert</span> <a href="https://docs.python.org/3/library/functions.html#bool" title="builtins.bool" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">ImageNetClassifier</span></a><span class="p">,</span> <span class="s2">&quot;Failed ImageNet classifier validation check&quot;</span>
+
+<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Evaluate inference time cost...&quot;</span><span class="p">)</span>
+<span class="nb">print</span><span class="p">(</span><a href="../../reference/api/python/graph_executor.html#tvm.contrib.graph_executor.GraphModule.benchmark" title="tvm.contrib.graph_executor.GraphModule.benchmark" class="sphx-glr-backref-module-tvm-contrib-graph_executor sphx-glr-backref-type-py-method"><span class="n">m</span><span class="o">.</span><span class="n">benchmark</span></a><span class="p">(</span><span class="n">dev</span><span class="p">,</span> <span class="n">number</sp [...]
+</pre></div>
+</div>
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>/workspace/python/tvm/runtime/ndarray.py:200: DeprecationWarning: NDArray.asnumpy() will be deprecated in TVM v0.8 release. Please use NDArray.numpy() instead.
+  DeprecationWarning,
+Top-1 id: 281, class name: tabby, tabby cat
+
+Top5 predictions:
+
+        #1: tabby, tabby cat
+        #2: tiger cat
+        #3: lynx, catamount
+        #4: red fox, Vulpes vulpes
+        #5: Egyptian cat
+         [281 282 287 277 285]
+Evaluate inference time cost...
+Execution time summary:
+ mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
+ 3295.0754    3294.5345    3300.7153    3291.3510      2.8450
+</pre></div>
+</div>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  0.250 seconds)</p>
+<div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-model-on-adreno-py">
+<div class="sphx-glr-download sphx-glr-download-python docutils container">
+<p><a class="reference download internal" download="" href="../../_downloads/2387d8448da213eb625e6b3d916327d4/deploy_model_on_adreno.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_model_on_adreno.py</span></code></a></p>
+</div>
+<div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
+<p><a class="reference download internal" download="" href="../../_downloads/b9e7311d8c56eb6e6aca08f0be35ff03/deploy_model_on_adreno.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">deploy_model_on_adreno.ipynb</span></code></a></p>
+</div>
+</div>
+<p class="sphx-glr-signature"><a class="reference external" href="https://sphinx-gallery.github.io">Gallery generated by Sphinx-Gallery</a></p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          
+
+<footer>
+
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="deploy_model_on_android.html" class="btn btn-neutral float-right" title="Deploy the Pretrained Model on Android" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="index.html" class="btn btn-neutral float-left" title="Deploy Deep Learning Models" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+
+<div id="button" class="backtop"><img src="../../_static/img/right.svg" alt="backtop"/> </div>
+<section class="footerSec">
+    <div class="footerHeader">
+      <div class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
+        <div class="copywrite d-flex align-items-center">
+          <h5 id="copy-right-info">© 2022 Apache Software Foundation | All rights reserved</h5>
+        </div>
+      </div>
+
+    </div>
+
+    <div>
+      <div class="footernote">Copyright © 2022 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</div>
+    </div>
+
+</section>
+</footer>
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
+
+  </body>
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script>
+
+  
+  
+    
+    <!-- Theme Analytics -->
+    <script>
+    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+
+    ga('create', 'UA-75982049-2', 'auto');
+    ga('send', 'pageview');
+    </script>
+
+    
+   
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/how_to/deploy_models/deploy_model_on_android.html b/docs/how_to/deploy_models/deploy_model_on_android.html
index 0f378cccbb..793964382e 100644
--- a/docs/how_to/deploy_models/deploy_model_on_android.html
+++ b/docs/how_to/deploy_models/deploy_model_on_android.html
@@ -49,7 +49,7 @@
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="next" title="Deploy the Pretrained Model on Jetson Nano" href="deploy_model_on_nano.html" />
-    <link rel="prev" title="Deploy Deep Learning Models" href="index.html" /> 
+    <link rel="prev" title="Deploy the Pretrained Model on Adreno" href="deploy_model_on_adreno.html" /> 
 </head>
 
 <body class="wy-body-for-nav">
@@ -661,7 +661,7 @@ to the remote android device.</p>
 Evaluate inference time cost...
 Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  16.0793      16.0802      16.2016      16.0091       0.0585
+  16.0159      15.9399      16.4435      15.6553       0.3055
 </pre></div>
 </div>
 </div>
@@ -711,7 +711,7 @@ Mean inference <span class="nb">time</span> <span class="o">(</span>std dev<span
         <a href="deploy_model_on_nano.html" class="btn btn-neutral float-right" title="Deploy the Pretrained Model on Jetson Nano" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
-        <a href="index.html" class="btn btn-neutral float-left" title="Deploy Deep Learning Models" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+        <a href="deploy_model_on_adreno.html" class="btn btn-neutral float-left" title="Deploy the Pretrained Model on Adreno" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
       
     </div>
 
diff --git a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
index 0ad243a5da..759a8f950f 100644
--- a/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
+++ b/docs/how_to/deploy_models/deploy_object_detection_pytorch.html
@@ -453,28 +453,32 @@ be unstable.</p>
 Downloading: &quot;https://download.pytorch.org/models/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth&quot; to /workspace/.cache/torch/hub/checkpoints/maskrcnn_resnet50_fpn_coco-bf2d0c1e.pth
 
   0%|          | 0.00/170M [00:00&lt;?, ?B/s]
-  5%|4         | 7.99M/170M [00:00&lt;00:02, 67.2MB/s]
-  9%|9         | 16.0M/170M [00:00&lt;00:02, 65.4MB/s]
- 14%|#4        | 24.0M/170M [00:00&lt;00:02, 56.2MB/s]
- 19%|#8        | 32.0M/170M [00:00&lt;00:02, 54.3MB/s]
- 24%|##3       | 40.0M/170M [00:00&lt;00:02, 53.4MB/s]
- 28%|##8       | 48.0M/170M [00:00&lt;00:02, 55.6MB/s]
- 33%|###2      | 56.0M/170M [00:01&lt;00:02, 59.0MB/s]
- 38%|###7      | 64.0M/170M [00:01&lt;00:02, 51.6MB/s]
- 42%|####2     | 72.0M/170M [00:01&lt;00:01, 55.6MB/s]
- 47%|####7     | 80.0M/170M [00:01&lt;00:01, 55.2MB/s]
- 52%|#####1    | 88.0M/170M [00:01&lt;00:01, 55.8MB/s]
- 57%|#####6    | 96.0M/170M [00:01&lt;00:01, 56.5MB/s]
- 61%|######1   | 104M/170M [00:01&lt;00:01, 57.6MB/s]
- 66%|######5   | 112M/170M [00:02&lt;00:00, 61.5MB/s]
- 71%|#######   | 120M/170M [00:02&lt;00:00, 63.8MB/s]
- 75%|#######5  | 128M/170M [00:02&lt;00:00, 58.5MB/s]
- 80%|########  | 136M/170M [00:02&lt;00:00, 61.3MB/s]
- 85%|########4 | 144M/170M [00:02&lt;00:00, 56.1MB/s]
- 89%|########9 | 152M/170M [00:02&lt;00:00, 57.5MB/s]
- 94%|#########4| 160M/170M [00:02&lt;00:00, 52.5MB/s]
- 98%|#########8| 167M/170M [00:03&lt;00:00, 57.2MB/s]
-100%|##########| 170M/170M [00:03&lt;00:00, 56.7MB/s]
+  5%|4         | 7.99M/170M [00:00&lt;00:03, 52.9MB/s]
+  9%|9         | 16.0M/170M [00:00&lt;00:03, 47.9MB/s]
+ 14%|#4        | 24.0M/170M [00:00&lt;00:02, 59.4MB/s]
+ 18%|#7        | 30.3M/170M [00:00&lt;00:03, 39.0MB/s]
+ 21%|##        | 34.9M/170M [00:00&lt;00:03, 40.2MB/s]
+ 24%|##3       | 40.0M/170M [00:00&lt;00:03, 42.5MB/s]
+ 26%|##6       | 44.5M/170M [00:01&lt;00:03, 40.4MB/s]
+ 29%|##9       | 49.8M/170M [00:01&lt;00:02, 44.0MB/s]
+ 33%|###2      | 56.0M/170M [00:01&lt;00:02, 48.3MB/s]
+ 37%|###6      | 62.3M/170M [00:01&lt;00:02, 43.4MB/s]
+ 39%|###9      | 66.7M/170M [00:01&lt;00:02, 40.9MB/s]
+ 46%|####6     | 78.3M/170M [00:01&lt;00:01, 48.1MB/s]
+ 49%|####8     | 82.9M/170M [00:01&lt;00:01, 46.0MB/s]
+ 51%|#####1    | 87.2M/170M [00:02&lt;00:01, 43.4MB/s]
+ 56%|#####5    | 94.3M/170M [00:02&lt;00:01, 50.4MB/s]
+ 58%|#####8    | 99.2M/170M [00:02&lt;00:01, 50.7MB/s]
+ 61%|######1   | 104M/170M [00:02&lt;00:01, 47.4MB/s]
+ 66%|######5   | 112M/170M [00:02&lt;00:01, 55.1MB/s]
+ 71%|#######   | 120M/170M [00:02&lt;00:00, 60.5MB/s]
+ 76%|#######5  | 128M/170M [00:02&lt;00:00, 67.6MB/s]
+ 80%|########  | 136M/170M [00:02&lt;00:00, 61.8MB/s]
+ 85%|########4 | 144M/170M [00:02&lt;00:00, 65.1MB/s]
+ 89%|########8 | 150M/170M [00:03&lt;00:00, 50.9MB/s]
+ 92%|#########1| 156M/170M [00:03&lt;00:00, 52.1MB/s]
+ 97%|#########6| 165M/170M [00:03&lt;00:00, 61.9MB/s]
+100%|##########| 170M/170M [00:03&lt;00:00, 50.3MB/s]
 /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torch/nn/functional.py:3897: UserWarning: To copy construct from a tensor, it is recommended to use sourceTensor.clone().detach() or sourceTensor.clone().detach().requires_grad_(True), rather than torch.tensor(sourceTensor).
   for i in range(dim)
 /venv/apache-tvm-py3.7/lib/python3.7/site-packages/torchvision/models/detection/anchor_utils.py:124: UserWarning: __floordiv__ is deprecated, and its behavior will change in a future version of pytorch. It currently rounds toward 0 (like the &#39;trunc&#39; function NOT &#39;floor&#39;). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode=&#39;trunc&#39;), or for actual floor division, use torch.div(a, b, rounding_mode=& [...]
@@ -572,7 +576,7 @@ torchvision rcnn models.</p>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Get 9 valid boxes
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  21.046 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  14.416 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-object-detection-pytorch-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7795da4b258c8feff986668b95ef57ad/deploy_object_detection_pytorch.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_object_detection_pytorch.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized.html b/docs/how_to/deploy_models/deploy_prequantized.html
index ba5efcf3a2..b19a4c5f6b 100644
--- a/docs/how_to/deploy_models/deploy_prequantized.html
+++ b/docs/how_to/deploy_models/deploy_prequantized.html
@@ -497,8 +497,9 @@ training. Other models require a full post training calibration.</p>
 Downloading: &quot;https://download.pytorch.org/models/mobilenet_v2-b0353104.pth&quot; to /workspace/.cache/torch/hub/checkpoints/mobilenet_v2-b0353104.pth
 
   0%|          | 0.00/13.6M [00:00&lt;?, ?B/s]
- 59%|#####8    | 7.99M/13.6M [00:00&lt;00:00, 57.0MB/s]
-100%|##########| 13.6M/13.6M [00:00&lt;00:00, 72.1MB/s]
+ 59%|#####8    | 7.99M/13.6M [00:00&lt;00:00, 40.5MB/s]
+ 90%|########9 | 12.2M/13.6M [00:00&lt;00:00, 38.6MB/s]
+100%|##########| 13.6M/13.6M [00:00&lt;00:00, 42.7MB/s]
 </pre></div>
 </div>
 </div>
@@ -589,7 +590,7 @@ output values are identical out of 1000 outputs from mobilenet v2.</p>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  90.4192      90.2574      94.8575      90.0959       0.5072
+  89.0746      88.9311      93.4186      88.7581       0.5219
 </pre></div>
 </div>
 <div class="admonition note">
@@ -628,7 +629,7 @@ This includes support for the VNNI 8 bit dot product instruction (CascadeLake or
 <div class="section" id="deploy-a-quantized-tflite-model">
 <h2>Deploy a quantized TFLite Model<a class="headerlink" href="#deploy-a-quantized-tflite-model" title="Permalink to this headline">¶</a></h2>
 <p>TODO</p>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  7.396 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  5.679 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/fb8217c13f4351224c6cf3aacf1a87fc/deploy_prequantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_prequantized_tflite.html b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
index cee4824989..ea083a0253 100644
--- a/docs/how_to/deploy_models/deploy_prequantized_tflite.html
+++ b/docs/how_to/deploy_models/deploy_prequantized_tflite.html
@@ -582,7 +582,7 @@ TFLite Top-5 labels: [387 102 386 341 349]
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time summary:
  mean (ms)   median (ms)    max (ms)     min (ms)     std (ms)
-  120.5437     120.3832     127.6691     119.8078      0.8626
+  118.7973     118.7055     126.3001     118.0374      0.7966
 </pre></div>
 </div>
 <div class="admonition note">
@@ -610,7 +610,7 @@ network for ARM CPU</span></a>.</p></li>
 </ul>
 </div></blockquote>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  21.612 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 2 minutes  20.899 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-prequantized-tflite-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/56691c7a27d45da61d112276334640d3/deploy_prequantized_tflite.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_prequantized_tflite.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_quantized.html b/docs/how_to/deploy_models/deploy_quantized.html
index a5082ebd42..933ec9b3e4 100644
--- a/docs/how_to/deploy_models/deploy_quantized.html
+++ b/docs/how_to/deploy_models/deploy_quantized.html
@@ -520,7 +520,7 @@ for calibration. But the accuracy might be impacted.</p>
   DeprecationWarning,
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  35.178 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 1 minutes  37.474 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-quantized-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/7810ecf51bfc05f7d5e8a400ac3e815d/deploy_quantized.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_quantized.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
index c0cff8386f..5be917da5f 100644
--- a/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
+++ b/docs/how_to/deploy_models/deploy_ssd_gluoncv.html
@@ -462,22 +462,25 @@ to your device.</p>
 Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/ssd_512_resnet50_v1_voc-9c8b225a.zip...
 
   0%|          | 0/132723 [00:00&lt;?, ?KB/s]
-  4%|4         | 5620/132723 [00:00&lt;00:02, 56196.44KB/s]
- 10%|#         | 13694/132723 [00:00&lt;00:01, 70631.61KB/s]
- 17%|#6        | 22351/132723 [00:00&lt;00:01, 77906.36KB/s]
- 23%|##3       | 30964/132723 [00:00&lt;00:01, 81150.42KB/s]
- 30%|##9       | 39513/132723 [00:00&lt;00:01, 82709.08KB/s]
- 36%|###6      | 47958/132723 [00:00&lt;00:01, 83299.55KB/s]
- 43%|####2     | 56498/132723 [00:00&lt;00:00, 83983.41KB/s]
- 49%|####8     | 65032/132723 [00:00&lt;00:00, 84412.46KB/s]
- 55%|#####5    | 73593/132723 [00:00&lt;00:00, 84784.17KB/s]
- 62%|######1   | 82093/132723 [00:01&lt;00:00, 84849.20KB/s]
- 68%|######8   | 90578/132723 [00:01&lt;00:00, 84655.77KB/s]
- 75%|#######4  | 99099/132723 [00:01&lt;00:00, 84821.23KB/s]
- 81%|########1 | 107601/132723 [00:01&lt;00:00, 84880.05KB/s]
- 87%|########7 | 116090/132723 [00:01&lt;00:00, 74213.08KB/s]
- 94%|#########3| 124625/132723 [00:01&lt;00:00, 77259.23KB/s]
-100%|##########| 132723/132723 [00:01&lt;00:00, 80714.52KB/s]
+  2%|1         | 2074/132723 [00:00&lt;00:06, 20737.25KB/s]
+  5%|4         | 6183/132723 [00:00&lt;00:03, 32638.47KB/s]
+ 10%|9         | 12887/132723 [00:00&lt;00:02, 48324.96KB/s]
+ 16%|#5        | 20729/132723 [00:00&lt;00:01, 60193.11KB/s]
+ 22%|##1       | 28543/132723 [00:00&lt;00:01, 66658.04KB/s]
+ 28%|##7       | 36606/132723 [00:00&lt;00:01, 71403.88KB/s]
+ 33%|###3      | 44285/132723 [00:00&lt;00:01, 73162.31KB/s]
+ 39%|###9      | 52203/132723 [00:00&lt;00:01, 75076.30KB/s]
+ 45%|####5     | 60059/132723 [00:00&lt;00:00, 76136.44KB/s]
+ 51%|#####     | 67673/132723 [00:01&lt;00:00, 75690.42KB/s]
+ 57%|#####6    | 75619/132723 [00:01&lt;00:00, 76832.65KB/s]
+ 63%|######2   | 83304/132723 [00:01&lt;00:00, 72715.82KB/s]
+ 68%|######8   | 90762/132723 [00:01&lt;00:00, 73254.36KB/s]
+ 74%|#######3  | 98121/132723 [00:01&lt;00:00, 70837.68KB/s]
+ 79%|#######9  | 105241/132723 [00:01&lt;00:00, 57473.94KB/s]
+ 85%|########5 | 113109/132723 [00:01&lt;00:00, 62777.10KB/s]
+ 91%|######### | 120589/132723 [00:01&lt;00:00, 65939.34KB/s]
+ 97%|#########6| 128155/132723 [00:01&lt;00:00, 68481.63KB/s]
+100%|##########| 132723/132723 [00:01&lt;00:00, 67420.61KB/s]
 </pre></div>
 </div>
 <p>Create TVM runtime and do inference
@@ -516,7 +519,7 @@ Downloading /workspace/.mxnet/models/ssd_512_resnet50_v1_voc-9c8b225a.zip from h
 <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
 </pre></div>
 </div>
-<img src="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" srcset="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" alt="deploy ssd gluoncv" class = "sphx-glr-single-img"/><p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  6.596 seconds)</p>
+<img src="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" srcset="../../_images/sphx_glr_deploy_ssd_gluoncv_001.png" alt="deploy ssd gluoncv" class = "sphx-glr-single-img"/><p class="sphx-glr-timing"><strong>Total running time of the script:</strong> ( 3 minutes  0.281 seconds)</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-deploy-models-deploy-ssd-gluoncv-py">
 <div class="sphx-glr-download sphx-glr-download-python docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/cccb17d28e5e8b2e94ea8cd5ec59f6ed/deploy_ssd_gluoncv.py"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Python</span> <span class="pre">source</span> <span class="pre">code:</span> <span class="pre">deploy_ssd_gluoncv.py</span></code></a></p>
diff --git a/docs/how_to/deploy_models/index.html b/docs/how_to/deploy_models/index.html
index 85d289ccf4..b9afbbdaf1 100644
--- a/docs/how_to/deploy_models/index.html
+++ b/docs/how_to/deploy_models/index.html
@@ -48,7 +48,7 @@
     <script type="text/javascript" src="../../_static/js/tlcpack_theme.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Deploy the Pretrained Model on Android" href="deploy_model_on_android.html" />
+    <link rel="next" title="Deploy the Pretrained Model on Adreno" href="deploy_model_on_adreno.html" />
     <link rel="prev" title="Relay BNNS Integration" href="../deploy/bnns.html" /> 
 </head>
 
@@ -373,7 +373,10 @@
 <p>TVM is capable of deploying models to a variety of different platforms. These
 how-tos describe how to prepapre and deploy models to many of the supported
 backends.</p>
-<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="This is an example of using Relay to compile a keras model and deploy it on Android device."><img alt="Deploy the Pretrained Model on Android" src="../../_images/sphx_glr_deploy_model_on_android_thumb.png" />
+<div class="sphx-glr-thumbnails"><div class="sphx-glr-thumbcontainer" tooltip="This article is a step-by-step tutorial to deploy pretrained Pytorch ResNet-18 model on Adreno ..."><img alt="Deploy the Pretrained Model on Adreno" src="../../_images/sphx_glr_deploy_model_on_adreno_thumb.png" />
+<p><a class="reference internal" href="deploy_model_on_adreno.html#sphx-glr-how-to-deploy-models-deploy-model-on-adreno-py"><span class="std std-ref">Deploy the Pretrained Model on Adreno</span></a></p>
+  <div class="sphx-glr-thumbnail-title">Deploy the Pretrained Model on Adreno</div>
+</div><div class="sphx-glr-thumbcontainer" tooltip="This is an example of using Relay to compile a keras model and deploy it on Android device."><img alt="Deploy the Pretrained Model on Android" src="../../_images/sphx_glr_deploy_model_on_android_thumb.png" />
 <p><a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a></p>
   <div class="sphx-glr-thumbnail-title">Deploy the Pretrained Model on Android</div>
 </div><div class="sphx-glr-thumbcontainer" tooltip="This is an example of using Relay to compile a ResNet model and deploy it on Jetson Nano."><img alt="Deploy the Pretrained Model on Jetson Nano" src="../../_images/sphx_glr_deploy_model_on_nano_thumb.png" />
@@ -415,7 +418,7 @@ backends.</p>
 
     <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
       
-        <a href="deploy_model_on_android.html" class="btn btn-neutral float-right" title="Deploy the Pretrained Model on Android" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+        <a href="deploy_model_on_adreno.html" class="btn btn-neutral float-right" title="Deploy the Pretrained Model on Adreno" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
       
       
         <a href="../deploy/bnns.html" class="btn btn-neutral float-left" title="Relay BNNS Integration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
diff --git a/docs/how_to/deploy_models/sg_execution_times.html b/docs/how_to/deploy_models/sg_execution_times.html
index da09f71bd5..4554b5cc73 100644
--- a/docs/how_to/deploy_models/sg_execution_times.html
+++ b/docs/how_to/deploy_models/sg_execution_times.html
@@ -340,7 +340,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-deploy-models-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>12:58.886</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
+<p><strong>13:43.499</strong> total execution time for <strong>how_to_deploy_models</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 86%" />
@@ -349,38 +349,42 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_object_detection_pytorch.html#sphx-glr-how-to-deploy-models-deploy-object-detection-pytorch-py"><span class="std std-ref">Compile PyTorch Object Detection Models</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_object_detection_pytorch.py</span></code>)</p></td>
-<td><p>03:21.046</p></td>
+<td><p>03:14.416</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_ssd_gluoncv.html#sphx-glr-how-to-deploy-models-deploy-ssd-gluoncv-py"><span class="std std-ref">Deploy Single Shot Multibox Detector(SSD) model</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_ssd_gluoncv.py</span></code>)</p></td>
-<td><p>03:06.596</p></td>
+<td><p>03:00.281</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_prequantized_tflite.html#sphx-glr-how-to-deploy-models-deploy-prequantized-tflite-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM - Part 3 (TFLite)</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized_tflite.py</span></code>)</p></td>
-<td><p>02:21.612</p></td>
+<td><p>02:20.899</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="deploy_quantized.html#sphx-glr-how-to-deploy-models-deploy-quantized-py"><span class="std std-ref">Deploy a Quantized Model on Cuda</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_quantized.py</span></code>)</p></td>
-<td><p>01:35.178</p></td>
+<td><p>01:37.474</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="deploy_prequantized.html#sphx-glr-how-to-deploy-models-deploy-prequantized-py"><span class="std std-ref">Deploy a Framework-prequantized Model with TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_prequantized.py</span></code>)</p></td>
-<td><p>01:07.396</p></td>
+<td><p>01:05.679</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></td>
-<td><p>00:36.879</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_adreno.html#sphx-glr-how-to-deploy-models-deploy-model-on-adreno-py"><span class="std std-ref">Deploy the Pretrained Model on Adreno</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_adreno.py</span></code>)</p></td>
+<td><p>01:00.250</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_nano.html#sphx-glr-how-to-deploy-models-deploy-model-on-nano-py"><span class="std std-ref">Deploy the Pretrained Model on Jetson Nano</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_nano.py</span></code>)</p></td>
-<td><p>00:25.301</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_android.html#sphx-glr-how-to-deploy-models-deploy-model-on-android-py"><span class="std std-ref">Deploy the Pretrained Model on Android</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_android.py</span></code>)</p></td>
+<td><p>00:35.230</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></td>
-<td><p>00:24.872</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="deploy_model_on_nano.html#sphx-glr-how-to-deploy-models-deploy-model-on-nano-py"><span class="std std-ref">Deploy the Pretrained Model on Jetson Nano</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_nano.py</span></code>)</p></td>
+<td><p>00:24.894</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="deploy_model_on_rasp.html#sphx-glr-how-to-deploy-models-deploy-model-on-rasp-py"><span class="std std-ref">Deploy the Pretrained Model on Raspberry Pi</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_model_on_rasp.py</span></code>)</p></td>
+<td><p>00:24.369</p></td>
+<td><p>0.0 MB</p></td>
+</tr>
+<tr class="row-even"><td><p><a class="reference internal" href="deploy_sparse.html#sphx-glr-how-to-deploy-models-deploy-sparse-py"><span class="std std-ref">Deploy a Hugging Face Pruned Model on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">deploy_sparse.py</span></code>)</p></td>
 <td><p>00:00.007</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
diff --git a/docs/how_to/extend_tvm/bring_your_own_datatypes.html b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
index d35f755c0d..8e5b3a473e 100644
--- a/docs/how_to/extend_tvm/bring_your_own_datatypes.html
+++ b/docs/how_to/extend_tvm/bring_your_own_datatypes.html
@@ -621,7 +621,7 @@ In this alpha state of the Bring Your Own Datatypes framework, we have not imple
 <span class="n">module</span><span class="p">,</span> <a href="https://docs.python.org/3/library/stdtypes.html#dict" title="builtins.dict" class="sphx-glr-backref-module-builtins sphx-glr-backref-type-py-class sphx-glr-backref-instance"><span class="n">params</span></a> <span class="o">=</span> <span class="n">get_mobilenet</span><span class="p">()</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipd86fe21c-795b-44cf-8ba5-bd551c041788 from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Downloading /workspace/.mxnet/models/mobilenet0.25-9f83e440.zipf1ccbbf4-6c25-44a5-8145-44e2067663df from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/mobilenet0.25-9f83e440.zip...
 </pre></div>
 </div>
 <p>It’s easy to execute MobileNet with native TVM:</p>
diff --git a/docs/how_to/extend_tvm/sg_execution_times.html b/docs/how_to/extend_tvm/sg_execution_times.html
index 2734f4df4b..9b8701f6f7 100644
--- a/docs/how_to/extend_tvm/sg_execution_times.html
+++ b/docs/how_to/extend_tvm/sg_execution_times.html
@@ -340,7 +340,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-extend-tvm-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:48.423</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
+<p><strong>00:47.729</strong> total execution time for <strong>how_to_extend_tvm</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 84%" />
@@ -349,19 +349,19 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="bring_your_own_datatypes.html#sphx-glr-how-to-extend-tvm-bring-your-own-datatypes-py"><span class="std std-ref">Bring Your Own Datatypes to TVM</span></a> (<code class="docutils literal notranslate"><span class="pre">bring_your_own_datatypes.py</span></code>)</p></td>
-<td><p>00:44.500</p></td>
+<td><p>00:44.220</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="use_pass_instrument.html#sphx-glr-how-to-extend-tvm-use-pass-instrument-py"><span class="std std-ref">How to Use TVM Pass Instrument</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_instrument.py</span></code>)</p></td>
-<td><p>00:02.865</p></td>
+<td><p>00:02.453</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="use_pass_infra.html#sphx-glr-how-to-extend-tvm-use-pass-infra-py"><span class="std std-ref">How to Use TVM Pass Infra</span></a> (<code class="docutils literal notranslate"><span class="pre">use_pass_infra.py</span></code>)</p></td>
-<td><p>00:01.048</p></td>
+<td><p>00:01.050</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="low_level_custom_pass.html#sphx-glr-how-to-extend-tvm-low-level-custom-pass-py"><span class="std std-ref">Writing a Customized Pass</span></a> (<code class="docutils literal notranslate"><span class="pre">low_level_custom_pass.py</span></code>)</p></td>
-<td><p>00:00.009</p></td>
+<td><p>00:00.007</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/extend_tvm/use_pass_instrument.html b/docs/how_to/extend_tvm/use_pass_instrument.html
index fc1f23f0f8..0b5fc25283 100644
--- a/docs/how_to/extend_tvm/use_pass_instrument.html
+++ b/docs/how_to/extend_tvm/use_pass_instrument.html
@@ -525,10 +525,10 @@ profile the execution time of each passes.</p>
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 7402us [7402us] (46.66%; 46.66%)
-FoldScaleAxis: 8463us [7us] (53.34%; 53.34%)
-        FoldConstant: 8456us [1732us] (53.30%; 99.92%)
-                InferType: 6724us [6724us] (42.38%; 79.52%)
+InferType: 7670us [7670us] (48.14%; 48.14%)
+FoldScaleAxis: 8262us [7us] (51.86%; 51.86%)
+        FoldConstant: 8255us [1681us] (51.82%; 99.92%)
+                InferType: 6574us [6574us] (41.26%; 79.64%)
 </pre></div>
 </div>
 </div>
@@ -550,10 +550,10 @@ Refer to following sections and <a class="reference internal" href="../../refere
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Printing results of timing profile...
-InferType: 6766us [6766us] (44.93%; 44.93%)
-FoldScaleAxis: 8293us [6us] (55.07%; 55.07%)
-        FoldConstant: 8287us [1685us] (55.03%; 99.93%)
-                InferType: 6602us [6602us] (43.84%; 79.67%)
+InferType: 6910us [6910us] (45.86%; 45.86%)
+FoldScaleAxis: 8158us [5us] (54.14%; 54.14%)
+        FoldConstant: 8153us [1701us] (54.11%; 99.94%)
+                InferType: 6452us [6452us] (42.82%; 79.13%)
 </pre></div>
 </div>
 <p>Register empty list to clear existing instruments.</p>
diff --git a/docs/how_to/optimize_operators/opt_conv_cuda.html b/docs/how_to/optimize_operators/opt_conv_cuda.html
index a7ba40dc56..649f2330b6 100644
--- a/docs/how_to/optimize_operators/opt_conv_cuda.html
+++ b/docs/how_to/optimize_operators/opt_conv_cuda.html
@@ -577,7 +577,7 @@ latency of convolution.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Convolution: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">*</span> <span cl [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 39.974720 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Convolution: 46.708831 ms
 </pre></div>
 </div>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-how-to-optimize-operators-opt-conv-cuda-py">
diff --git a/docs/how_to/optimize_operators/opt_conv_tensorcore.html b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
index e251bcdb88..a6fba0e59e 100644
--- a/docs/how_to/optimize_operators/opt_conv_tensorcore.html
+++ b/docs/how_to/optimize_operators/opt_conv_tensorcore.html
@@ -914,7 +914,7 @@ be able to run on our build server</p>
     <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;conv2d with tensor core: </span><span class="si">%f</span><span class="s2"> ms&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">evaluator</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">w</span><span class="p">,</span> <span class="n">c</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span> <span class="o">* [...]
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 11.879251 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>conv2d with tensor core: 13.373473 ms
 </pre></div>
 </div>
 </div>
diff --git a/docs/how_to/optimize_operators/opt_gemm.html b/docs/how_to/optimize_operators/opt_gemm.html
index cb8499505f..73e63924b4 100644
--- a/docs/how_to/optimize_operators/opt_gemm.html
+++ b/docs/how_to/optimize_operators/opt_gemm.html
@@ -474,8 +474,8 @@ Then we write a baseline implementation, the simplest way to write a matrix mult
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Baseline: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.018462
-Baseline: 3.444377
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Numpy running time: 0.018131
+Baseline: 3.458023
 </pre></div>
 </div>
 <p>In TVM, we can always inspect lower level IR to debug or optimize our schedule.
@@ -534,7 +534,7 @@ fill 32 * 32 * sizeof(float) which is 4KB in the cache whose total size is 32KB
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt1: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.302857
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt1: 0.294667
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -600,7 +600,7 @@ vastly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt2: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.331886
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt2: 0.330786
 </pre></div>
 </div>
 <p>Here is the generated IR after vectorization.</p>
@@ -660,7 +660,7 @@ the access pattern for A matrix is more cache friendly.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt3: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.116086
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt3: 0.115375
 </pre></div>
 </div>
 <p>Here is the generated IR after loop permutation.</p>
@@ -742,7 +742,7 @@ flattening.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt4: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.109613
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt4: 0.107874
 </pre></div>
 </div>
 <p>Here is the generated IR after array packing.</p>
@@ -827,7 +827,7 @@ write to C when all the block results are ready.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt5: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">evaluator</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><span class="o">.</span><span class="n">mean</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.111185
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt5: 0.109242
 </pre></div>
 </div>
 <p>Here is the generated IR after blocking.</p>
@@ -916,7 +916,7 @@ write to C when all the block results are ready.</p>
 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Opt6: </span><span class="si">%f</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="n">opt6_time</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.147265
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Opt6: 0.144905
 </pre></div>
 </div>
 <p>Here is the generated IR after parallelization.</p>
diff --git a/docs/how_to/optimize_operators/sg_execution_times.html b/docs/how_to/optimize_operators/sg_execution_times.html
index 9fd394257e..e599834fed 100644
--- a/docs/how_to/optimize_operators/sg_execution_times.html
+++ b/docs/how_to/optimize_operators/sg_execution_times.html
@@ -340,7 +340,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-optimize-operators-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>00:34.785</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
+<p><strong>00:34.583</strong> total execution time for <strong>how_to_optimize_operators</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 83%" />
@@ -349,15 +349,15 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_gemm.html#sphx-glr-how-to-optimize-operators-opt-gemm-py"><span class="std std-ref">How to optimize GEMM on CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_gemm.py</span></code>)</p></td>
-<td><p>00:32.348</p></td>
+<td><p>00:32.099</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="opt_conv_tensorcore.html#sphx-glr-how-to-optimize-operators-opt-conv-tensorcore-py"><span class="std std-ref">How to optimize convolution using TensorCores</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_tensorcore.py</span></code>)</p></td>
-<td><p>00:01.416</p></td>
+<td><p>00:01.427</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="opt_conv_cuda.html#sphx-glr-how-to-optimize-operators-opt-conv-cuda-py"><span class="std std-ref">How to optimize convolution on GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">opt_conv_cuda.py</span></code>)</p></td>
-<td><p>00:01.021</p></td>
+<td><p>00:01.058</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
index 499523ea03..61fa8fed80 100644
--- a/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
+++ b/docs/how_to/tune_with_autoscheduler/sg_execution_times.html
@@ -340,7 +340,7 @@
             
   <div class="section" id="computation-times">
 <span id="sphx-glr-how-to-tune-with-autoscheduler-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Permalink to this headline">¶</a></h1>
-<p><strong>08:50.783</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
+<p><strong>09:03.300</strong> total execution time for <strong>how_to_tune_with_autoscheduler</strong> files:</p>
 <table class="docutils align-default">
 <colgroup>
 <col style="width: 85%" />
@@ -349,27 +349,27 @@
 </colgroup>
 <tbody>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_conv2d_layer_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-conv2d-layer-cuda-py"><span class="std std-ref">Auto-scheduling a Convolution Layer for GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_conv2d_layer_cuda.py</span></code>)</p></td>
-<td><p>05:25.528</p></td>
+<td><p>05:28.594</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-x86-py"><span class="std std-ref">Auto-scheduling a Neural Network for x86 CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_x86.py</span></code>)</p></td>
-<td><p>01:32.411</p></td>
+<td><p>01:31.712</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_cuda.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-cuda-py"><span class="std std-ref">Auto-scheduling a Neural Network for NVIDIA GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_cuda.py</span></code>)</p></td>
-<td><p>01:01.299</p></td>
+<td><p>01:00.986</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_sparse_x86.html#sphx-glr-how-to-tune-with-autoscheduler-tune-sparse-x86-py"><span class="std std-ref">Auto-scheduling Sparse Matrix Multiplication on CPU with Custom Sketch Rule</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_sparse_x86.py</span></code>)</p></td>
-<td><p>00:27.946</p></td>
+<td><p>00:38.664</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="tune_network_arm.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-arm-py"><span class="std std-ref">Auto-scheduling a Neural Network for ARM CPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_arm.py</span></code>)</p></td>
-<td><p>00:12.325</p></td>
+<td><p>00:12.020</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="tune_network_mali.html#sphx-glr-how-to-tune-with-autoscheduler-tune-network-mali-py"><span class="std std-ref">Auto-scheduling a Neural Network for mali GPU</span></a> (<code class="docutils literal notranslate"><span class="pre">tune_network_mali.py</span></code>)</p></td>
-<td><p>00:11.274</p></td>
+<td><p>00:11.323</p></td>
 <td><p>0.0 MB</p></td>
 </tr>
 </tbody>
diff --git a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
index 646f1e4028..233fd2216f 100644
--- a/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
+++ b/docs/how_to/tune_with_autoscheduler/tune_conv2d_layer_cuda.html
@@ -503,483 +503,513 @@ cooperative fetching, unrolling and operator fusion.</p>
              bias: Buffer(bias_2: Pointer(float32), float32, [1, 512, 1, 1], []),
              compute: Buffer(compute_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), &quot;ThreadIndex&quot;, &quot;blockIdx.x&quot;)] &quot;thread_extent&quot; = 28;
-  allocate(conv2d_nchw: Pointer(local float32), float32, [14]), storage_scope = local;
-  allocate(pad_temp.shared: Pointer(shared float32), float32, [72]), storage_scope = shared;
-  allocate(kernel.shared: Pointer(shared float32), float32, [3072]), storage_scope = shared;
-  attr [IterVar(threadIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64 {
-    conv2d_nchw_1: Buffer(conv2d_nchw, float32, [14], [], scope=&quot;local&quot;, align=32)[0] = 0f32
+  attr [IterVar(blockIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;blockIdx.x&quot;)] &quot;thread_extent&quot; = 128;
+  allocate(conv2d_nchw: Pointer(local float32), float32, [2]), storage_scope = local;
+  allocate(pad_temp.shared: Pointer(shared float32), float32, [4032]), storage_scope = shared;
+  allocate(kernel.shared: Pointer(shared float32), float32, [768]), storage_scope = shared;
+  attr [IterVar(threadIdx.x: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98 {
+    conv2d_nchw_1: Buffer(conv2d_nchw, float32, [2], [], scope=&quot;local&quot;, align=8)[0] = 0f32
     conv2d_nchw_1[1] = 0f32
-    conv2d_nchw_1[2] = 0f32
-    conv2d_nchw_1[3] = 0f32
-    conv2d_nchw_1[4] = 0f32
-    conv2d_nchw_1[5] = 0f32
-    conv2d_nchw_1[6] = 0f32
-    conv2d_nchw_1[7] = 0f32
-    conv2d_nchw_1[8] = 0f32
-    conv2d_nchw_1[9] = 0f32
-    conv2d_nchw_1[10] = 0f32
-    conv2d_nchw_1[11] = 0f32
-    conv2d_nchw_1[12] = 0f32
-    conv2d_nchw_1[13] = 0f32
-    for (rc.outer.outer: int32, 0, 64) {
+    for (rc.outer.outer: int32, 0, 8) {
       for (ry.outer.outer: int32, 0, 3) {
-        let cse_var_2: int32 = (rc.outer.outer*72)
+        let cse_var_4: int32 = (rc.outer.outer*3136)
+        let cse_var_3: int32 = (ry.outer.outer*7)
+        let cse_var_2: int32 = (rc.outer.outer*576)
         let cse_var_1: int32 = (ry.outer.outer*3)
          {
-          attr [IterVar(threadIdx.x_1: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64 {
-            if @tir.likely((threadIdx.x_1 &lt; 18), dtype=bool) {
-              pad_temp.shared_1: Buffer(pad_temp.shared, float32, [72], [], scope=&quot;shared&quot;)[(threadIdx.x_1*4)] = @tir.if_then_else(((((1 &lt;= (ry.outer.outer + floormod(blockIdx.x, 7))) &amp;&amp; ((ry.outer.outer + floormod(blockIdx.x, 7)) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1*4), 9))) &amp;&amp; (floormod((threadIdx.x_1*4), 9) &lt; 8)), data_3: Buffer(data_2, float32, [25088], [])[((((((rc.outer.outer*392) + (floordiv((threadIdx.x_1*4), 9)*49)) + (ry.outer.out [...]
-            }
-            if @tir.likely((threadIdx.x_1 &lt; 18), dtype=bool) {
-              pad_temp.shared_1[((threadIdx.x_1*4) + 1)] = @tir.if_then_else(((((1 &lt;= (ry.outer.outer + floormod(blockIdx.x, 7))) &amp;&amp; ((ry.outer.outer + floormod(blockIdx.x, 7)) &lt; 8)) &amp;&amp; (1 &lt;= floormod(((threadIdx.x_1*4) + 1), 9))) &amp;&amp; (floormod(((threadIdx.x_1*4) + 1), 9) &lt; 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 1), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 1), 9)) - 8)], [...]
-            }
-            if @tir.likely((threadIdx.x_1 &lt; 18), dtype=bool) {
-              pad_temp.shared_1[((threadIdx.x_1*4) + 2)] = @tir.if_then_else(((((1 &lt;= (ry.outer.outer + floormod(blockIdx.x, 7))) &amp;&amp; ((ry.outer.outer + floormod(blockIdx.x, 7)) &lt; 8)) &amp;&amp; (1 &lt;= floormod(((threadIdx.x_1*4) + 2), 9))) &amp;&amp; (floormod(((threadIdx.x_1*4) + 2), 9) &lt; 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 2), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 2), 9)) - 8)], [...]
-            }
-            if @tir.likely((threadIdx.x_1 &lt; 18), dtype=bool) {
-              pad_temp.shared_1[((threadIdx.x_1*4) + 3)] = @tir.if_then_else(((((1 &lt;= (ry.outer.outer + floormod(blockIdx.x, 7))) &amp;&amp; ((ry.outer.outer + floormod(blockIdx.x, 7)) &lt; 8)) &amp;&amp; (1 &lt;= floormod(((threadIdx.x_1*4) + 3), 9))) &amp;&amp; (floormod(((threadIdx.x_1*4) + 3), 9) &lt; 8)), data_3[((((((rc.outer.outer*392) + (floordiv(((threadIdx.x_1*4) + 3), 9)*49)) + (ry.outer.outer*7)) + (floormod(blockIdx.x, 7)*7)) + floormod(((threadIdx.x_1*4) + 3), 9)) - 8)], [...]
-            }
+          attr [IterVar(threadIdx.x_1: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1: Buffer(pad_temp.shared, float32, [4032], [], scope=&quot;shared&quot;)[threadIdx.x_1] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data_3: Buffer(data_2, float32, [25088], [])[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) [...]
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 98)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 98), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 196)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 196), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 294)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 294), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 392)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 392), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 490)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 490), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 588)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 588), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 686)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 686), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 784)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 784), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 882)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 678)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 980)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 980), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1078)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1078), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1176)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1176), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1274)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1274), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1372)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1372), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1470)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1470), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1568)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1568), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1666)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1666), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1764)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 1364)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1862)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1862), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 1960)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 1960), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2058)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2058), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2156)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2156), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2254)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2254), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2352)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2352), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2450)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2450), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2548)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2548), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2646)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 2050)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2744)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2744), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2842)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2842), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 2940)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 2940), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3038)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3038), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3136)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3136), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3234)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 21), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 3), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 3), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3234), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 3), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3332)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 56), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 2), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 2), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3332), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 2), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3430)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 28), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 1), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 1), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3430), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 1), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3528)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod(threadIdx.x_1, 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod(threadIdx.x_1, 9))) &amp;&amp; (floormod(threadIdx.x_1, 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv(threadIdx.x_1, 9)*7)) + cse_var_3) + floormod(threadIdx.x_1, 9)) + 2736)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3626)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 35), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 8), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 8), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3626), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 8), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3724)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 7), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 7), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 7), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3724), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 7), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3822)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 42), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 6), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 6), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3822), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 6), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          pad_temp.shared_1[(threadIdx.x_1 + 3920)] = @tir.if_then_else(((((1 &lt;= (floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer)) &amp;&amp; ((floordiv(floormod((threadIdx.x_1 + 14), 63), 9) + ry.outer.outer) &lt; 8)) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 5), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 5), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 3920), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 5), 9)) - 8)], 0f32, dtype=float32)
+          attr [IterVar(threadIdx.x_1, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          if @tir.likely((threadIdx.x_1 &lt; 14), dtype=bool) {
+            pad_temp.shared_1[(threadIdx.x_1 + 4018)] = @tir.if_then_else(((((floordiv(floormod((threadIdx.x_1 + 49), 63), 9) + ry.outer.outer) &lt; 8) &amp;&amp; (1 &lt;= floormod((threadIdx.x_1 + 4), 9))) &amp;&amp; (floormod((threadIdx.x_1 + 4), 9) &lt; 8)), data_3[((((cse_var_4 + (floordiv((threadIdx.x_1 + 4018), 9)*7)) + cse_var_3) + floormod((threadIdx.x_1 + 4), 9)) - 8)], 0f32, dtype=float32)
           }
-          attr [IterVar(threadIdx.x_2: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1: Buffer(kernel.shared, float32, [3072], [], scope=&quot;shared&quot;)[threadIdx.x_2] = kernel_3: Buffer(kernel_2, float32, [2359296], [])[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 64)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 64), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 128)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 128), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 192)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 36864)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 256)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 256), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 320)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 320), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 384)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 73728)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 448)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 448), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 512)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 512), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 576)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 110592)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 640)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 640), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 704)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 704), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 768)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 147456)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 832)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 832), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 896)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 896), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 960)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 184320)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1024)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1024), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1088)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1088), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1152)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 221184)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1216)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1216), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1280)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1280), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1344)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 258048)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1408)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1408), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1472)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1472), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1536)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 294912)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1600)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1600), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1664)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1664), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1728)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 331776)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1792)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1792), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1856)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1856), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1920)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 368640)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 1984)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 1984), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2048)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2048), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2112)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 405504)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2176)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2176), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2240)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2240), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2304)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 442368)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2368)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2368), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2432)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2432), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2496)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 479232)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2560)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2560), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2624)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2624), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2688)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 516096)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2752)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2752), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2816)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2816), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2880)] = kernel_3[(((((((floordiv(blockIdx.x, 7)*589824) + (floordiv(threadIdx.x_2, 24)*4608)) + cse_var_2) + (floordiv(floormod(threadIdx.x_2, 24), 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3)) + 552960)]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 2944)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 2944), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 16), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
-          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 64;
-          kernel.shared_1[(threadIdx.x_2 + 3008)] = kernel_3[((((((floordiv(blockIdx.x, 7)*589824) + (floordiv((threadIdx.x_2 + 3008), 24)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 24), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[0]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[9]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[1]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[2]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[3]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[4]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[5]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[6]*kernel.shared_1[(threadIdx.x*48)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 3)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[0]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[9]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 24)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 27)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 1)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 4)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[1]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[10]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 25)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 28)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[8]*kernel.shared_1[((threadIdx.x*48) + 2)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[17]*kernel.shared_1[((threadIdx.x*48) + 5)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[2]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[11]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[3]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[12]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[4]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[13]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[5]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[14]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[6]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[15]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[7]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[16]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[8]*kernel.shared_1[((threadIdx.x*48) + 26)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[17]*kernel.shared_1[((threadIdx.x*48) + 29)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[18]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[27]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 6)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 9)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[18]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[27]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 30)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 33)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 7)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 10)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[19]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[28]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 31)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 34)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[26]*kernel.shared_1[((threadIdx.x*48) + 8)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[35]*kernel.shared_1[((threadIdx.x*48) + 11)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[20]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[29]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[21]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[30]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[22]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[31]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[23]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[32]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[24]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[33]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[25]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[34]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[26]*kernel.shared_1[((threadIdx.x*48) + 32)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[35]*kernel.shared_1[((threadIdx.x*48) + 35)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[36]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[45]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 12)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 15)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[36]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[45]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 36)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 39)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 13)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 16)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[37]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[46]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 37)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 40)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[44]*kernel.shared_1[((threadIdx.x*48) + 14)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[53]*kernel.shared_1[((threadIdx.x*48) + 17)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[38]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[47]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[39]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[48]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[40]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[49]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[41]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[50]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[42]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[51]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[43]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[52]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[44]*kernel.shared_1[((threadIdx.x*48) + 38)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[53]*kernel.shared_1[((threadIdx.x*48) + 41)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[54]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[63]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 18)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 21)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[54]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[63]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 42)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 45)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 19)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 22)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[55]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[64]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 43)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 46)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[2] = (conv2d_nchw_1[2] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[3] = (conv2d_nchw_1[3] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[4] = (conv2d_nchw_1[4] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[5] = (conv2d_nchw_1[5] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[62]*kernel.shared_1[((threadIdx.x*48) + 20)]))
-          conv2d_nchw_1[6] = (conv2d_nchw_1[6] + (pad_temp.shared_1[71]*kernel.shared_1[((threadIdx.x*48) + 23)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[56]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[7] = (conv2d_nchw_1[7] + (pad_temp.shared_1[65]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[57]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[8] = (conv2d_nchw_1[8] + (pad_temp.shared_1[66]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[58]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[9] = (conv2d_nchw_1[9] + (pad_temp.shared_1[67]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[59]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[10] = (conv2d_nchw_1[10] + (pad_temp.shared_1[68]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[60]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[11] = (conv2d_nchw_1[11] + (pad_temp.shared_1[69]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[61]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[12] = (conv2d_nchw_1[12] + (pad_temp.shared_1[70]*kernel.shared_1[((threadIdx.x*48) + 47)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[62]*kernel.shared_1[((threadIdx.x*48) + 44)]))
-          conv2d_nchw_1[13] = (conv2d_nchw_1[13] + (pad_temp.shared_1[71]*kernel.shared_1[((threadIdx.x*48) + 47)]))
+          attr [IterVar(threadIdx.x_2: int32, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1: Buffer(kernel.shared, float32, [768], [], scope=&quot;shared&quot;)[threadIdx.x_2] = kernel_3: Buffer(kernel_2, float32, [2359296], [])[(((((blockIdx.x*18432) + cse_var_2) + (floordiv(threadIdx.x_2, 3)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 98)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 98), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 98), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 196)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 196), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 4), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 294)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 294), 192)*4608)) + cse_var_2) + (floormod((floordiv(threadIdx.x_2, 3) + 34), 64)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 392)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 392), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 8), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 490)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 490), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 106), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 1), 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          kernel.shared_1[(threadIdx.x_2 + 588)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 588), 192)*4608)) + cse_var_2) + ((floordiv(threadIdx.x_2, 3) + 4)*9)) + cse_var_1) + floormod(threadIdx.x_2, 3))]
+          attr [IterVar(threadIdx.x_2, (nullptr), &quot;ThreadIndex&quot;, &quot;threadIdx.x&quot;)] &quot;thread_extent&quot; = 98;
+          if @tir.likely((threadIdx.x_2 &lt; 82), dtype=bool) {
+            kernel.shared_1[(threadIdx.x_2 + 686)] = kernel_3[((((((blockIdx.x*18432) + (floordiv((threadIdx.x_2 + 686), 192)*4608)) + cse_var_2) + (floordiv(floormod((threadIdx.x_2 + 110), 192), 3)*9)) + cse_var_1) + floormod((threadIdx.x_2 + 2), 3))]
+          }
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[(floordiv(threadIdx.x, 49)*384)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7))]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 192)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 1)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 193)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 2)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 194)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 3)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 63)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 195)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 4)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 64)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 196)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 5)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 65)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 197)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 6)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 126)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 198)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 7)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 127)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 199)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 8)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 128)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 200)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 9)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 189)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 201)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 10)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 190)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 202)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 11)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 191)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 203)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 12)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 252)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 204)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 13)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 253)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 205)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 14)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 254)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 206)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 15)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 315)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 207)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 16)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 316)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 208)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 17)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 317)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 209)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 18)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 378)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 210)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 19)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 379)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 211)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 20)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 380)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 212)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 21)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 441)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 213)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 22)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 442)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 214)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 23)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 443)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 215)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 24)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 504)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 216)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 25)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 505)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 217)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 26)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 506)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 218)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 27)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 567)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 219)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 28)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 568)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 220)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 29)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 569)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 221)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 30)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 630)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 222)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 31)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 631)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 223)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 32)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 632)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 224)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 33)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 693)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 225)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 34)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 694)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 226)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 35)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 695)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 227)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 36)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 756)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 228)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 37)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 757)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 229)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 38)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 758)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 230)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 39)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 819)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 231)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 40)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 820)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 232)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 41)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 821)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 233)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 42)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 882)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 234)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 43)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 883)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 235)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 44)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 884)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 236)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 45)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 945)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 237)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 46)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 946)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 238)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 47)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 947)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 239)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 48)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1008)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 240)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 49)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1009)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 241)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 50)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1010)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 242)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 51)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1071)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 243)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 52)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1072)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 244)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 53)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1073)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 245)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1134)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 54)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1134)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 246)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1135)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 55)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1135)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 247)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1136)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 56)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1136)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 248)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 57)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1197)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 249)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 58)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1198)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 250)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 59)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1199)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 251)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 60)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1260)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 252)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 61)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1261)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 253)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 62)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1262)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 254)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1323)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 63)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1323)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 255)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1324)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 64)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1324)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 256)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1325)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 65)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1325)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 257)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1386)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 66)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1386)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 258)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1387)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 67)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1387)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 259)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1388)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 68)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1388)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 260)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1449)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 69)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1449)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 261)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1450)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 70)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1450)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 262)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1451)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 71)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1451)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 263)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1512)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 72)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1512)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 264)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1513)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 73)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1513)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 265)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1514)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 74)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1514)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 266)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1575)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 75)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1575)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 267)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1576)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 76)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1576)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 268)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1577)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 77)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1577)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 269)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1638)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 78)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1638)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 270)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1639)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 79)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1639)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 271)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1640)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 80)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1640)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 272)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1701)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 81)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1701)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 273)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1702)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 82)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1702)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 274)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1703)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 83)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1703)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 275)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1764)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 84)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1764)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 276)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1765)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 85)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1765)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 277)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1766)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 86)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1766)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 278)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1827)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 87)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1827)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 279)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1828)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 88)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1828)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 280)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1829)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 89)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1829)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 281)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1890)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 90)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1890)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 282)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1891)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 91)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1891)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 283)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1892)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 92)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1892)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 284)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1953)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 93)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1953)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 285)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1954)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 94)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1954)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 286)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1955)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 95)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 1955)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 287)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2016)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 96)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2016)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 288)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2017)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 97)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2017)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 289)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2018)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 98)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2018)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 290)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2079)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 99)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2079)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 291)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2080)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 100)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2080)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 292)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2081)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 101)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2081)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 293)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2142)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 102)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2142)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 294)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2143)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 103)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2143)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 295)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2144)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 104)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2144)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 296)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2205)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 105)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2205)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 297)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2206)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 106)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2206)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 298)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2207)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 107)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2207)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 299)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2268)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 108)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2268)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 300)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2269)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 109)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2269)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 301)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2270)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 110)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2270)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 302)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2331)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 111)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2331)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 303)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2332)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 112)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2332)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 304)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2333)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 113)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2333)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 305)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2394)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 114)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2394)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 306)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2395)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 115)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2395)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 307)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2396)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 116)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2396)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 308)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2457)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 117)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2457)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 309)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2458)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 118)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2458)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 310)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2459)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 119)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2459)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 311)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2520)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 120)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2520)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 312)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2521)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 121)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2521)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 313)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2522)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 122)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2522)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 314)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2583)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 123)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2583)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 315)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2584)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 124)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2584)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 316)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2585)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 125)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2585)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 317)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2646)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 126)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2646)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 318)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2647)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 127)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2647)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 319)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2648)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 128)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2648)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 320)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2709)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 129)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2709)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 321)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2710)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 130)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2710)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 322)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2711)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 131)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2711)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 323)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2772)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 132)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2772)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 324)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2773)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 133)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2773)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 325)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2774)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 134)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2774)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 326)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2835)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 135)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2835)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 327)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2836)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 136)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2836)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 328)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2837)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 137)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2837)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 329)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2898)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 138)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2898)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 330)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2899)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 139)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2899)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 331)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2900)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 140)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2900)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 332)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2961)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 141)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2961)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 333)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2962)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 142)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2962)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 334)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2963)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 143)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 2963)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 335)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3024)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 144)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3024)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 336)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3025)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 145)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3025)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 337)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3026)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 146)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3026)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 338)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3087)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 147)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3087)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 339)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3088)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 148)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3088)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 340)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3089)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 149)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3089)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 341)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3150)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 150)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3150)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 342)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3151)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 151)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3151)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 343)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3152)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 152)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3152)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 344)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3213)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 153)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3213)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 345)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3214)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 154)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3214)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 346)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3215)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 155)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3215)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 347)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3276)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 156)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3276)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 348)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3277)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 157)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3277)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 349)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3278)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 158)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3278)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 350)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3339)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 159)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3339)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 351)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3340)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 160)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3340)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 352)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3341)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 161)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3341)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 353)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3402)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 162)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3402)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 354)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3403)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 163)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3403)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 355)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3404)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 164)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3404)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 356)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3465)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 165)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3465)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 357)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3466)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 166)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3466)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 358)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3467)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 167)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3467)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 359)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3528)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 168)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3528)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 360)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3529)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 169)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3529)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 361)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3530)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 170)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3530)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 362)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3591)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 171)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3591)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 363)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3592)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 172)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3592)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 364)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3593)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 173)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3593)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 365)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3654)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 174)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3654)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 366)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3655)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 175)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3655)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 367)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3656)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 176)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3656)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 368)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3717)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 177)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3717)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 369)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3718)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 178)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3718)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 370)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3719)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 179)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3719)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 371)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3780)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 180)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3780)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 372)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3781)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 181)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3781)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 373)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3782)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 182)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3782)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 374)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3843)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 183)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3843)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 375)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3844)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 184)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3844)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 376)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3845)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 185)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3845)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 377)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3906)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 186)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3906)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 378)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3907)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 187)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3907)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 379)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3908)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 188)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3908)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 380)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3969)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 189)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3969)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 381)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3970)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 190)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3970)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 382)]))
+          conv2d_nchw_1[0] = (conv2d_nchw_1[0] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3971)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 191)]))
+          conv2d_nchw_1[1] = (conv2d_nchw_1[1] + (pad_temp.shared_1[(((floordiv(floormod(threadIdx.x, 49), 7)*9) + floormod(threadIdx.x, 7)) + 3971)]*kernel.shared_1[((floordiv(threadIdx.x, 49)*384) + 383)]))
         }
       }
     }
     for (i1.inner: int32, 0, 2) {
-      for (i3.inner: int32, 0, 7) {
-        compute_3: Buffer(compute_2, float32, [25088], [])[(((((floordiv(blockIdx.x, 7)*6272) + (threadIdx.x*98)) + (i1.inner*49)) + (floormod(blockIdx.x, 7)*7)) + i3.inner)] = max((conv2d_nchw_1[((i1.inner*7) + i3.inner)] + bias_3: Buffer(bias_2, float32, [512], [])[(((floordiv(blockIdx.x, 7)*128) + (threadIdx.x*2)) + i1.inner)]), 0f32)
-      }
+      compute_3: Buffer(compute_2, float32, [25088], [])[((((blockIdx.x*196) + (floordiv(threadIdx.x, 49)*98)) + (i1.inner*49)) + floormod(threadIdx.x, 49))] = max((conv2d_nchw_1[i1.inner] + bias_3: Buffer(bias_2, float32, [512], [])[(((blockIdx.x*4) + (floordiv(threadIdx.x, 49)*2)) + i1.inner)]), 0f32)
     }
   }
 }
@@ -1016,7 +1046,7 @@ cooperative fetching, unrolling and operator fusion.</p>
 <span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.357 ms
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>Execution time of this operator: 0.363 ms
 </pre></div>
 </div>
 </div>
@@ -1045,36 +1075,36 @@ conv2d_nchw_nn_o_i, conv2d_nchw_nn_i = s[conv2d_nchw].split(conv2d_nchw_nn, fact
 conv2d_nchw_nn_o_o_i, conv2d_nchw_nn_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_i, factor=1)
 conv2d_nchw_nn_o_o_o_i, conv2d_nchw_nn_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_i, factor=1)
 conv2d_nchw_nn_o_o_o_o, conv2d_nchw_nn_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_nn_o_o_o_i, factor=1)
-conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=1)
-conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=2)
-conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=64)
+conv2d_nchw_ff_o_i, conv2d_nchw_ff_i = s[conv2d_nchw].split(conv2d_nchw_ff, factor=2)
+conv2d_nchw_ff_o_o_i, conv2d_nchw_ff_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_i, factor=1)
+conv2d_nchw_ff_o_o_o_i, conv2d_nchw_ff_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_i, factor=2)
 conv2d_nchw_ff_o_o_o_o, conv2d_nchw_ff_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_ff_o_o_o_i, factor=1)
 conv2d_nchw_yy_o_i, conv2d_nchw_yy_i = s[conv2d_nchw].split(conv2d_nchw_yy, factor=1)
 conv2d_nchw_yy_o_o_i, conv2d_nchw_yy_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_i, factor=1)
-conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=1)
+conv2d_nchw_yy_o_o_o_i, conv2d_nchw_yy_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_i, factor=7)
 conv2d_nchw_yy_o_o_o_o, conv2d_nchw_yy_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_yy_o_o_o_i, factor=1)
 conv2d_nchw_xx_o_i, conv2d_nchw_xx_i = s[conv2d_nchw].split(conv2d_nchw_xx, factor=1)
-conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=7)
-conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=1)
+conv2d_nchw_xx_o_o_i, conv2d_nchw_xx_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_i, factor=1)
+conv2d_nchw_xx_o_o_o_i, conv2d_nchw_xx_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_i, factor=7)
 conv2d_nchw_xx_o_o_o_o, conv2d_nchw_xx_o_o_o_i = s[conv2d_nchw].split(conv2d_nchw_xx_o_o_o_i, factor=1)
-conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=2)
-conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=4)
+conv2d_nchw_rc_o_i, conv2d_nchw_rc_i = s[conv2d_nchw].split(conv2d_nchw_rc, factor=1)
+conv2d_nchw_rc_o_o, conv2d_nchw_rc_o_i = s[conv2d_nchw].split(conv2d_nchw_rc_o_i, factor=64)
 conv2d_nchw_ry_o_i, conv2d_nchw_ry_i = s[conv2d_nchw].split(conv2d_nchw_ry, factor=1)
 conv2d_nchw_ry_o_o, conv2d_nchw_ry_o_i = s[conv2d_nchw].split(conv2d_nchw_ry_o_i, factor=1)
-conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=1)
-conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=3)
+conv2d_nchw_rx_o_i, conv2d_nchw_rx_i = s[conv2d_nchw].split(conv2d_nchw_rx, factor=3)
+conv2d_nchw_rx_o_o, conv2d_nchw_rx_o_i = s[conv2d_nchw].split(conv2d_nchw_rx_o_i, factor=1)
 s[conv2d_nchw].reorder(conv2d_nchw_nn_o_o_o_o, conv2d_nchw_ff_o_o_o_o, conv2d_nchw_yy_o_o_o_o, conv2d_nchw_xx_o_o_o_o, conv2d_nchw_nn_o_o_o_i, conv2d_nchw_ff_o_o_o_i, conv2d_nchw_yy_o_o_o_i, conv2d_nchw_xx_o_o_o_i, conv2d_nchw_nn_o_o_i, conv2d_nchw_ff_o_o_i, conv2d_nchw_yy_o_o_i, conv2d_nchw_xx_o_o_i, conv2d_nchw_rc_o_o, conv2d_nchw_ry_o_o, conv2d_nchw_rx_o_o, conv2d_nchw_rc_o_i, conv2d_nchw_ry_o_i, conv2d_nchw_rx_o_i, conv2d_nchw_nn_o_i, conv2d_nchw_ff_o_i, conv2d_nchw_yy_o_i, conv2d_nc [...]
 compute_i0_o_i, compute_i0_i = s[compute].split(compute_i0, factor=1)
 compute_i0_o_o_i, compute_i0_o_i = s[compute].split(compute_i0_o_i, factor=1)
 compute_i0_o_o_o, compute_i0_o_o_i = s[compute].split(compute_i0_o_o_i, factor=1)
 compute_i1_o_i, compute_i1_i = s[compute].split(compute_i1, factor=2)
-compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=64)
+compute_i1_o_o_i, compute_i1_o_i = s[compute].split(compute_i1_o_i, factor=2)
 compute_i1_o_o_o, compute_i1_o_o_i = s[compute].split(compute_i1_o_o_i, factor=1)
 compute_i2_o_i, compute_i2_i = s[compute].split(compute_i2, factor=1)
-compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=1)
+compute_i2_o_o_i, compute_i2_o_i = s[compute].split(compute_i2_o_i, factor=7)
 compute_i2_o_o_o, compute_i2_o_o_i = s[compute].split(compute_i2_o_o_i, factor=1)
-compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=7)
-compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=1)
+compute_i3_o_i, compute_i3_i = s[compute].split(compute_i3, factor=1)
+compute_i3_o_o_i, compute_i3_o_i = s[compute].split(compute_i3_o_i, factor=7)
 compute_i3_o_o_o, compute_i3_o_o_i = s[compute].split(compute_i3_o_o_i, factor=1)
 s[compute].reorder(compute_i0_o_o_o, compute_i1_o_o_o, compute_i2_o_o_o, compute_i3_o_o_o, compute_i0_o_o_i, compute_i1_o_o_i, compute_i2_o_o_i, compute_i3_o_o_i, compute_i0_o_i, compute_i1_o_i, compute_i2_o_i, compute_i3_o_i, compute_i0_i, compute_i1_i, compute_i2_i, compute_i3_i)
 s[conv2d_nchw].compute_at(s[compute], compute_i3_o_i)
@@ -1094,12 +1124,12 @@ s[compute].bind(compute_i0_o_i_i1_o_i_fused_i2_o_i_fused_i3_o_i_fused, te.thread
 kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[kernel_shared].fuse(kernel_shared_ax0, kernel_shared_ax1, kernel_shared_ax2, kernel_shared_ax3)
 kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
 s[kernel_shared].vectorize(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=64)
+kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[kernel_shared].split(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=98)
 s[kernel_shared].bind(kernel_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(&quot;threadIdx.x&quot;))
 pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused = s[pad_temp_shared].fuse(pad_temp_shared_ax0, pad_temp_shared_ax1, pad_temp_shared_ax2, pad_temp_shared_ax3)
-pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=4)
+pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused, factor=1)
 s[pad_temp_shared].vectorize(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_i)
-pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=64)
+pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_o, pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i = s[pad_temp_shared].split(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o, factor=98)
 s[pad_temp_shared].bind(pad_temp_shared_ax0_ax1_fused_ax2_fused_ax3_fused_o_i, te.thread_axis(&quot;threadIdx.x&quot;))
 s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, &quot;auto_unroll_max_step&quot;, 512)
 s[conv2d_nchw].pragma(conv2d_nchw_nn_o_o_o_o, &quot;unroll_explicit&quot;, True)
@@ -1119,430 +1149,458 @@ CUDA source code:
   #define int64_t long long
   #define uint64_t unsigned long long
 #endif
-extern &quot;C&quot; __global__ void __launch_bounds__(64) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
-  float conv2d_nchw[14];
-  __shared__ float pad_temp_shared[72];
-  __shared__ float kernel_shared[3072];
+extern &quot;C&quot; __global__ void __launch_bounds__(98) default_function_kernel0(float* __restrict__ data, float* __restrict__ kernel, float* __restrict__ compute, float* __restrict__ bias) {
+  float conv2d_nchw[2];
+  __shared__ float pad_temp_shared[4032];
+  __shared__ float kernel_shared[768];
   conv2d_nchw[0] = 0.000000e+00f;
   conv2d_nchw[1] = 0.000000e+00f;
-  conv2d_nchw[2] = 0.000000e+00f;
-  conv2d_nchw[3] = 0.000000e+00f;
-  conv2d_nchw[4] = 0.000000e+00f;
-  conv2d_nchw[5] = 0.000000e+00f;
-  conv2d_nchw[6] = 0.000000e+00f;
-  conv2d_nchw[7] = 0.000000e+00f;
-  conv2d_nchw[8] = 0.000000e+00f;
-  conv2d_nchw[9] = 0.000000e+00f;
-  conv2d_nchw[10] = 0.000000e+00f;
-  conv2d_nchw[11] = 0.000000e+00f;
-  conv2d_nchw[12] = 0.000000e+00f;
-  conv2d_nchw[13] = 0.000000e+00f;
-  for (int rc_outer_outer = 0; rc_outer_outer &lt; 64; ++rc_outer_outer) {
+  for (int rc_outer_outer = 0; rc_outer_outer &lt; 8; ++rc_outer_outer) {
     for (int ry_outer_outer = 0; ry_outer_outer &lt; 3; ++ry_outer_outer) {
       __syncthreads();
-      if (((int)threadIdx.x) &lt; 18) {
-        pad_temp_shared[(((int)threadIdx.x) * 4)] = (((((1 &lt;= (ry_outer_outer + (((int)blockIdx.x) % 7))) &amp;&amp; ((ry_outer_outer + (((int)blockIdx.x) % 7)) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) * 4) % 9))) &amp;&amp; (((((int)threadIdx.x) * 4) % 9) &lt; 8)) ? data[((((((rc_outer_outer * 392) + (((((int)threadIdx.x) * 4) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + ((((int)threadIdx.x) * 4) % 9)) - 8)] : 0.000000e+00f);
-      }
-      if (((int)threadIdx.x) &lt; 18) {
-        pad_temp_shared[((((int)threadIdx.x) * 4) + 1)] = (((((1 &lt;= (ry_outer_outer + (((int)blockIdx.x) % 7))) &amp;&amp; ((ry_outer_outer + (((int)blockIdx.x) % 7)) &lt; 8)) &amp;&amp; (1 &lt;= (((((int)threadIdx.x) * 4) + 1) % 9))) &amp;&amp; ((((((int)threadIdx.x) * 4) + 1) % 9) &lt; 8)) ? data[((((((rc_outer_outer * 392) + ((((((int)threadIdx.x) * 4) + 1) / 9) * 49)) + (ry_outer_outer * 7)) + ((((int)blockIdx.x) % 7) * 7)) + (((((int)threadIdx.x) * 4) + 1) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[((int)threadIdx.x)] = (((((1 &lt;= (((((int)threadIdx.x) % 63) / 9) + ry_outer_outer)) &amp;&amp; ((((((int)threadIdx.x) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= (((int)threadIdx.x) % 9))) &amp;&amp; ((((int)threadIdx.x) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + ((((int)threadIdx.x) / 9) * 7)) + (ry_outer_outer * 7)) + (((int)threadIdx.x) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 98)] = (((((1 &lt;= ((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 35) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 8) % 9))) &amp;&amp; (((((int)threadIdx.x) + 8) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 98) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 8) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 196)] = (((((1 &lt;= ((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 7) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 7) % 9))) &amp;&amp; (((((int)threadIdx.x) + 7) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 196) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 7) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 294)] = (((((1 &lt;= ((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 42) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 6) % 9))) &amp;&amp; (((((int)threadIdx.x) + 6) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 294) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 6) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 392)] = (((((1 &lt;= ((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 14) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 5) % 9))) &amp;&amp; (((((int)threadIdx.x) + 5) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 392) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 5) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 490)] = (((((1 &lt;= ((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 49) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 4) % 9))) &amp;&amp; (((((int)threadIdx.x) + 4) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 490) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 4) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 588)] = (((((1 &lt;= ((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 21) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 3) % 9))) &amp;&amp; (((((int)threadIdx.x) + 3) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 588) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 3) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 686)] = (((((1 &lt;= ((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 56) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 2) % 9))) &amp;&amp; (((((int)threadIdx.x) + 2) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 686) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 2) % 9)) - 8)] : 0.000000e+00f);
+      pad_temp_shared[(((int)threadIdx.x) + 784)] = (((((1 &lt;= ((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer)) &amp;&amp; (((((((int)threadIdx.x) + 28) % 63) / 9) + ry_outer_outer) &lt; 8)) &amp;&amp; (1 &lt;= ((((int)threadIdx.x) + 1) % 9))) &amp;&amp; (((((int)threadIdx.x) + 1) % 9) &lt; 8)) ? data[(((((rc_outer_outer * 3136) + (((((int)threadIdx.x) + 784) / 9) * 7)) + (ry_outer_outer * 7)) + ((((int)threadIdx.x) + 1) % 9)) - 8)] : 0.000000e+00f);
... 4861 lines suppressed ...