Skip to content

Verbose setting for RewritePass for better logging and debugging #2876

@srikris-sridhar

Description

@srikris-sridhar

Problem: I want a setting to know if a pass is triggered.
Solution: Make a flag in RewritePass to be verbose or not.

Here is a proposal. Is there a batter way?

Change RewritePass:
  class RewritePass(ir.passes.InPlacePass):
      def __init__(
          self,
          rules: Sequence[pattern.RewriteRule] | pattern.RewriteRuleSet,
          /,
          verbose: int = 0,  # ADD THIS
      ) -> None:
          super().__init__()
          if isinstance(rules, Sequence):
              if not rules:
                  raise ValueError("rules must not be empty")
              rules = pattern.RewriteRuleSet(rules)
          assert isinstance(rules, pattern.RewriteRuleSet)
          self.rules: pattern.RewriteRuleSet = rules
          self.verbose = verbose  # ADD THIS

      def call(self, model: ir.Model) -> ir.passes.PassResult:
          count = self.rules.apply_to_model(model, verbose=self.verbose if self.verbose else None)  # CHANGE THIS LINE
          if count:
              print(f"Applied {count} of general pattern rewrite rules.")
          return ir.passes.PassResult(model, bool(count))

  File 2: tetracode/src/www/python/tetrai/compilers/onnx2onnx/optimizer.py

  Add verbose parameter and pass it:
  def optimize_onnx_using_onnx_ir(
      onnx_model: rewriter._ModelProtoOrIr,
      rewrite_rules: Sequence[rewriter.pattern.RewriteRule] | None = None,
      logger: TetraLoggerAdapter = TetraLoggerAdapter(__name__),
      verbose: int = 0,  # ADD THIS
  ) -> rewriter._ModelProtoOrIr:
      ...
      passes = [
          ...
          rewriter.RewritePass(rewrite_rules, verbose=verbose),  # ADD verbose HERE
          ...
      ]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions