code: def do_concat_test(shapes, t_shape, dtype, axis, dev, target):
      varsToConcat = []
      inputData = []
      pos = 0
      for s in shapes:
          varsToConcat.append(relay.var("x{}".format(pos), shape=s))
          inputData.append(np.random.rand(*s).astype(dtype))
          pos += 1
      t = relay.var("z", shape=t_shape, dtype=dtype)
      z = relay.concatenate(varsToConcat, axis=axis)
      z = relay.add(z, t)
      params = varsToConcat
      params.append(t)
      func = relay.Function(params, z)
      t_data = np.random.uniform(low=-10, high=10, size=t_shape).astype(
          dtype
      )
      ref_res = np.concatenate((tuple(inputData)), axis=axis) + t_data
      mod = tvm.IRModule.from_expr(func)
  
      executor = relay.create_executor(
          "graph", mod=mod, device=dev, target=target
      )
      op_res1 = executor.evaluate()(*inputData, t_data)
  
      tvm.testing.assert_allclose(
          op_res1.numpy(), ref_res, rtol=0.000001
      )
      op_res2 = relay.create_executor(
          "debug", device=dev, target=target
      ).evaluate(func)(*inputData, t_data)
      tvm.testing.assert_allclose(
          op_res2.numpy(), ref_res, rtol=0.000001
      )
  
imports: import numpy
  import pytest
  import tvm
  from tvm import te
  import scipy
  from tvm import relay
  import pytest
  from tvm.relay.testing import run_infer_type
  import tvm.topi.testing
  from tvm.contrib.nvcc import have_fp16
  import tvm.testing
  from tvm.topi.utils import get_const_tuple
label_desc: Use image node_id 14 for calling a global function with example usage: do_concat_test(shapes, t_shape, dtype, axis, dev, target) without return types