code: def __call__(
      self,
      x,
      h_trans_flip,
      up,
      down,
      axis,
      x_shape_a,
      h_per_phase,
      padded_len,
      out,
  ):
      kernel_args = (
          x,
          x.shape[1],
          h_trans_flip,
          up,
          down,
          axis,
          x_shape_a,
          h_per_phase,
          padded_len,
          out,
          out.shape[0],
          out.shape[1],
      )
  
      self.kernel(self.grid, self.block, kernel_args)
  
imports: from math import ceil
  import cupy
  import numpy
  from ..utils._caches import _cupy_kernel_cache
  from ..utils.helper_tools import _get_function, _get_max_gdx, _get_max_gdy, _get_tpb_bpg, _print_atts
label_desc: Use image node_id 2 for calling the _cupy_upfirdn2d_wrapper obj's underlying member method code with example usage: obj.__call__(x, h_trans_flip, up, down, axis, x_shape_a, h_per_phase, padded_len, out) without return types