tvm.relay.dataflow_pattern#

The Relay Pattern Language and tooling.

Classes:

AltPattern(left, right)

Create a Pattern that can match one of two conditions

AttrPattern(pattern, attrs)

Get match an expression with a certain attributes.

CallPattern(op, args)

A pattern matching a function call node in Relay.

ConstantPattern()

A pattern matching a Relay Constant.

DFPattern()

Base class of all Patterns.

DFPatternCallback([require_type, rewrite_once])

A Callback for Pattern Rewriting.

DataTypePattern(pattern, dtype)

A pattern that matches another pattern with certain data type

DominatorPattern(parent, path, child)

Match a domination graph.

Expr

RelayExpr 的别名

ExprPattern(expr)

A pattern which matches a constant expression.

FunctionPattern(params, body)

A pattern matching a function node in Relay.

IfPattern(cond, true_branch, false_branch)

A patern matching a Relay If.

LetPattern(var, value, body)

A patern matching a Relay Let.

ShapePattern(pattern, shape)

A pattern that matches another pattern with a certain tensor shape

TupleGetItemPattern(tuple_value[, index])

Get index-th item from a TuplePattern.

TuplePattern(fields)

A patern matching a Relay Tuple.

TypePattern(pattern, ttype)

A pattern that matches another pattern with a certain type annotation.

VarPattern([name_hint])

A local variable in Relay.

WildcardPattern()

A pattern which matches anything.

_DFPatternCallback(pattern, callback, ...)

C++ implemenation

Functions:

astext(obj[, show_meta_data, annotate])

Get the text format of the expression.

dominates(parent, path, child)

Syntatic sugar for creating an Dominator pattern

get(op_name)

Get the Op for a given name

has_attr(attrs[, pattern])

Syntatic sugar for creating an AttrPattern

has_dtype(dtype[, pattern])

Syntatic sugar for creating a DataTypePattern

has_shape(shape[, pattern])

Syntatic sugar for creating a ShapePattern

has_type(ttype[, pattern])

Syntatic sugar for creating a TypePattern

is_constant()

Syntatic sugar for creating a ConstantPattern.

is_expr(expr)

Syntatic sugar for creating an ExprPattern.

is_if(cond, true_branch, false_branch)

Syntatic sugar for creating an IfPattern.

is_let(var, value, body)

Syntatic sugar for creating a LetPattern.

is_op(op_name)

Syntatic sugar for creating an operator ExprPattern.

is_tuple(fields)

Syntatic sugar for creating an ExprPattern.

is_tuple_get_item(tuple_value[, index])

Syntatic sugar for creating an ExprPattern.

is_var([name])

Syntatic sugar for creating an optionally named VarPattern.

make_node(type_key, **kwargs)

Make a new IR node by its type key and fields

match(pattern, expr)

Match a pattern to an expression

partition(pattern, expr[, attrs, check])

Parition the expression into a series of functions that match the pattern

pretty_print(obj)

Pretty print the object.

register_df_node([type_key])

Register a Relay node type.

rewrite(callbacks, expr[, mod])

Rewrite expression with the given callbacks.

wildcard()

Syntatic sugar for creating a WildcardPattern.

class tvm.relay.dataflow_pattern.AltPattern(left, right)[源代码]#

Create a Pattern that can match one of two conditions

Parameters#

left: tvm.relay.dataflow_pattern.DFPattern

One possible matching pattern.

right: tvm.relay.dataflow_pattern.DFPattern

One possible matching pattern.

参数:
class tvm.relay.dataflow_pattern.AttrPattern(pattern, attrs)[源代码]#

Get match an expression with a certain attributes. Currently only supports Op Attributes, not call Attributes.

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The input pattern.

attrs: tvm.ir.attrs.Attrs

The attributes to match.

参数:
class tvm.relay.dataflow_pattern.CallPattern(op, args)[源代码]#

A pattern matching a function call node in Relay.

Parameters#

op: relay.dataflow_pattern.DFPattern

The operation to be called.

args: List[relay.dataflow_pattern.DFPattern]

The arguments to the call or None to match any arguments.

