code: def group_corr(context, builder, sig, args):
      """
      Instruction boilerplate used for calling a groupby correlation
      """
      lhs_grp = cgutils.create_struct_proxy(sig.args[0])(
          context, builder, value=args[0]
      )
      rhs_grp = cgutils.create_struct_proxy(sig.args[1])(
          context, builder, value=args[1]
      )
  
      device_func = call_cuda_functions["corr"][
          (
              sig.return_type,
              sig.args[0].group_scalar_type,
              sig.args[1].group_scalar_type,
          )
      ]
      result = context.compile_internal(
          builder,
          device_func,
          nb_signature(
              types.float64,
              types.CPointer(
                  sig.args[0].group_scalar_type
              ),  # this group calls corr
              types.CPointer(
                  sig.args[1].group_scalar_type
              ),  # this group is passed
              group_size_type,
          ),
          (
              lhs_grp.group_data,
              rhs_grp.group_data,
              lhs_grp.size,
          ),
      )
      return result
  
file_path: cudf/python/cudf/cudf/core/udf/groupby_lowering.py
imports: from functools import partial
  from numba import types
  from numba.core import cgutils
  from numba.core.extending import lower_builtin
  from numba.core.typing import signature
  from numba.cuda.cudaimpl import lower
  from cudf.core.udf.groupby_typing import SUPPORTED_GROUPBY_NUMBA_TYPES, Group, GroupType, call_cuda_functions, group_size_type, index_default_type
label_desc: Use image node_id 2 for calling a global function with example usage: group_corr(context, builder, sig, args) and returns: result