code: def launch_kernel(self, df, args, chunks, blkct=None, tpb=None):
      chunks = self.normalize_chunks(len(df), chunks)
      if blkct is None and tpb is None:
          with _CUDFNumbaConfig():
              self.kernel.forall(len(df))(len(df), chunks, *args)
      else:
          assert tpb is not None
          if blkct is None:
              blkct = chunks.size
          with _CUDFNumbaConfig():
              self.kernel[blkct, tpb](len(df), chunks, *args)
  
imports: import functools
  from typing import Any, Dict
  import cupy
  from numba import cuda
  from numba.core.utils import pysignature
  import cudf
  from cudf import _lib
  from cudf.core.buffer import acquire_spill_lock
  from cudf.core.column import column
  from cudf.utils import utils
  from cudf.utils._numba import _CUDFNumbaConfig
  from cudf.utils.docutils import docfmt_partial
label_desc: Use image node_id 2 for calling the ApplyChunksCompiler obj's underlying member method code with example usage: obj.launch_kernel(df, args, chunks, blkct, tpb) without return types