code: def test(backend):
      args = {"a": mx.nd.ones((3, 2)), "b": mx.nd.ones((3, 2))}
      ###############################################
      # Test with subgraph not consuming params
      ###############################################
      # execute in MXNet
      print("-------------------------------")
      print("Testing regular Gluon execution")
      inputs = [a, b]
      sym_block = nn.SymbolBlock(sym, inputs)
      sym_block.initialize()
      out = sym_block(mx.nd.ones((3, 2)), mx.nd.ones((3, 2)))
      print(out)
  
      # Gluon Hybridize partitioning with shapes/types without inference
      print("-------------------------------")
      print(
          f"Testing {backend} Gluon Hybridize partitioning with shapes/types without inference"
      )
      inputs = [a, b]
      sym_block2 = nn.SymbolBlock(sym, inputs)
      sym_block2.initialize()
      sym_block2.optimize_for(
          mx.nd.ones((3, 2)), mx.nd.ones((3, 2)), backend=backend
      )
      sym_block2.export("partitioned")
  
      # Test with additional input to subgraph op
      print("-------------------------------")
      print(
          f"Testing {backend} Gluon Hybridize partitioning with extra input"
      )
      sym_block2.optimize_for(
          mx.nd.ones((3, 2)), mx.nd.ones((3, 2)), backend="addInputPass"
      )
      out3 = sym_block2(mx.nd.ones((3, 2)), mx.nd.ones((3, 2)))
      print(out3)
  
      ###############################################
      # Test with subgraph directly consuming params
      ###############################################
      args = {"a": mx.nd.ones((3, 2))}
      # execute in MXNet
      print("-------------------------------")
      print("Testing regular MXNet execution")
      inputs = [a]
      sym2_block = nn.SymbolBlock(sym2, inputs)
      sym2_block.initialize()
      out5 = sym2_block(mx.nd.ones((3, 2)))
      print(out5)
  
      # Gluon optimize_for partitioning with shapes/types
      print("-------------------------------")
      print(
          f"Testing {backend} Gluon optimize_for partitioning with shapes/types"
      )
      inputs = [a]
      sym2_block = nn.SymbolBlock(sym2, inputs)
      sym2_block.initialize()
      sym2_block.optimize_for(mx.nd.ones((3, 2)), backend=backend)
      out8 = sym2_block(mx.nd.ones((3, 2)))
      print(out8)
  
imports: import os, ctypes
  import mxnet
  from mxnet.gluon import nn
  from mxnet import nd
  from mxnet.base import _LIB, check_call, mx_uint, c_str, c_str_array, SymbolHandle
label_desc: Use image node_id 1 for calling a global function with example usage: test(backend) without return types