code: def schedule_scan(outs):
      """Schedule for scan operator.
  
      Parameters
      ----------
      outs: Array of Tensor
          The computation graph description of scan
          in the format of an array of tensors.
  
      Returns
      -------
      s: Schedule
        The computation schedule for the op.
      """
      outs = [outs] if isinstance(outs, te.tensor.Tensor) else outs
      s = te.create_schedule([x.op for x in outs])
      scheduled_ops = []
  
      def traverse(op):
          if tag.is_injective(op.tag):
              schedule_injective_from_existing(s, op.output(0))
          for tensor in op.input_tensors:
              if (
                  tensor.op.input_tensors
                  and tensor.op not in scheduled_ops
              ):
                  traverse(tensor.op)
          scheduled_ops.append(op)
  
      for out in outs:
          traverse(out.op)
      return s
  
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 7 for calling a global function with example usage: schedule_scan(outs) and returns: s