24 #ifndef TVM_RELAY_DATAFLOW_PATTERN_FUNCTOR_H_ 25 #define TVM_RELAY_DATAFLOW_PATTERN_FUNCTOR_H_ 29 #include <unordered_set> 42 template <
typename FType>
46 #define DFPATTERN_FUNCTOR_DEFAULT \ 47 { return VisitDFPatternDefault_(op, std::forward<Args>(args)...); } 49 #define RELAY_DFPATTERN_FUNCTOR_DISPATCH(OP) \ 50 vtable.template set_dispatch<OP>([](const ObjectRef& n, TSelf* self, Args... args) { \ 51 return self->VisitDFPattern_(static_cast<const OP*>(n.get()), std::forward<Args>(args)...); \ 54 template <
typename R,
typename... Args>
70 return VisitDFPattern(n, std::forward<Args>(args)...);
80 static FType vtable = InitVTable();
81 return vtable(n,
this, std::forward<Args>(args)...);
102 LOG(FATAL) <<
"Do not have a default for " << op->
GetTypeKey();
108 static FType InitVTable() {
164 #endif // TVM_RELAY_DATAFLOW_PATTERN_FUNCTOR_H_ A dynamically dispatched functor on the type of the first argument.
Definition: functor.h:64
#define DFPATTERN_FUNCTOR_DEFAULT
Definition: dataflow_pattern_functor.h:46
virtual R VisitDFPattern_(const TuplePatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:97
Pattern for Types.
Definition: dataflow_pattern.h:437
A dynamical functor that dispatches on in the first DFPattern argument.
Definition: dataflow_pattern_functor.h:43
virtual R VisitDFPattern_(const TypePatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:98
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
virtual R VisitDFPattern_(const ExprPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:90
Pattern for Relay Expression.
Definition: dataflow_pattern.h:83
#define RELAY_DFPATTERN_FUNCTOR_DISPATCH(OP)
Definition: dataflow_pattern_functor.h:49
Definition: dataflow_pattern.h:301
virtual ~DFPatternFunctor()
virtual destructor
Definition: dataflow_pattern_functor.h:62
virtual R VisitDFPattern_(const FunctionPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:91
A binding of a sub-network.
Definition: dataflow_pattern.h:228
void VisitDFPattern_(const AltPatternNode *op) override
Dominated Graph Pattern Pattern for fuzzy subgraphs where all outputs of the parent are used finally ...
Definition: dataflow_pattern.h:497
virtual R VisitDFPattern(const DFPattern &n, Args... args)
The functor call.
Definition: dataflow_pattern_functor.h:78
base class of all object containers.
Definition: object.h:167
A simple visitor wrapper around DFPatternFunctor. Recursively visit the content.
Definition: dataflow_pattern_functor.h:137
Definition: dataflow_pattern_functor.h:55
Definition: dataflow_pattern.h:285
Pattern for Types.
Definition: dataflow_pattern.h:379
virtual R VisitDFPattern_(const IfPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:92
R operator()(const DFPattern &n, Args... args)
Same as call.
Definition: dataflow_pattern_functor.h:69
std::unordered_set< const Object * > visited_
Definition: dataflow_pattern_functor.h:159
virtual R VisitDFPattern_(const TupleGetItemPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:95
Pattern for Alternate Expressions.
Definition: dataflow_pattern.h:331
bool defined() const
Definition: object.h:544
Pattern for Attributes.
Definition: dataflow_pattern.h:466
virtual R VisitDFPattern_(const DataTypePatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:88
virtual R VisitDFPattern_(const ConstantPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:87
CallPattern container.
Definition: dataflow_pattern.h:157
void VisitDFPattern(const DFPattern &pattern) override
Container for Constant.
Definition: dataflow_pattern.h:138
virtual R VisitDFPattern_(const VarPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:99
Managed reference to dataflow patterns.
Definition: dataflow_pattern.h:50
Base class of all object reference.
Definition: object.h:511
std::string GetTypeKey() const
Definition: object.h:180
Container for Var.
Definition: dataflow_pattern.h:111
Tuple container.
Definition: dataflow_pattern.h:266
virtual R VisitDFPattern_(const AltPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:84
Pattern for Shapes.
Definition: dataflow_pattern.h:408
virtual R VisitDFPattern_(const ShapePatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:94
A pattern language for matching dataflow properties.
virtual R VisitDFPattern_(const AttrPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:85
virtual R VisitDFPattern_(const LetPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:93
virtual R VisitDFPattern_(const WildcardPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:100
virtual R VisitDFPattern_(const CallPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:86
Relay Function container.
Definition: dataflow_pattern.h:189
Wildcard Pattern.
Definition: dataflow_pattern.h:359
virtual R VisitDFPattern_(const DominatorPatternNode *op, Args... args)
Definition: dataflow_pattern_functor.h:89
virtual R VisitDFPatternDefault_(const Object *op, Args...)
Definition: dataflow_pattern_functor.h:101