code: def _get_conv3d_workload(
      data,
      kernel,
      stride,
      padding,
      groups,
      out_dtype,
      data_layout="NCHW",
  ):
      """Get the workload structure."""
      if data_layout == "NCDHW":
          _, CI, ID, IH, IW = get_const_tuple(data.shape)
          CO, CIG, KD, KH, KW = get_const_tuple(kernel.shape)
      elif data_layout == "NDHWC":
          _, ID, IH, IW, CI = get_const_tuple(data.shape)
          KD, KH, KW, CIG, CO = get_const_tuple(kernel.shape)
      else:
          raise ValueError(f"not support this layout {data_layout} yet")
  
      (
          pad_front,
          pad_top,
          pad_left,
          pad_back,
          pad_down,
          pad_right,
      ) = get_pad_tuple3d(
          padding,
          (get_const_int(KD), get_const_int(KH), get_const_int(KW)),
      )
      DPAD = pad_front + pad_back
      HPAD = pad_top + pad_down
      WPAD = pad_left + pad_right
      if isinstance(stride, (tuple, list)):
          DSTR, HSTR, WSTR = stride
      else:
          DSTR, HSTR, WSTR = stride, stride, stride
      assert (data.dtype == kernel.dtype) or (
          data.dtype == "uint8" and kernel.dtype == "int8"
      ), f"Do not support inputs with different data types now. {data.dtype} vs. {kernel.dtype}"
      return Workload3D(
          data.dtype,
          out_dtype,
          ID,
          IH,
          IW,
          CI,
          groups,
          CO,
          KD,
          KH,
          KW,
          DPAD,
          HPAD,
          WPAD,
          DSTR,
          HSTR,
          WSTR,
      )
  
file_path: tvm/python/tvm/topi/x86/conv3d.py
imports: from collections import namedtuple
  import tvm
  from tvm import autotvm, te
  from tvm.autotvm.task.space import OtherOptionEntity, SplitEntity
  from tvm.target.x86 import get_simd_32bit_lanes
  from ..nn.pad import pad
  from ..nn.utils import get_pad_tuple3d, infer_pad3d
  from ..utils import get_const_int, get_const_tuple, simplify, traverse_inline
label_desc: Use image node_id 9 for calling a global function with example usage: _get_conv3d_workload(data, kernel, stride, padding, groups, out_dtype, data_layout) and returns: Workload3D