code: def test_fn_attribute():
      # create function that performs add
      a = relay.var("a", shape=(10, 10))
      b = relay.var("b", shape=(10, 10))
      add = relay.add(a, b)
      add_fn = relay.Function([a, b], add)
      add_fn = run_opt_pass(add_fn, relay.transform.InferType())
  
      # create function that performs add with test attribute
      c = relay.var("c", shape=(10, 10))
      d = relay.var("d", shape=(10, 10))
      add_1 = relay.add(c, d)
      add_1_fn = relay.Function([c, d], add_1)
      add_1_fn = add_1_fn.with_attr("TestAttribute", "test")
      add_1_fn = run_opt_pass(add_1_fn, relay.transform.InferType())
  
      assert not consistent_equal(add_1_fn, add_fn)
      assert not consistent_equal(add_fn, add_1_fn)
  
imports: import numpy
  import tvm
  import tvm.testing
  from tvm import relay
  from tvm.relay.testing import run_opt_pass
label_desc: Use image node_id 28 for calling a global function with example usage: test_fn_attribute() without return types