tvm_tirx.ir.transform.Sequential

tvm_tirx.ir.transform.Sequential#

class tvm_tirx.ir.transform.Sequential(passes=None, opt_level=0, name='sequential')#

Bases: Pass

A pass that works on a sequence of pass objects. Multiple passes can be executed sequentially using this class.

Passes run in the given order, subject to the optimization level and the required/disabled pass controls in PassContext. A child pass runs when its info.opt_level is at most the context’s opt_level or its name is in required_pass, and never when its name is in disabled_pass. A Sequential is itself a pass, so it can be nested in another Sequential.

Parameters:
  • passes (Optional[List[Pass]]) – A sequence of passes candidate for optimization.

  • opt_level (Optional[int]) – The optimization level of this sequential pass. The opt_level of a default sequential pass is set to 0. Child passes use the active PassContext’s optimization level.

  • name (Optional[str]) – The name of the sequential pass.

Examples

from tvm_tirx import tirx
from tvm_tirx.ir.transform import PassContext, Sequential

@tirx.transform.function_pass(opt_level=3)
def expensive(func, mod, ctx):
    return func


pipeline = Sequential([tirx.transform.StmtSimplify(), expensive])
with PassContext(opt_level=2):
    after = pipeline(mod)  # skips expensive, whose opt_level is 3
with PassContext(opt_level=2, required_pass=["expensive"]):
    after = pipeline(mod)  # runs both passes
property pass_info#
property passes#