code: def _get_backend_kernel(
      dtype,
      grid,
      block,
      k_type,
  ):
      kernel = _cupy_kernel_cache[(str(dtype), k_type)]
      if kernel:
          if k_type == "convolve" or k_type == "correlate":
              return _cupy_convolve_wrapper(grid, block, kernel)
          elif k_type == "convolve2D" or k_type == "correlate2D":
              return _cupy_convolve_2d_wrapper(grid, block, kernel)
          elif k_type == "convolve1D2O":
              return _cupy_convolve_1d2o_wrapper(grid, block, kernel)
          elif k_type == "convolve1D3O":
              return _cupy_convolve_1d3o_wrapper(grid, block, kernel)
          else:
              raise NotImplementedError(
                  "No CuPY kernel found for k_type {}, datatype {}".format(
                      k_type, dtype
                  )
              )
      else:
          raise ValueError(
              "Kernel {} not found in _cupy_kernel_cache".format(k_type)
          )
  
imports: import cupy
  import numpy
  from ..utils._caches import _cupy_kernel_cache
  from ..utils.helper_tools import _get_function, _get_tpb_bpg, _print_atts
  from .convolution_utils import CIRCULAR, FULL, PAD, REFLECT, SAME, VALID, _bvalfromboundary, _iDivUp, _valfrommode
label_desc: Use image node_id 2 for calling a global function with example usage: _get_backend_kernel(dtype, grid, block, k_type) and returns: _cupy_convolve_wrapper, _cupy_convolve_2d_wrapper, _cupy_convolve_1d2o_wrapper, _cupy_convolve_1d3o_wrapper