code: def get_cumsum_kernel(context, input_dtype, output_dtype):
      from pyopencl.tools import VectorArg
  
      return GenericScanKernel(
          context,
          output_dtype,
          arguments=[
              VectorArg(input_dtype, "input"),
              VectorArg(output_dtype, "output"),
          ],
          input_expr="input[i]",
          scan_expr="a+b",
          neutral="0",
          output_statement="""
              output[i] = item;
              """,
      )
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from typing import Any, Dict, List, Optional, Set, Tuple, Union
  import numpy
  import pyopencl
  import pyopencl.array
  from pyopencl.tools import KernelTemplateBase, DtypedArgument, bitlog2, context_dependent_memoize, dtype_to_ctype, get_arg_list_scalar_arg_dtypes, get_arg_offset_adjuster_code, _process_code_for_macro, _NumpyTypesKeyBuilder
  import pyopencl._mymako
  from pyopencl._cluda import CLUDA_PREAMBLE
  from pytools.persistent_dict import WriteOncePersistentDict
  import logging
label_desc: Use image node_id 3 for calling a global function with example usage: get_cumsum_kernel(context, input_dtype, output_dtype) and returns: GenericScanKernel