tvm
|
A computation operator that generated by hybrid script. More...
#include <operation.h>
Public Member Functions | |
HybridOpNode () | |
constructor More... | |
int | num_outputs () const final |
Array< IterVar > | root_iter_vars () const final |
DataType | output_dtype (size_t i) const final |
Get data type. i-th output tensor. More... | |
Array< PrimExpr > | output_shape (size_t i) const final |
Get shape of i-th output tensor. More... | |
Array< Tensor > | InputTensors () const final |
List all the input Tensors. More... | |
Operation | ReplaceInputs (const Operation &self, const std::unordered_map< Tensor, Tensor > &rmap) const final |
Replace the input of the operation by pattern specified by rmap. More... | |
void | PropBoundToInputs (const Operation &self, arith::Analyzer *analyzer, const std::unordered_map< const VarNode *, IntSet > &dom_map, std::unordered_map< Tensor, TensorDom > *out_dom_map) const final |
Propagate the bounds to inputs. More... | |
void | GatherBound (const Operation &self, const std::unordered_map< Tensor, TensorDom > &tensor_dom, std::unordered_map< IterVar, Range > *out_dom_map) const final |
Gather the bound from output tensor. Set the range of each root_iter_vars in the op to out_dom_map. More... | |
Stmt | BuildRealize (const Stage &stage, const std::unordered_map< IterVar, Range > &realize_map, const Stmt &body, String storage_scope="") const final |
Build the Realize statement that realizes the op's output tensors. More... | |
Stmt | BuildProvide (const Stage &stage, const std::unordered_map< IterVar, Range > &dom_map, bool debug_keep_trivial_loop) const final |
Build the statement that provide the output tensors. More... | |
void | VisitAttrs (AttrVisitor *v) |
TVM_DECLARE_FINAL_OBJECT_INFO (HybridOpNode, OperationNode) | |
Public Member Functions inherited from tvm::te::OperationNode | |
virtual | ~OperationNode () |
TVM_DECLARE_BASE_OBJECT_INFO (OperationNode, 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 | |
Array< Tensor > | inputs |
The input tensors. More... | |
Array< Tensor > | outputs |
Symbolic placeholder representation of outputs. More... | |
Array< IterVar > | axis |
The axis of iterations. More... | |
Stmt | body |
the statement that generates the computation. This is slightly different from the body in ExternOpNode. All the output tensors keep its own name specified by users in the script. However, when compilation, these tensors will be placed by those actual output tensors. More... | |
Public Attributes inherited from tvm::te::OperationNode | |
std::string | name |
optional name of the operation More... | |
std::string | tag |
optional tag of the operation More... | |
Map< String, ObjectRef > | attrs |
additional attributes of the operation More... | |
Static Public Attributes | |
static constexpr const char * | _type_key = "HybridOp" |
Static Public Attributes inherited from tvm::te::OperationNode | |
static constexpr const char * | _type_key = "Operation" |
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... | |
A computation operator that generated by hybrid script.
|
inline |
constructor
|
finalvirtual |
Build the statement that provide the output tensors.
stage | The schedule stage of the op. |
dom_map | The domain map of all iteration domains. |
debug_keep_trivial_loop | Whether keep trivial loops with extent of 1 |
Implements tvm::te::OperationNode.
|
finalvirtual |
Build the Realize statement that realizes the op's output tensors.
stage | the op's stage. |
realize_map | The realization domain map of the operators. |
body | The body that is going to get |
storage_scope | The storage scope associated with this realization |
Implements tvm::te::OperationNode.
|
finalvirtual |
Gather the bound from output tensor. Set the range of each root_iter_vars in the op to out_dom_map.
self | The reference to self. |
tensor_dom | Domain map of Tensor->access set of each dimension. |
out_dom_map | The output domain map of each IterVar to be setted. |
Implements tvm::te::OperationNode.
|
finalvirtual |
Implements tvm::te::OperationNode.
|
finalvirtual |
Get data type. i-th output tensor.
i | The output index. |
Implements tvm::te::OperationNode.
Get shape of i-th output tensor.
i | The output index. |
Implements tvm::te::OperationNode.
|
finalvirtual |
Propagate the bounds to inputs.
self | The reference to self. |
analyzer | The analyzer to be used in the function. |
dom_map | the domain map of Variables(corresponds to root_iter_vars) |
out_dom_map | The output domain. The function is only asked to fill the bounds for Tensors that is already in the out_dom_map |
Implements tvm::te::OperationNode.
|
finalvirtual |
Replace the input of the operation by pattern specified by rmap.
self | The reference to self. |
rmap | The replacement map. |
Implements tvm::te::OperationNode.
Implements tvm::te::OperationNode.
tvm::te::HybridOpNode::TVM_DECLARE_FINAL_OBJECT_INFO | ( | HybridOpNode | , |
OperationNode | |||
) |
|
inline |
|
staticconstexpr |
Stmt tvm::te::HybridOpNode::body |
the statement that generates the computation. This is slightly different from the body in ExternOpNode. All the output tensors keep its own name specified by users in the script. However, when compilation, these tensors will be placed by those actual output tensors.