code: def tile(cls, op):
      from ..datasource import arange
      from ..indexing import unravel_index
      from ..reshape.reshape import TensorReshape
  
      in_tensor = op.input
      out_tensor = op.outputs[0]
  
      if has_unknown_shape(in_tensor):
          yield
  
      flattened = yield from recursive_tile(ravel(in_tensor))
      indices = arange(
          flattened.size, dtype=np.intp, chunks=flattened.nsplits
      )
      indices = indices[flattened]
      dim_indices = unravel_index(indices, in_tensor.shape)
      dim_indices = yield from recursive_tile(*dim_indices)
  
      out_chunk_shape = dim_indices[0].chunk_shape + (in_tensor.ndim,)
      nsplits = dim_indices[0].nsplits + ((1,) * in_tensor.ndim,)
      out_chunks = []
      for out_index in itertools.product(
          *(map(range, out_chunk_shape))
      ):
          dim_ind_chunk = dim_indices[out_index[1]].chunks[out_index[0]]
          chunk_shape = dim_ind_chunk.shape + (1,)
          chunk_op = TensorReshape(
              newshape=(-1, 1), dtype=dim_ind_chunk.dtype
          )
          out_chunk = chunk_op.new_chunk(
              [dim_ind_chunk],
              shape=chunk_shape,
              index=out_index,
              order=out_tensor.order,
          )
          out_chunks.append(out_chunk)
  
      new_op = op.copy()
      return new_op.new_tensors(
          op.inputs,
          out_tensor.shape,
          order=out_tensor.order,
          chunks=out_chunks,
          nsplits=nsplits,
      )
  
file_path: mars/mars/tensor/base/argwhere.py
imports: import itertools
  import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import KeyField
  from ...utils import has_unknown_shape
  from ..operands import TensorHasInput, TensorOperandMixin
  from ..datasource import tensor
  from .ravel import ravel
label_desc: Use image node_id 3 for calling the TensorArgwhere obj's underlying member method code with example usage: obj.tile(cls, op) and returns: new_op