参数:
class tvm.relay.dataflow_pattern.ConstantPattern[源代码]#

A pattern matching a Relay Constant.

class tvm.relay.dataflow_pattern.DFPattern[源代码]#

Base class of all Patterns.

Methods:

astext([show_meta_data, annotate])

Get the text format of the expression.

dominates(parent[, path])

Create a dominator for this pattern.

has_attr(attrs)

Add an attribute constraint to this pattern

has_dtype(dtype)

Add a type constraint to this pattern

has_shape(shape)

Add a type constraint to this pattern

has_type(ttype)

Add a type constraint to this pattern

match(expr)

Match this pattern to an expression

optional(option_constructor)

Create a optional user of this pattern.

partition(expr[, attrs, check])

Partition the expression into functions defined by this pattern

astext(show_meta_data=True, annotate=None)[源代码]#

Get the text format of the expression.

Parameters#

show_meta_databool

Whether to include meta data section in the text if there is meta data.

annotate: Optional[Object->str]

Optionally annotate function to provide additional information in the comment block.

Returns#

textstr

The text format of the expression.

Notes#

The meta data section is necessary to fully parse the text format. However, it can contain dumps that are big (e.g constant weights), so it can be helpful to skip printing the meta data section.

dominates(parent, path=None)[源代码]#

Create a dominator for this pattern.

Parameters#

parent: tvm.relay.dataflow_pattern.DFPattern

The parent pattern this pattern dominates.

path: tvm.relay.dataflow_pattern.DFPattern

The fuzzy path pattern.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting DominatorPattern.

参数:
has_attr(attrs)[源代码]#

Add an attribute constraint to this pattern

Parameters#

attrs: Dict[str, Object]

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting AttrPattern

参数:

attrs (Dict[str, Object])

has_dtype(dtype)[源代码]#

Add a type constraint to this pattern

Parameters#

dtype: str

The dtype to match

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting DataTypePattern

参数:

dtype (str)

has_shape(shape)[源代码]#

Add a type constraint to this pattern

Parameters#

shape: List[tvm.ir.PrimExpr]

The shape to match

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting ShapePattern

参数:

shape (List[PrimExpr])

has_type(ttype)[源代码]#

Add a type constraint to this pattern

Parameters#

ttype: tvm.ir.type.Type

The type to match

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting TypePattern

参数:

ttype (Type)

match(expr)[源代码]#

Match this pattern to an expression

Parameters#

exprtvm.relay.Expr

The expression to match.

Returns#

result: bool

Whether or not the expression matches the pattern

参数:

expr (RelayExpr)

返回类型:

bool

optional(option_constructor)[源代码]#

Create a optional user of this pattern.

Parameters#

option_constructor: function

A function that takes a single Pattern parameter and returns a constructed pattern matching the option

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting Pattern

参数:

option_constructor (Callable[[DFPattern], DFPattern])

partition(expr, attrs=None, check=<function DFPattern.<lambda>>)[源代码]#

Partition the expression into functions defined by this pattern

Parameters#

exprtvm.relay.Expr

The expression to match.

attrsOptional[Dict[str, Object]]

A dictionary of Attribute name/values to add to the paritioned function

checkCallable[[Expr], bool]

A function to perform more complicated checks on the matched expression. Returns true if partitioning should proceed, false otherwise.

Returns#

resulttvm.relay.Expr

The Expression with matched subgraphs replaced by function calls to that subgraph

参数:
返回类型:

RelayExpr

class tvm.relay.dataflow_pattern.DFPatternCallback(require_type=False, rewrite_once=False)[源代码]#

A Callback for Pattern Rewriting.

When rewrite is called on this DFPatternCallback, the backend will find matches for the pattern, call the callback function, and replace the matched expression with whatever the callback returns.

Users are expect to inherit from this class and provide a “self.pattern” to match

Parameters#

require_type: bool

Whether InferType is required to be run before the callback.

rewrite_once: bool

If True, run the callback only once.

Methods:

callback(pre, post, node_map)

Callback function to use when we found a match to the pattern

