code: def tile(cls, op):
      a = op.a
      outs = op.outputs
  
      yield a.chunks
  
      chunk_op = TensorGetShape(
          pure_depends=[True] * len(a.chunks), ndim=op.ndim
      )
      chunk_kws = []
      for out in outs:
          params = out.params
          params["index"] = ()
          chunk_kws.append(params)
      chunks = chunk_op.new_chunks(a.chunks, kws=chunk_kws)
  
      kws = []
      for c, out in zip(chunks, outs):
          params = out.params
          params["chunks"] = [c]
          params["nsplits"] = ()
          kws.append(params)
      new_op = op.copy()
      return new_op.new_tensors(
          op.inputs, kws=kws, output_limit=op.output_limit
      )
  
file_path: mars/mars/tensor/base/shape.py
imports: import numpy
  from ...None import opcodes
  from ...core import ExecutableTuple
  from ...serialization.serializables import KeyField, Int32Field
  from ...utils import calc_nsplits
  from ..core import TensorOrder
  from ..datasource import tensor
  from ..operands import TensorOperand, TensorOperandMixin
label_desc: Use image node_id 7 for calling the TensorGetShape obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op