Skip to content

Verbose setting for RewritePass for better logging and debugging #2876

Description

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
          ...
      ]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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