code: def tril(a):
      if a.ndim != 2:
          raise Exception(
              "Input must have 2 dimensions, but a.ndim is {}.".format(
                  a.ndim
              )
          )
      result = DistArray(a.shape)
      for i, j in np.ndindex(*result.num_blocks):
          if i > j:
              result.object_refs[i, j] = ra.copy.remote(
                  a.object_refs[i, j]
              )
          elif i == j:
              result.object_refs[i, j] = ra.tril.remote(
                  a.object_refs[i, j]
              )
          else:
              result.object_refs[i, j] = ra.zeros_like.remote(
                  a.object_refs[i, j]
              )
      return result
  
imports: import numpy
  import ray
  import ray.experimental.array.remote
label_desc: Use image node_id 8 for calling a global function with example usage: tril(a) and returns: result