33 #include <tvm/runtime/logging.h>
94 v->Visit(
"name", &
name);
105 return this == other;
118 uint32_t AttrRegistryIndex()
const {
return index_; }
120 std::string AttrRegistryName()
const {
return name; }
125 template <
typename,
typename>
147 template <
typename ValueType>
181 const Op&
op()
const {
return op_; }
197 const std::string& description);
203 template <
typename AttrsType>
236 template <
typename ValueType>
238 const ValueType& value,
int plevel = 10);
248 if (get()->name.length() == 0) {
261 template <
typename,
typename>
279 template <
typename ValueType>
289 inline ValueType
get(
const RelaxExpr& expr, ValueType def_value)
const;
294 using TParent::operator[];
303 #define TVM_OP_REGISTER_VAR_DEF static DMLC_ATTRIBUTE_UNUSED ::tvm::OpRegEntry& __make_##Op
320 #define TVM_REGISTER_OP(OpName) \
321 TVM_STR_CONCAT(TVM_OP_REGISTER_VAR_DEF, __COUNTER__) = \
322 ::tvm::OpRegEntry::RegisterOrGet(OpName).set_name()
326 template <
typename ValueType>
331 inline OpNode* OpRegEntry::get() {
return const_cast<OpNode*
>(op_.operator->()); }
339 const std::string& description) {
340 auto n = make_object<AttrFieldInfoNode>();
343 n->description = description;
353 template <
typename AttrsType>
371 template <
typename ValueType>
373 const std::string& attr_name,
const ValueType& value,
int plevel) {
374 ICHECK_GT(plevel, 0) <<
"plevel in set_attr must be greater than 0";
377 UpdateAttr(attr_name, rv, plevel);
383 template <
typename ValueType>
387 return this->map_.get(GetRef<Op>(op), def_value);
Attribute map used in registry.
Helpers for attribute objects.
AttrFieldInfo.
Definition: attrs.h:128
Generic attribute map.
Definition: attr_registry_map.h:38
Map<Key, ValueType> used to store meta-data.
Definition: attr_registry_map.h:101
ValueType get(const Op &key, ValueType def_value) const
get the corresponding value element at key with default value.
Definition: attr_registry_map.h:126
int count(const Op &key) const
Check if the map has op as key.
Definition: attr_registry_map.h:113
Definition: instruction.h:30
Visitor class to get the attributes of an AST/IR node. The content is going to be called for each fie...
Definition: reflection.h:52
Managed reference to FuncTypeNode.
Definition: type.h:301
Map<Op,ValueType> used to store meta-information about Op.
Definition: op.h:280
ValueType get(const RelaxExpr &expr, ValueType def_value) const
get the corresponding value element at op with default value.
Definition: op.h:384
Primitive Op(builtin intrinsics)
Definition: op.h:58
void SHashReduce(SHashReducer hash_reduce) const
Definition: op.h:108
static constexpr const char * _type_key
Definition: op.h:113
String name
name of the operator
Definition: op.h:61
uint32_t attrs_type_index
attribute type index, this field varies in each run and is not exposed to frontend.
Definition: op.h:80
String attrs_type_key
The type key of the attribute field This can be empty, in which case it defaults to anything.
Definition: op.h:75
int32_t support_level
support level of the operator, The lower the more priority it contains. This is in analogies to BLAS ...
Definition: op.h:91
TVM_DECLARE_FINAL_OBJECT_INFO(OpNode, RelaxExprNode)
void VisitAttrs(AttrVisitor *v)
Definition: op.h:93
int32_t num_inputs
number of input arguments to the operator, -1 means it is variable length
Definition: op.h:85
FuncType op_type
the type of the operator
Definition: op.h:63
String description
detailed description of the operator This can be used to generate docstring automatically for the ope...
Definition: op.h:68
Array< AttrFieldInfo > arguments
Definition: op.h:70
bool SEqualReduce(const OpNode *other, SEqualReducer equal) const
Definition: op.h:103
Helper structure to register operators.
Definition: op.h:178
OpRegEntry & set_attrs_type_key(const String &key)
Set the attrs type key and index to be AttrsType.
Definition: op.h:360
OpRegEntry & describe(const std::string &descr)
setter function during registration Set the description of operator
Definition: op.h:333
static OpRegEntry & RegisterOrGet(const String &name)
Register or get a new entry.
OpRegEntry & set_name()
Definition: op.h:247
void reset_attr(const std::string &attr_name)
Resets an attr of the registry.
OpRegEntry & add_argument(const std::string &name, const std::string &type, const std::string &description)
Add argument information to the function.
Definition: op.h:338
OpRegEntry & set_attrs_type()
Set the attrs type key and index to be AttrsType.
Definition: op.h:354
OpRegEntry & set_support_level(int32_t level)
Set the support level of op.
Definition: op.h:366
const Op & op() const
Definition: op.h:181
OpRegEntry & set_attr(const std::string &attr_name, const ValueType &value, int plevel=10)
Register additional attributes to operator.
Definition: op.h:372
OpRegEntry & set_num_inputs(int32_t n)
Set the num_inputs.
Definition: op.h:348
Managed reference class to OpNode.
Definition: op.h:138
static OpAttrMap< ValueType > GetAttrMap(const String &attr_name)
Get additional registered attribute about operators. If nothing has been registered,...
Definition: op.h:327
static bool HasAttrMap(const String &attr_name)
Checks if an attr map is present in the registry.
static const Op & Get(const String &op_name)
Get an Op for a given operator name. Will raise an error if the op has not been registered.
Base node of all non-primitive expressions.
Definition: expr.h:362
Managed reference to RelaxExprNode.
Definition: expr.h:405
TVM_DEFINE_OBJECT_REF_METHODS(RelaxExpr, BaseExpr, RelaxExprNode)
A Reducer class to reduce the structural equality result of two objects.
Definition: structural_equal.h:135
A Reducer class to reduce the structural hash value.
Definition: structural_hash.h:121
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
bool defined() const
Definition: object.h:553
const ObjectType * as() const
Try to downcast the internal Object to a raw pointer of a corresponding type.
Definition: object.h:911
static uint32_t TypeKey2Index(const std::string &key)
Get the type index of the corresponding key from runtime.
Reference to string objects.
Definition: string.h:97
Return Value container, Unlike TVMArgValue, which only holds reference and do not delete the underlyi...
Definition: packed_func.h:946
Serializable global function used in IR.
IR/AST nodes for the unified type system in TVM.
Performance counters for profiling via the PAPI library.
Definition: analyzer.h:36
PrimExpr equal(PrimExpr a, PrimExpr b, Span span=Span())
equal
This file defines the TVM global function registry.