code: def execute(cls, ctx, op):
      a = ctx[op.inputs[0].key]
      v = ctx[op.inputs[1].key] if len(op.inputs) == 2 else op.v
  
      data = []
      if isinstance(a, tuple):
          data.extend(a)
      else:
          data.append(a)
      if len(op.inputs) == 2:
          data.append(v)
  
      data, device_id, xp = as_same_device(
          data, device=op.device, ret_extra=True
      )
  
      if isinstance(a, tuple):
          a = data[:2]
      else:
          a = data[0]
      if len(op.inputs) == 2:
          v = data[-1]
  
      with device(device_id):
          if op.stage is None:
              ret = cls._execute_without_stage(xp, a, v, op)
          else:
              assert op.stage == OperandStage.map
              ret = cls._execute_map(xp, a, v, op)
          ctx[op.outputs[0].key] = ret
  
imports: import itertools
  from typing import Any, List, Tuple, Type
  import numpy
  from ...None import opcodes
  from ...core import TILEABLE_TYPE
  from ...core.operand import OperandStage
  from ...serialization.serializables import StringField, AnyField, Int64Field, Int32Field
  from ...typing import TileableType, ChunkType
  from ...config import options
  from ...utils import has_unknown_shape
  from ..operands import TensorOperand, TensorOperandMixin
  from ..core import TENSOR_TYPE, TensorOrder
  from ..datasource.array import tensor
  from ..array_utils import as_same_device, device
label_desc: Use image node_id 9 for calling the TensorSearchsorted obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types