code: def reduce_exp(
      acts: torch.Tensor,
      denom,
      rows: int,
      cols: int,
      minus: bool,
      stream,
  ):
      """
      Helper method to call the Warp Reduction Kernel to perform `exp` reduction.
  
      Note:
          Efficient warp occurs at input shapes of 2 ^ K.
  
      References:
          - Warp Primitives
            [https://developer.nvidia.com/blog/using-cuda-warp-level-primitives/]
  
      Args:
          acts: Flatened activation matrix of shape [B * T * U * (V+1)].
          output: Flatened output matrix of shape [B * T * U * (V+1)].
              Data will be overwritten.
          rows: Vocabulary size (including blank token) - V+1.
              Represents the number of threads per block.
          cols: Flattened shape of activation matrix, without vocabulary dimension
              (B * T * U). Represents number of blocks per grid.
          minus: Bool flag whether to add or subtract as reduction.
              If minus is set; calls _reduce_minus, else calls _reduce_rows kernel.
          stream: CUDA Stream.
      """
  
      return ReduceHelper(
          I_opid=I_Op.EXPONENTIAL.value,
          R_opid=R_Op.ADD.value,
          acts=acts,
          output=denom,
          num_rows=rows,
          num_cols=cols,
          minus=minus,
          stream=stream,
      )
  
file_path: espnet/espnet2/asr/transducer/rnnt_multi_blank/utils/cuda_utils/reduce.py
imports: import enum
  import math
  import torch
  from numba import cuda
  from espnet2.asr.transducer.rnnt_multi_blank.utils import global_constants, rnnt_helper
label_desc: Use image node_id 5 for calling a global function with example usage: reduce_exp(acts, denom, rows, cols, minus, stream) and returns: ReduceHelper