code: def test_many_different_parallel_calls():
      """
      Test a graph that calls many different functions in parallel.
  
                      input
              /         |         \
      prim_func_1  prim_func_2  prim_func_3
             \         |         /
                   prim_func_4
      """
  
      def get_inner_func_1():
          x = relay.var("x", shape=(1, 4, 5, 6), dtype="int8")
          x = relay.tanh(x)
          x = _create_primitive_function(x)
          return x
  
      def get_inner_func_2():
          x = relay.var("x", shape=(1, 4, 5, 6), dtype="int8")
          x = relay.nn.max_pool2d(x, pool_size=(1, 1), layout="NHWC")
          x = _create_primitive_function(x)
          return x
  
      def get_inner_func_3():
          x = relay.var("x", shape=(1, 4, 5, 6), dtype="int8")
          x = relay.abs(x)
          x = relay.nn.relu(x)
          x = relay.exp(x)
          x = _create_primitive_function(x)
          return x
  
      def get_inner_func_4():
          x = relay.var("x", shape=(1, 4, 5, 6), dtype="int8")
          y = relay.var("y", shape=(1, 4, 5, 6), dtype="int8")
          z = relay.var("z", shape=(1, 4, 5, 6), dtype="int8")
          out = relay.concatenate([x, y, z], axis=3)
          out = _create_primitive_function(out)
          return out
  
      ifm = relay.var("input", shape=(1, 4, 5, 6), dtype="int8")
      x = relay.Call(get_inner_func_1(), [ifm])
      y = relay.Call(get_inner_func_2(), [ifm])
      z = relay.Call(get_inner_func_3(), [ifm])
      a = relay.Call(get_inner_func_4(), [x, y, z])
      mod = tvm.IRModule.from_expr(a)
  
      expected_annotations = [
          [(1 * 4 * 5 * 6) + (1 * 4 * 5 * 6)],
          # output from prim_func_1 is also still alive
          [(1 * 4 * 5 * 6) + (1 * 4 * 5 * 6) + (1 * 4 * 5 * 6)],
          # outputs from prim_func_1 and prim_func_2 are also still alive
          [
              (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 6)
          ],
          [
              (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 6)
              + (1 * 4 * 5 * 18)
          ],
      ]
      expected_io_annotation = (1 * 4 * 5 * 6) + (1 * 4 * 5 * 18)
      _check_used_memory_annotations(
          mod, expected_annotations, expected_io_annotation
      )
  
imports: import pytest
  import tvm
  from tvm import relay
  from tvm.relay.expr_functor import ExprVisitor
label_desc: Use image node_id 8 for calling a global function with example usage: test_many_different_parallel_calls() and returns: x, x, x, out