code: def total_cascader(stripe_size):
      """A demo/test cascader which tries to cascade every op in the graph together.
  
      The desired output stride size should be specified. Note this only works
      for single output graphs.
  
      Parameters
      ----------
      stripe_size : tuple
          The output stripe size.
  
      Returns
      -------
      func : callable
          The cascading function.
  
      """
  
      def _cascader(cached_func, const_dict, sch):
          scheduled = set()
  
          def _visit(tensor, stage, ax):
              if tensor not in scheduled and isinstance(
                  tensor.op, tvm.te.ComputeOp
              ):
                  sch[tensor].compute_at(stage, ax)
                  scheduled.add(tensor)
                  for input_tensor in tensor.op.input_tensors:
                      _visit(input_tensor, stage, ax)
  
          assert len(cached_func.outputs) == 1
          out = cached_func.outputs[0]
          oi, _ = tile_nd(sch, out, stripe_size)
          for ax in oi:
              sch[out].unroll(ax)
          for input_tensor in out.op.input_tensors:
              _visit(input_tensor, sch[out], oi[-1])
  
      return _cascader
  
file_path: tvm/python/tvm/relay/backend/contrib/ethosu/tir/scheduler.py
imports: import tvm
  from tvm.contrib.ethosu.cascader import Propagator
label_desc: Use image node_id 3 for calling a global function with example usage: total_cascader(stripe_size) and returns: _cascader