code: def tile(cls, op):
      tensor = op.outputs[0]
  
      chunk_length = (
          tensor.extra_params.raw_chunk_size or options.chunk_size
      )
      chunk_length = decide_chunk_sizes(
          tensor.shape, chunk_length, tensor.dtype.itemsize
      )
  
      start, stop, num, endpoint = (
          tensor.op.start,
          tensor.op.stop,
          tensor.op.num,
          tensor.op.endpoint,
      )
      if num > 1:
          step = float(stop - start) / (
              num if not endpoint else num - 1
          )
      else:
          step = 0.0
  
      chunks = []
      chunk_start = start
      nsplit = []
      for i, cs in enumerate(chunk_length[0]):
          chunk_stop = chunk_start + (cs - 1) * step
          chunk_op = op.to_chunk_op(chunk_start, chunk_stop, cs, True)
          chunk_shape = (cs,)
          chunk_idx = (i,)
          chunk = chunk_op.new_chunk(
              None, shape=chunk_shape, index=chunk_idx
          )
          chunks.append(chunk)
          nsplit.append(cs)
          chunk_start = chunk_start + cs * step
  
      new_op = op.copy()
      return new_op.new_tensors(
          op.inputs,
          op.outputs[0].shape,
          chunks=chunks,
          nsplits=(tuple(nsplit),),
      )
  
file_path: mars/mars/tensor/datasource/linspace.py
imports: import numpy
  from ...None import opcodes
  from ...core import ExecutableTuple
  from ...serialization.serializables import Int64Field, BoolField, AnyField
  from ...config import options
  from ..utils import decide_chunk_sizes
  from .core import TensorNoInput
  from ..array_utils import create_array
label_desc: Use image node_id 3 for calling the TensorLinspace obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op