code: def execute(cls, ctx, op: "TensorTreeAdd"):
      inputs, device_id, xp = as_same_device(
          [ctx[c.key] for c in op.inputs],
          device=op.device,
          ret_extra=True,
      )
      if op.ignore_empty_input:
          inputs = [
              inp
              for inp in inputs
              if not hasattr(inp, "size") or inp.size > 0
          ]
  
      with device(device_id):
          ctx[op.outputs[0].key] = reduce(xp.add, inputs)
  
file_path: mars/mars/tensor/arithmetic/add.py
imports: import numpy
  from functools import reduce
  from ...None import opcodes
  from ...serialization.serializables import BoolField
  from ..array_utils import device, as_same_device
  from ..datasource import scalar
  from ..utils import infer_dtype
  from .core import TensorBinOp, TensorMultiOp
  from .utils import arithmetic_operand, tree_op_estimate_size, TreeReductionBuilder
label_desc: Use image node_id 2 for calling the TensorTreeAdd obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types