class_docstr: The compiler from Relay to the TVM runtime system.
docstr: Compile a single function into a graph.
  
  Parameters
  ----------
  ir_module: tvm.ir.Module
      The module to compile
  func: tvm.relay.Expr
      The function to compile.
  
  Returns
  -------
  graph_json : str
      The graph json that can be consumed by runtime.
  mod : IRModule or Dict[Target, IRModule]
      The lowered functions.
  params : Dict[str, tvm.nd.NDArray]
      Additional constant parameters.
code: def codegen(self, ir_module, func):
      """Compile a single function into a graph.
  
      Parameters
      ----------
      ir_module: tvm.ir.Module
          The module to compile
      func: tvm.relay.Expr
          The function to compile.
  
      Returns
      -------
      graph_json : str
          The graph json that can be consumed by runtime.
      mod : IRModule or Dict[Target, IRModule]
          The lowered functions.
      params : Dict[str, tvm.nd.NDArray]
          Additional constant parameters.
      """
      default_mod_name = mangle_module_name("default")
      self._codegen(ir_module, func, default_mod_name)
      graph_json = self._get_graph_json()
      lowered_func = self._get_irmodule()
      param_names = self._list_params_name()
      params = {}
      for key in param_names:
          arr = self._get_param_by_name(key)
          param = empty(arr.shape, dtype=arr.dtype, device=arr.device)
          arr.copyto(param)
          params[key] = param
      return graph_json, lowered_func, params
  
file_path: tvm/python/tvm/relay/backend/graph_executor_codegen.py
imports: from tvm.runtime.ndarray import empty
  from tvm.relay import _build_module
  from tvm.target import Target
  from .utils import mangle_module_name
label_desc: Use image node_id 3 for calling the GraphExecutorCodegen obj's underlying member method code with example usage: obj.codegen(ir_module, func) and returns: graph_json,  lowered_func,  params