rewrite(expr)

Rewrite expression with this callback

callback(pre, post, node_map)[源代码]#

Callback function to use when we found a match to the pattern

Parameters#

pretvm.relay.Expr

The matching expression from the original graph.

posttvm.relay.Expr

The matching expression with rewritten inputs

node_maptvm.ir.container.Map[DFPattern, List[Expr]]

The map between patterns and matched expressions

Returns#

resulttvm.relay.Expr

The Expression with matched subgraph rewritten by the callback

参数:
返回类型:

RelayExpr

rewrite(expr)[源代码]#

Rewrite expression with this callback

Parameters#

exprtvm.relay.Expr

The expression to rewrite.

Returns#

resulttvm.relay.Expr

The Expression with matched subgraphs rewritten by the callbacks.

参数:

expr (RelayExpr)

返回类型:

RelayExpr

class tvm.relay.dataflow_pattern.DataTypePattern(pattern, dtype)[源代码]#

A pattern that matches another pattern with certain data type

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The input pattern that needs type annotation.

dtype: str

The dtype to match.

参数:
class tvm.relay.dataflow_pattern.DominatorPattern(parent, path, child)[源代码]#

Match a domination graph.

Parameters#

parent: tvm.relay.dataflow_pattern.DFPattern

The parent, i.e., the single node which produces something, later aggregated by the child.

path: tvm.relay.dataflow_pattern.DFPattern

The fuzzy path pattern between parent and child, typically matches elementwise ops.

child: tvm.relay.dataflow_pattern.DFPattern

The last node in the domination which is the end user for all nodes in the path and the parent.

参数:
tvm.relay.dataflow_pattern.Expr#

RelayExpr 的别名 Attributes:

checked_type

Get the checked type of tvm.relay.Expr.

struct_info

Get the struct info field

class tvm.relay.dataflow_pattern.ExprPattern(expr)[源代码]#

A pattern which matches a constant expression.

Parameters#

exprtvm.relay.Expr

The expression to match.

参数:

expr (RelayExpr)

class tvm.relay.dataflow_pattern.FunctionPattern(params, body)[源代码]#

A pattern matching a function node in Relay.

Parameters#

params: List[relay.dataflow_pattern.DFPattern]

The parameters to the Function or None to match any parameters.

body: relay.dataflow_pattern.DFPattern

The body fo the Function

参数:
class tvm.relay.dataflow_pattern.IfPattern(cond, true_branch, false_branch)[源代码]#

A patern matching a Relay If.

Parameters#

cond: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the condition of If.

true_branch: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the true branch of If.

false_branch: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the false branch of If.

参数:
class tvm.relay.dataflow_pattern.LetPattern(var, value, body)[源代码]#

A patern matching a Relay Let.

Parameters#

var: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the variable of Let.

value: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the value of Let.

body: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the body where the binding is in effect.

参数:
class tvm.relay.dataflow_pattern.ShapePattern(pattern, shape)[源代码]#

A pattern that matches another pattern with a certain tensor shape

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The input pattern that needs type annotation.

shape: List[tvm.ir.PrimExpr]

The shape to match.

参数:
class tvm.relay.dataflow_pattern.TupleGetItemPattern(tuple_value, index=None)[源代码]#

Get index-th item from a TuplePattern.

Parameters#

tuple_value: tvm.relay.dataflow_pattern.DFPattern

The input tuple expression.

index: Optional[int]

The index to match; Default (None) to match a TupleGetItem with any index.

参数:
class tvm.relay.dataflow_pattern.TuplePattern(fields)[源代码]#

A patern matching a Relay Tuple.

Parameters#

fieldsArray[tvm.relay.dataflow_pattern.DFPattern]

The fields in the tuple.

参数:

fields (Array)

class tvm.relay.dataflow_pattern.TypePattern(pattern, ttype)[源代码]#

A pattern that matches another pattern with a certain type annotation.

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The input pattern that needs type annotation.

ttype: tvm.ir.type.Type

The type to match.

参数:
class tvm.relay.dataflow_pattern.VarPattern(name_hint='')[源代码]#

