code: def test_subgraph_exe5(sym, subgraph_backend, op_names):
      """Call optimize_for to trigger graph partitioning without infer shapes/types before,
      then _simple_bind and compare results of the partitioned sym and the original sym.
      """
      # _simple_bind
      sym, _, _ = sym
      exe1 = sym._simple_bind(ctx=mx.current_context(), grad_req="null")
      input_names = sym.list_inputs()
      set_random_inputs(exe1, input_names)
      exe1.forward()
  
      # partition before _simple_bind
      check_call(
          _LIB.MXSetSubgraphPropertyOpNamesV2(
              c_str(subgraph_backend),
              mx_uint(len(op_names)),
              c_str_array(op_names),
          )
      )
      part_sym = sym.optimize_for(subgraph_backend)
      check_call(
          _LIB.MXRemoveSubgraphPropertyOpNamesV2(
              c_str(subgraph_backend)
          )
      )
  
      exe2 = part_sym._simple_bind(
          ctx=mx.current_context(), grad_req="null"
      )
      copy_inputs_between_executors(exe1, exe2, input_names)
      exe2.forward()
  
      # compare outputs
      outputs1 = exe1.outputs
      outputs2 = exe2.outputs
      assert len(outputs1) == len(outputs2)
      for i in range(len(outputs1)):
          assert_almost_equal(
              (outputs1[i] - outputs2[i]).abs().sum().asnumpy(),
              onp.zeros(shape=(1,)),
          )
  
imports: import os
  import sys
  import ctypes
  import mxnet
  from mxnet.base import SymbolHandle, check_call, _LIB, mx_uint, c_str_array, c_str, mx_real_t
  from mxnet.symbol import Symbol
  import numpy
  from mxnet.test_utils import assert_almost_equal, environment
  from mxnet import gluon
  from mxnet.gluon import nn
  from mxnet import nd, npx
  import pytest
  import tempfile
label_desc: Use image node_id 16 for calling a global function with example usage: test_subgraph_exe5(sym, subgraph_backend, op_names) without return types