code: def schedule_conv2d_nchw_spatial_pack(cfg, outs):
      """Create schedule for conv2d_nchw"""
      s = te.create_schedule([x.op for x in outs])
  
      def _callback(op):
          # schedule conv2d
          if "spatial_conv2d_output" in op.tag:
              output = op.output(0)
              conv = op.input_tensors[0]
  
              data_vec = conv.op.input_tensors[0]
              data_pad = data_vec.op.input_tensors[0]
              s[data_pad].compute_inline()
  
              kernel_vec = conv.op.input_tensors[1]
              if kernel_vec.op.name == "kernel_vec":
                  kernel = kernel_vec.op.input_tensors[0]
              else:
                  kernel = kernel_vec
              if (
                  isinstance(kernel.op, tvm.te.ComputeOp)
                  and "dilate" in kernel.op.tag
              ):
                  s[kernel].compute_inline()
  
              schedule_conv2d_spatial_pack_nchw(
                  cfg, s, data_vec, kernel_vec, conv, output, outs[0]
              )
  
      traverse_inline(s, outs[0].op, _callback)
      return s
  
imports: from __future__ import absolute_import
  import tvm
  from tvm import te
  from tvm import autotvm
  import tvm.contrib.nnpack
  from ..utils import traverse_inline, get_const_tuple
  from ..None import nn
  from ..nn.utils import get_const_int, get_pad_tuple
  from ..nn.winograd_util import winograd_transform_matrices
  from .arm_utils import get_tiling_B_transformed
  from .conv2d_spatial_pack import conv2d_spatial_pack_nchw, conv2d_spatial_pack_nhwc, schedule_conv2d_spatial_pack_nchw, schedule_conv2d_spatial_pack_nhwc
  from .conv2d_gemm import compute_conv2d_gemm_without_weight_transform, schedule_conv2d_gemm_interleaved, schedule_conv2d_gemm_native
  from .mprofile.dsp.conv2d import conv2d_nhwc_dsp_compute, conv2d_nhwc_dsp_schedule
label_desc: Use image node_id 2 for calling a global function with example usage: schedule_conv2d_nchw_spatial_pack(cfg, outs) and returns: s