class_docstr: Tuner which uses dynamic programming to solve MDP problem.
  
  Note: currently dynamic programming is used to solve this MDP problem. However,
  this problem is intrinsically non-polynomial. DP can't apply for more complicated
  models, such as networks with many element-wise sum operators. In this case, switch
  to heuristic algorithm such as PBQP tuner.
class_docstr_tok: ["Tuner","which","uses","dynamic","programming","to","solve","MDP","problem",".","Note",":","currently","dynamic","programming","is","used","to","solve","this","MDP","problem",".","However",",","this","problem","is","intrinsically","non-polynomial",".","DP","ca","n't","apply","for","more","complicated","models",",","such","as","networks","with","many","element-wise","sum","operators",".","In","this","case",",","switch","to","heuristic","algorithm","such","as","PBQP","tuner","."]
docstr: Forward pass in DP to generate states for all stages.
docstr_tok: ["Forward","pass","in","DP","to","generate","states","for","all","stages","."]
code: def _forward(self):
      """Forward pass in DP to generate states for all stages."""
      self._logger.info("Start forward pass...")
      for node_idx in sorted(self._in_nodes_dict.keys()):
          stage = DPStage(
              idx=node_idx,
              target_ops=self._target_ops,
              **self._global_data_dict,
          )
          self._check_num_states(stage.full_states.size)
          self._stage_dict[node_idx] = stage
      self._logger.info("Finished forward pass.")
  
file_path: tvm/python/tvm/autotvm/graph_tuner/dynamic_programming_tuner.py
imports: import sys
  import numpy
  from ._base import MAX_OUTPUT_NODES
  from .base_graph_tuner import BaseGraphTuner
  from .dynamic_programming_stage import DPStage
  from .utils import has_multiple_inputs, is_boundary_node
label_desc: Use image node_id 3 for calling the DPTuner obj's underlying member method code with example usage: obj._forward() without return types