code: def execute(cls, ctx, op):
      chunk = op.outputs[0]
      (a,), device_id, xp = as_same_device(
          [ctx[c.key] for c in op.inputs],
          device=op.device,
          ret_extra=True,
      )
  
      with device(device_id):
          if xp is np:
              import scipy.linalg
  
              ctx[chunk.key] = scipy.linalg.cholesky(a, lower=op.lower)
              return
  
          r = xp.linalg.cholesky(a)
          if not chunk.op.lower:
              r = r.T.conj()
  
          ctx[chunk.key] = r
  
imports: import numpy
  from numpy.linalg import LinAlgError
  from ...serialization.serializables import KeyField, BoolField
  from ...None import opcodes
  from ...core import recursive_tile
  from ...utils import has_unknown_shape
  from ..operands import TensorHasInput, TensorOperand, TensorOperandMixin
  from ..datasource import tensor
  from ..core import TensorOrder
  from ..array_utils import as_same_device, device
label_desc: Use image node_id 6 for calling the TensorCholesky obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types