code: def cumsum(
      data: tvm.te.Tensor,
      axis: Optional[int] = None,
      dtype: Optional[int] = None,
      exclusive: Optional[bool] = None,
  ) -> tvm.te.Tensor:
      """Numpy style cumsum op. Return the cumulative sum of the elements along a given axis.
  
      Parameters
      ----------
      data : tvm.te.Tensor
          The input data to the operator.
  
      axis : int, optional
          Axis along which the cumulative sum is computed. The default (None) is to compute
          the cumsum over the flattened array.
  
      dtype : string, optional
          Type of the returned array and of the accumulator in which the elements are summed.
          If dtype is not specified, it defaults to the dtype of data.
  
      exclusive : bool, optional
          If true will return exclusive sum in which the first element is not
          included. In other terms, if true, the j-th output element would be
          the sum of the first (j-1) elements. Otherwise, it would be the sum of
          the first j elements.
  
      Returns
      -------
      result : tvm.te.Tensor
          The result has the same size as data, and the same shape as data if axis is not None.
          If axis is None, the result is a 1-d array.
      """
      return scanop(
          data=data,
          binop=tvm.tir.generic.add,
          identity_value=0,
          axis=axis,
          dtype=dtype,
          exclusive=exclusive,
      )
  
file_path: tvm/python/tvm/topi/cuda/scan.py
imports: from typing import Callable, Optional, Union
  import tvm
  from tvm import te
  from tvm.contrib.thrust import can_use_rocthrust, can_use_thrust
  from ..None import tag
  from ..math import cast, ceil_log2
  from ..transform import expand_dims, reshape, squeeze, transpose
  from ..utils import ceil_div, get_const_int, prod, swap
  from .injective import schedule_injective_from_existing
label_desc: Use image node_id 9 for calling a global function with example usage: cumsum(data, axis, dtype, exclusive) and returns: scanop