tvm.relay.dataflow_pattern¶
The Relay Pattern Language and tooling.
Classes:
|
Create a Pattern that can match one of two conditions |
|
Get match an expression with a certain attributes. |
|
A pattern matching a function call node in Relay. |
|
Callable type; Callable[[int], str] is a function of (int) -> str. |
|
A pattern matching a Relay Constant. |
|
Base class of all Patterns. |
|
A Callback for Pattern Rewriting. |
|
A pattern that matches another pattern with certain data type |
|
|
|
Match a domination graph. |
|
alias of |
|
A pattern which matches a constant expression. |
|
A pattern matching a function node in Relay. |
|
A patern matching a Relay If. |
|
A patern matching a Relay Let. |
|
|
|
A pattern that matches another pattern with a certain tensor shape |
|
Get index-th item from a TuplePattern. |
|
A patern matching a Relay Tuple. |
|
A pattern that matches another pattern with a certain type annotation. |
|
A local variable in Relay. |
|
A pattern which matches anything. |
Functions:
|
Syntatic sugar for creating an Dominator pattern |
|
Get the Op for a given name |
|
Syntatic sugar for creating an AttrPattern |
|
Syntatic sugar for creating a DataTypePattern |
|
Syntatic sugar for creating a ShapePattern |
|
Syntatic sugar for creating a TypePattern |
|
Syntatic sugar for creating a ConstantPattern. |
|
Syntatic sugar for creating an ExprPattern. |
|
Syntatic sugar for creating an IfPattern. |
|
Syntatic sugar for creating a LetPattern. |
|
Syntatic sugar for creating an operator ExprPattern. |
|
Syntatic sugar for creating an ExprPattern. |
|
Syntatic sugar for creating an ExprPattern. |
|
Syntatic sugar for creating an optionally named VarPattern. |
|
Make a new IR node by its type key and fields |
|
Match a pattern to an expression |
|
Parition the expression into a series of functions that match the pattern |
|
Register a Relay node type. |
|
Rewrite expression with the given callbacks. |
|
Syntatic sugar for creating a WildcardPattern. |
-
class
tvm.relay.dataflow_pattern.
Callable
(*args, **kwds)¶ Callable type; Callable[[int], str] is a function of (int) -> str.
The subscription syntax must always be used with exactly two values: the argument list and the return type. The argument list must be a list of types or ellipsis; the return type must be a single type.
There is no syntax to indicate optional or keyword arguments, such function types are rarely used as callback types.
-
class
tvm.relay.dataflow_pattern.
Dict
(*args, **kwds)¶
-
class
tvm.relay.dataflow_pattern.
List
(*args, **kwds)¶
-
tvm.relay.dataflow_pattern.
Expr
¶ alias of
tvm.ir.expr.RelayExpr
Attributes:checked_type
Get the checked type of tvm.relay.Expr.
-
tvm.relay.dataflow_pattern.
make_node
(type_key, **kwargs)¶ Make a new IR node by its type key and fields
- Parameters
- Returns
node – The corresponding IR Node
- Return type
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) assert isinstance(x, tvm.tir.IntImm) assert x.value == 10
-
tvm.relay.dataflow_pattern.
get
(op_name)¶ Get the Op for a given name
-
tvm.relay.dataflow_pattern.
register_df_node
(type_key=None)¶ Register a Relay node type.
- Parameters
type_key (str or cls) – The type key of the node.
-
class
tvm.relay.dataflow_pattern.
DFPattern
¶ Base class of all Patterns.
Methods:
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
-
has_attr
(attrs: Dict[str, tvm.runtime.object.Object])¶ Add an attribute constraint to this pattern
- Parameters
- Returns
result – The resulting AttrPattern
- Return type
-
has_type
(ttype: tvm.ir.type.Type)¶ Add a type constraint to this pattern
- Parameters
ttype (tvm.ir.type.Type) – The type to match
- Returns
result – The resulting TypePattern
- Return type
-
has_dtype
(dtype: str)¶ Add a type constraint to this pattern
- Parameters
dtype (str) – The dtype to match
- Returns
result – The resulting DataTypePattern
- Return type
-
has_shape
(shape: List[tvm.ir.expr.PrimExpr])¶ Add a type constraint to this pattern
- Parameters
shape (List[tvm.ir.PrimExpr]) – The shape to match
- Returns
result – The resulting ShapePattern
- Return type
-
match
(expr: tvm.ir.expr.RelayExpr) → bool¶ Match this pattern to an expression
- Parameters
expr (tvm.relay.Expr) – The expression to match.
- Returns
result – Whether or not the expression matches the pattern
- Return type
-
partition
(expr: tvm.ir.expr.RelayExpr, attrs: Optional[Dict[str, tvm.runtime.object.Object]] = None, check: Callable[tvm.ir.expr.RelayExpr, bool] = <function DFPattern.<lambda>>) → tvm.ir.expr.RelayExpr¶ Partition the expression into functions defined by this pattern
- Parameters
expr (tvm.relay.Expr) – The expression to match.
attrs (Optional[Dict[str, Object]]) – A dictionary of Attribute name/values to add to the paritioned function
check (Callable[[Expr], bool]) – A function to perform more complicated checks on the matched expression. Returns true if partitioning should proceed, false otherwise.
- Returns
result – The Expression with matched subgraphs replaced by function calls to that subgraph
- Return type
tvm.relay.Expr
-
dominates
(parent: tvm.relay.dataflow_pattern.DFPattern, path: Optional[tvm.relay.dataflow_pattern.DFPattern] = 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 – The resulting DominatorPattern.
- Return type
-
-
tvm.relay.dataflow_pattern.
is_var
(name: str = '') → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating an optionally named VarPattern.
- Parameters
name (str) – The name of the input pattern to match.
- Returns
result – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
is_constant
() → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating a ConstantPattern.
- Parameters
name (str) – The name of the input pattern to match.
- Returns
result – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
is_expr
(expr: tvm.ir.expr.RelayExpr) → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating an ExprPattern.
- Parameters
expr (Expr) – The Relay expression to match.
- Returns
result – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
is_op
(op_name: str) → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating an operator ExprPattern.
- Parameters
op_name (String) – The name of the relay op
- Returns
result – The resulting ExprPattern
- Return type
-
tvm.relay.dataflow_pattern.
is_tuple
(fields: tvm.ir.container.Array) → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating an ExprPattern.
- Parameters
fields (Array[tvm.relay.dataflow_pattern.DFPattern]) – The fields in the tuple.
- Returns
result – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
is_tuple_get_item
(tuple_value: tvm.relay.dataflow_pattern.DFPattern, index: Optional[int] = None) → tvm.relay.dataflow_pattern.DFPattern¶ 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 – The resulting pattern.
- Return type
-
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 – The resulting pattern.
- Return type
-
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 – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
wildcard
() → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating a WildcardPattern.
- Returns
result – The resulting pattern.
- Return type
-
tvm.relay.dataflow_pattern.
has_type
(ttype: tvm.ir.type.Type, pattern: Optional[tvm.relay.dataflow_pattern.DFPattern] = None) → tvm.relay.dataflow_pattern.DFPattern¶ 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 – The resulting TypePattern
- Return type
-
tvm.relay.dataflow_pattern.
has_dtype
(dtype: str, pattern: Optional[tvm.relay.dataflow_pattern.DFPattern] = None) → tvm.relay.dataflow_pattern.DFPattern¶ 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 – The resulting DataTypePattern
- Return type
-
tvm.relay.dataflow_pattern.
has_shape
(shape: List[tvm.ir.expr.PrimExpr], pattern: Optional[tvm.relay.dataflow_pattern.DFPattern] = None) → tvm.relay.dataflow_pattern.DFPattern¶ 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 – The resulting ShapePattern
- Return type
-
tvm.relay.dataflow_pattern.
has_attr
(attrs, pattern=None) → tvm.relay.dataflow_pattern.DFPattern¶ Syntatic sugar for creating an AttrPattern
- Parameters
pattern (Optional[tvm.relay.dataflow_pattern.DFPattern]) – The input pattern.
- Returns
result – The resulting AttrPattern
- Return type
-
tvm.relay.dataflow_pattern.
dominates
(parent: tvm.relay.dataflow_pattern.DFPattern, path: tvm.relay.dataflow_pattern.DFPattern, child: tvm.relay.dataflow_pattern.DFPattern) → tvm.relay.dataflow_pattern.DFPattern¶ 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 – The resulting DominatorPattern.
- Return type
-
tvm.relay.dataflow_pattern.
match
(pattern: tvm.relay.dataflow_pattern.DFPattern, expr: tvm.ir.expr.RelayExpr) → bool¶ Match a pattern to an expression
- Parameters
pattern (tvm.relay.dataflow_pattern.DFPattern) – The input pattern.
expr (tvm.relay.Expr) – The expression to match.
-
class
tvm.relay.dataflow_pattern.
ExprPattern
(expr: tvm.ir.expr.RelayExpr)¶ A pattern which matches a constant expression.
- Parameters
expr (tvm.relay.Expr) – The expression to match.
-
class
tvm.relay.dataflow_pattern.
VarPattern
(name_hint: str = '')¶ 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.
-
class
tvm.relay.dataflow_pattern.
ConstantPattern
¶ A pattern matching a Relay Constant.
-
class
tvm.relay.dataflow_pattern.
CallPattern
(op: tvm.relay.dataflow_pattern.DFPattern, args: List[DFPattern])¶ A pattern matching a function call node in Relay.
- Parameters
op (realy.dataflow_pattern.DFPattern) – The operation to be called.
args (List[realy.dataflow_pattern.DFPattern]) – The arguments to the call.
-
class
tvm.relay.dataflow_pattern.
FunctionPattern
(params: List[DFPattern], body: tvm.relay.dataflow_pattern.DFPattern)¶ A pattern matching a function node in Relay.
- Parameters
params (List[realy.dataflow_pattern.DFPattern]) – The parameters to the Function.
body (realy.dataflow_pattern.DFPattern) – The body fo the Function
-
class
tvm.relay.dataflow_pattern.
IfPattern
(cond: tvm.relay.dataflow_pattern.DFPattern, true_branch: tvm.relay.dataflow_pattern.DFPattern, false_branch: tvm.relay.dataflow_pattern.DFPattern)¶ 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: tvm.relay.dataflow_pattern.DFPattern, value: tvm.relay.dataflow_pattern.DFPattern, body: tvm.relay.dataflow_pattern.DFPattern)¶ 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.
TuplePattern
(fields: tvm.ir.container.Array)¶ A patern matching a Relay Tuple.
- Parameters
fields (Array[tvm.relay.dataflow_pattern.DFPattern]) – The fields in the tuple.
-
class
tvm.relay.dataflow_pattern.
TupleGetItemPattern
(tuple_value: tvm.relay.dataflow_pattern.DFPattern, index: Optional[int] = 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.
AltPattern
(left: tvm.relay.dataflow_pattern.DFPattern, right: tvm.relay.dataflow_pattern.DFPattern)¶ 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.
WildcardPattern
¶ A pattern which matches anything.
-
class
tvm.relay.dataflow_pattern.
TypePattern
(pattern: tvm.relay.dataflow_pattern.DFPattern, ttype: tvm.ir.type.Type)¶ 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.
DataTypePattern
(pattern: tvm.relay.dataflow_pattern.DFPattern, dtype: str)¶ 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.
ShapePattern
(pattern: tvm.relay.dataflow_pattern.DFPattern, shape: List[tvm.ir.expr.PrimExpr])¶ 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.
AttrPattern
(pattern: tvm.relay.dataflow_pattern.DFPattern, attrs: tvm.ir.attrs.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.
DominatorPattern
(parent: tvm.relay.dataflow_pattern.DFPattern, path: tvm.relay.dataflow_pattern.DFPattern, child: tvm.relay.dataflow_pattern.DFPattern)¶ 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.
-
class
tvm.relay.dataflow_pattern.
DFPatternCallback
(require_type=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.
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
-
rewrite
(expr: tvm.ir.expr.RelayExpr) → tvm.ir.expr.RelayExpr¶ Rewrite expression with this callback
- Parameters
expr (tvm.relay.Expr) – The expression to rewrite.
- Returns
result – The Expression with matched subgraphs rewritten by the callbacks.
- Return type
tvm.relay.Expr
-
callback
(pre: tvm.ir.expr.RelayExpr, post: tvm.ir.expr.RelayExpr, node_map: tvm.ir.container.Map) → tvm.ir.expr.RelayExpr¶ Callback function to use when we found a match to the pattern
- Parameters
- Returns
result – The Expression with matched subgraph rewritten by the callback
- Return type
tvm.relay.Expr
-
tvm.relay.dataflow_pattern.
rewrite
(callbacks, expr: tvm.ir.expr.RelayExpr, mod: Optional[tvm.ir.module.IRModule] = None) → tvm.ir.expr.RelayExpr¶ Rewrite expression with the given callbacks.
- Parameters
callbacks (tvm.relay.dataflow_pattern.DFPatternCallback) – The input callback or list of callbacks.
expr (tvm.relay.Expr) – The expression to rewrite.
mod (Optional[tvm.ir.IRModule]) – The module that associates with the expression.
- Returns
result – The Expression with matched subgraphs rewritten by the callbacks.
- Return type
tvm.relay.Expr
-
tvm.relay.dataflow_pattern.
partition
(pattern: tvm.relay.dataflow_pattern.DFPattern, expr: tvm.ir.expr.RelayExpr, attrs: Optional[Dict[str, tvm.runtime.object.Object]] = None, check: Callable[tvm.ir.expr.RelayExpr, bool] = <function <lambda>>) → tvm.ir.expr.RelayExpr¶ Parition the expression into a series of functions that match the pattern
- Parameters
partion (tvm.relay.dataflow_pattern.DFPattern) – The pattern to match
expr (tvm.relay.Expr) – The expression to split into functions
attrs (Optional[Dict[str, Object]]) – A dict of attributes to apply to the partitioned function
check (Callable[[Expr], bool]) – A function to perform more complicated checks on the matched expression. Returns true if partitioning should proceed, false otherwise.
- Returns
result – The Expression with matched subgraphs replaced by function calls to that subgraph
- Return type
tvm.relay.Expr