A local variable in Relay.

Local variable can be used to declare input arguments to a function, or intermediate variables.

Parameters#

name_hint: str

The name of the variable. Optional, if not provided, the pattern will match any VarNode.

type_annotation: tvm.ir.type.Type, optional

The type annotation on the variable.

参数:

name_hint (str)

class tvm.relay.dataflow_pattern.WildcardPattern[源代码]#

A pattern which matches anything.

Methods:

redirect_to(pat)

Redirect the WildcardPattern to another pattern

redirect_to(pat)[源代码]#

Redirect the WildcardPattern to another pattern

Parameters#

pat: relay.dataflow_pattern.DFPattern

The pattern that wildcard is redirected to.

参数:

pat (DFPattern)

class tvm.relay.dataflow_pattern._DFPatternCallback(pattern, callback, require_type, rewrite_once)[源代码]#

C++ implemenation

tvm.relay.dataflow_pattern.astext(obj, show_meta_data=True, annotate=None)[源代码]#

Get the text format of the expression.

Parameters#

objObject

The object to be printed.

show_meta_databool

Whether to include meta data section in the text if there is meta data.

annotate: Optional[Object->str]

Optionally annotate function to provide additional information in the comment block.

Returns#

textstr

The text format of the expression.

Notes#

The meta data section is necessary to fully parse the text format. However, it can contain dumps that are big (e.g constant weights), so it can be helpful to skip printing the meta data section.

参数:

obj (Object)

tvm.relay.dataflow_pattern.dominates(parent, path, child)[源代码]#

Syntatic sugar for creating an Dominator pattern

Parameters#

parent: tvm.relay.dataflow_pattern.DFPattern

The parent pattern.

path: tvm.relay.dataflow_pattern.DFPattern

The fuzzy path pattern.

child: tvm.relay.dataflow_pattern.DFPattern

The child pattern.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting DominatorPattern.

参数:
返回类型:

DFPattern

tvm.relay.dataflow_pattern.get(op_name)[源代码]#

Get the Op for a given name

Parameters#

op_namestr

The operator name

Returns#

opOp

The op of the corresponding name

tvm.relay.dataflow_pattern.has_attr(attrs, pattern=None)[源代码]#

Syntatic sugar for creating an AttrPattern

Parameters#

attrs: Dict[str, Object]

The attributes to match

pattern: Optional[tvm.relay.dataflow_pattern.DFPattern]

The input pattern.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting AttrPattern

返回类型:

DFPattern

tvm.relay.dataflow_pattern.has_dtype(dtype, pattern=None)[源代码]#

Syntatic sugar for creating a DataTypePattern

Parameters#

dtype: str

The dtype to match

pattern: tvm.relay.dataflow_pattern.DFPattern

The pattern that needs type annotation

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting DataTypePattern

参数:
返回类型:

DFPattern

tvm.relay.dataflow_pattern.has_shape(shape, pattern=None)[源代码]#

Syntatic sugar for creating a ShapePattern

Parameters#

shape: List[tvm.ir.PrimExpr]

The shape to match

pattern: tvm.relay.dataflow_pattern.DFPattern

The pattern that needs type annotation

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting ShapePattern

参数:
返回类型:

DFPattern

tvm.relay.dataflow_pattern.has_type(ttype, pattern=None)[源代码]#

Syntatic sugar for creating a TypePattern

Parameters#

ttype: tvm.ir.type.Type

The type to match

pattern: tvm.relay.dataflow_pattern.DFPattern

The pattern that needs type annotation

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting TypePattern

参数:
返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_constant()[源代码]#

Syntatic sugar for creating a ConstantPattern.

Parameters#

name: str

The name of the input pattern to match.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_expr(expr)[源代码]#

Syntatic sugar for creating an ExprPattern.

Parameters#

expr: Expr

The Relay expression to match.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

参数:

expr (RelayExpr)

返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_if(cond, true_branch, false_branch)[源代码]#

Syntatic sugar for creating an IfPattern.

Parameters#

cond: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the condition of If.

true_branch: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the true branch of If.

