tvm
|
Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of instruction has its own properties, including: 1) A boolean indicating if the instruction is pure, i.e. change nothing in the schedule state 2) A functor that applies the instruction to a TensorIR schedule 3) A functor that converts the instruction to a statement in python syntax 4) A functor that serialize its attributes to JSON 5) A functor that deserialize its attributes from JSON. More...
#include <instruction.h>
Public Member Functions | |
void | VisitAttrs (tvm::AttrVisitor *v) |
bool | IsPostproc () const |
Checks if the instruction kind is EnterPostproc. More... | |
TVM_DECLARE_FINAL_OBJECT_INFO (InstructionKindNode, runtime::Object) | |
Public Member Functions inherited from tvm::runtime::Object | |
uint32_t | type_index () const |
std::string | GetTypeKey () const |
size_t | GetTypeKeyHash () const |
template<typename TargetType > | |
bool | IsInstance () const |
bool | unique () const |
Object () | |
Object (const Object &other) | |
Object (Object &&other) | |
Object & | operator= (const Object &other) |
Object & | operator= (Object &&other) |
Public Attributes | |
String | name |
The name of a kind of instructions. More... | |
bool | is_pure {false} |
Indicates if the instruction is pure, i.e. removing it alone doesn't mutate the schedule state. For example, the instruction GetBlock is pure because it changes nothing, while ComputeInline is not because removing it leads to a different resulting schedule. More... | |
FInstructionApply | f_apply_to_schedule {nullptr} |
A functor that applies the instruction to a TensorIR schedule. More... | |
FInstructionAsPython | f_as_python {nullptr} |
A functor that converts the instruction to a statement in python syntax. More... | |
FInstructionAttrsAsJSON | f_attrs_as_json {nullptr} |
A functor that serialize its attributes to JSON. More... | |
FInstructionAttrsFromJSON | f_attrs_from_json {nullptr} |
A functor that deserialize its attributes from JSON. More... | |
Static Public Attributes | |
static constexpr const char * | _type_key = "tir.InstructionKind" |
Static Public Attributes inherited from tvm::runtime::Object | |
static constexpr const char * | _type_key = "runtime.Object" |
static constexpr bool | _type_final = false |
static constexpr uint32_t | _type_child_slots = 0 |
static constexpr bool | _type_child_slots_can_overflow = true |
static constexpr bool | _type_has_method_visit_attrs = true |
static constexpr bool | _type_has_method_sequal_reduce = false |
static constexpr bool | _type_has_method_shash_reduce = false |
static constexpr uint32_t | _type_index = TypeIndex::kDynamic |
Additional Inherited Members | |
Public Types inherited from tvm::runtime::Object | |
typedef void(* | FDeleter) (Object *self) |
Object deleter. More... | |
using | RefCounterType = std::atomic< int32_t > |
Static Public Member Functions inherited from tvm::runtime::Object | |
static std::string | TypeIndex2Key (uint32_t tindex) |
Get the type key of the corresponding index from runtime. More... | |
static size_t | TypeIndex2KeyHash (uint32_t tindex) |
Get the type key hash of the corresponding index from runtime. More... | |
static uint32_t | TypeKey2Index (const std::string &key) |
Get the type index of the corresponding key from runtime. More... | |
static uint32_t | _GetOrAllocRuntimeTypeIndex () |
static uint32_t | RuntimeTypeIndex () |
Protected Member Functions inherited from tvm::runtime::Object | |
void | IncRef () |
developer function, increases reference counter. More... | |
void | DecRef () |
developer function, decrease reference counter. More... | |
Static Protected Member Functions inherited from tvm::runtime::Object | |
static uint32_t | GetOrAllocRuntimeTypeIndex (const std::string &key, uint32_t static_tindex, uint32_t parent_tindex, uint32_t type_child_slots, bool type_child_slots_can_overflow) |
Get the type index using type key. More... | |
Protected Attributes inherited from tvm::runtime::Object | |
uint32_t | type_index_ {0} |
Type index(tag) that indicates the type of the object. More... | |
RefCounterType | ref_counter_ {0} |
The internal reference counter. More... | |
FDeleter | deleter_ = nullptr |
deleter of this object to enable customized allocation. If the deleter is nullptr, no deletion will be performed. The creator of the object must always set the deleter field properly. More... | |
Kind of an instruction, e.g. Split, Reorder, etc. Besides the name, every kind of instruction has its own properties, including: 1) A boolean indicating if the instruction is pure, i.e. change nothing in the schedule state 2) A functor that applies the instruction to a TensorIR schedule 3) A functor that converts the instruction to a statement in python syntax 4) A functor that serialize its attributes to JSON 5) A functor that deserialize its attributes from JSON.
Unlike tvm::OpNode
, InstructionKindNode
doesn't support unstructured properties, mainly because there is no such usecase yet to add any other property.
bool tvm::tir::InstructionKindNode::IsPostproc | ( | ) | const |
Checks if the instruction kind is EnterPostproc.
tvm::tir::InstructionKindNode::TVM_DECLARE_FINAL_OBJECT_INFO | ( | InstructionKindNode | , |
runtime::Object | |||
) |
|
inline |
|
staticconstexpr |
FInstructionApply tvm::tir::InstructionKindNode::f_apply_to_schedule {nullptr} |
A functor that applies the instruction to a TensorIR schedule.
FInstructionAsPython tvm::tir::InstructionKindNode::f_as_python {nullptr} |
A functor that converts the instruction to a statement in python syntax.
FInstructionAttrsAsJSON tvm::tir::InstructionKindNode::f_attrs_as_json {nullptr} |
A functor that serialize its attributes to JSON.
FInstructionAttrsFromJSON tvm::tir::InstructionKindNode::f_attrs_from_json {nullptr} |
A functor that deserialize its attributes from JSON.
bool tvm::tir::InstructionKindNode::is_pure {false} |
Indicates if the instruction is pure, i.e. removing it alone doesn't mutate the schedule state. For example, the instruction GetBlock
is pure because it changes nothing, while ComputeInline
is not because removing it leads to a different resulting schedule.
String tvm::tir::InstructionKindNode::name |
The name of a kind of instructions.