false_branch: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the false branch of If.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

tvm.relay.dataflow_pattern.is_let(var, value, body)[源代码]#

Syntatic sugar for creating a LetPattern.

Parameters#

var: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the variable of Let.

value: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the value of Let.

body: tvm.relay.dataflow_pattern.DFPattern

The pattern describing the body where the binding is in effect.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

tvm.relay.dataflow_pattern.is_op(op_name)[源代码]#

Syntatic sugar for creating an operator ExprPattern.

Parameters#

op_name: String

The name of the relay op

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting ExprPattern

参数:

op_name (str)

返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_tuple(fields)[源代码]#

Syntatic sugar for creating an ExprPattern.

Parameters#

fieldsArray[tvm.relay.dataflow_pattern.DFPattern]

The fields in the tuple.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

参数:

fields (Array)

返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_tuple_get_item(tuple_value, index=None)[源代码]#

Syntatic sugar for creating an ExprPattern.

Parameters#

tuple_value: tvm.relay.dataflow_pattern.DFPattern

The input tuple expression.

index: Optional[int]

The index to match; Default (None) to match a TupleGetItem with any index.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

参数:
返回类型:

DFPattern

tvm.relay.dataflow_pattern.is_var(name='')[源代码]#

Syntatic sugar for creating an optionally named VarPattern.

Parameters#

name: str

The name of the input pattern to match.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

参数:

name (str)

返回类型:

DFPattern

tvm.relay.dataflow_pattern.make_node(type_key, **kwargs)[源代码]#

Make a new IR node by its type key and fields

Parameters#

type_keystr

The type key of the node.

**kwargsdict

The fields of the node.

Returns#

nodeNode

The corresponding IR Node

Note#

If the created node is instance of AttrsNode, then the creator function will also run bound checks and default value setup as supported by Attrs.

Example#

The following code constructs a IntImm object

x = tvm.ir.make_node("IntImm", dtype="int32", value=10, span=None)
assert isinstance(x, tvm.tir.IntImm)
assert x.value == 10
tvm.relay.dataflow_pattern.match(pattern, expr)[源代码]#

Match a pattern to an expression

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The input pattern.

exprtvm.relay.Expr

The expression to match.

参数:
返回类型:

bool

tvm.relay.dataflow_pattern.partition(pattern, expr, attrs=None, check=<function <lambda>>)[源代码]#

Parition the expression into a series of functions that match the pattern

Parameters#

pattern: tvm.relay.dataflow_pattern.DFPattern

The pattern to match

exprtvm.relay.Expr

The expression to split into functions

attrsOptional[Dict[str, Object]]

A dict of attributes to apply to the partitioned function

checkCallable[[Expr], bool]

A function to perform more complicated checks on the matched expression. Returns true if partitioning should proceed, false otherwise.

Returns#

resulttvm.relay.Expr

The Expression with matched subgraphs replaced by function calls to that subgraph

参数:
返回类型:

RelayExpr

tvm.relay.dataflow_pattern.pretty_print(obj)[源代码]#

Pretty print the object.

参数:

obj (Object)

返回类型:

None

tvm.relay.dataflow_pattern.register_df_node(type_key=None)[源代码]#

Register a Relay node type.

Parameters#

type_keystr or cls

The type key of the node.

tvm.relay.dataflow_pattern.rewrite(callbacks, expr, mod=None)[源代码]#

Rewrite expression with the given callbacks.

Parameters#

callbacks: tvm.relay.dataflow_pattern.DFPatternCallback

The input callback or list of callbacks.

exprtvm.relay.Expr

The expression to rewrite.

modOptional[tvm.ir.IRModule]

The module that associates with the expression.

Returns#

resulttvm.relay.Expr

The Expression with matched subgraphs rewritten by the callbacks.

参数:
返回类型:

RelayExpr

tvm.relay.dataflow_pattern.wildcard()[源代码]#

Syntatic sugar for creating a WildcardPattern.

Returns#

result: tvm.relay.dataflow_pattern.DFPattern

The resulting pattern.

返回类型:

DFPattern