tvm
|
Defines a mapping between two representations of indices into a buffer. More...
#include <index_map.h>
Public Member Functions | |
IndexMapNode () | |
Default constructor. More... | |
Array< PrimExpr > | MapIndices (const Array< PrimExpr > &indices, arith::Analyzer *analyzer) const |
Map indices to the output space. More... | |
Array< Range > | MapRanges (const Array< Range > &ranges, arith::Analyzer *analyzer) const |
Map a memory range to the output space. More... | |
Array< PrimExpr > | MapShape (const Array< PrimExpr > &shape, arith::Analyzer *analyzer) const |
Map a buffer shape to the output space. More... | |
runtime::NDArray | MapNDArray (runtime::NDArray arr_src) const |
String | ToPythonString (const std::function< Optional< String >(const Var &var)> &f_name_map=nullptr) const |
Convert to string representation in Python. More... | |
void | VisitAttrs (AttrVisitor *v) |
bool | SEqualReduce (const IndexMapNode *other, SEqualReducer equal) const |
void | SHashReduce (SHashReducer hash_reduce) const |
TVM_DECLARE_FINAL_OBJECT_INFO (IndexMapNode, 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< Var > | initial_indices |
Variables representing the indices prior to remapping. More... | |
Array< PrimExpr > | final_indices |
Expressions defining the indices after remapping. More... | |
Optional< ObjectRef > | inverse_index_map |
The inverse index map. More... | |
Static Public Attributes | |
static constexpr const char * | _type_key = "tir.IndexMap" |
static constexpr const bool | _type_has_method_sequal_reduce = true |
static constexpr const bool | _type_has_method_shash_reduce = true |
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... | |
Defines a mapping between two representations of indices into a buffer.
This is primarily used for layout transformations of Buffer objects.
|
inline |
Default constructor.
Defines the mapping as an identity function, with initial_indices equal to the final indices.
Array<PrimExpr> tvm::tir::IndexMapNode::MapIndices | ( | const Array< PrimExpr > & | indices, |
arith::Analyzer * | analyzer | ||
) | const |
Map indices to the output space.
indices | The indices in the input space. Should contain one value for each variable in initial_indices . |
analyzer | An optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer. |
final_indices
. runtime::NDArray tvm::tir::IndexMapNode::MapNDArray | ( | runtime::NDArray | arr_src | ) | const |
Array<Range> tvm::tir::IndexMapNode::MapRanges | ( | const Array< Range > & | ranges, |
arith::Analyzer * | analyzer | ||
) | const |
Map a memory range to the output space.
If contiguous memory locations in the input space are not necessarily contiguous in the output space (e.g. lambda i: [8*(i%8) + (i//8)]
), then this will return the smallest range such that all valid indices are contained within the given range.
ranges | The ranges in the input space. Should contain one value for each variable in initial_indices . |
analyzer | An optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer. |
final_indices
. Array<PrimExpr> tvm::tir::IndexMapNode::MapShape | ( | const Array< PrimExpr > & | shape, |
arith::Analyzer * | analyzer | ||
) | const |
Map a buffer shape to the output space.
shape | The buffer shape in the input space. Should contain one value for each variable in initial_indices . |
analyzer | An optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer. |
final_indices
.
|
inline |
|
inline |
String tvm::tir::IndexMapNode::ToPythonString | ( | const std::function< Optional< String >(const Var &var)> & | f_name_map = nullptr | ) | const |
Convert to string representation in Python.
f_name_map | Optional function to specify the stringified name of the variables. |
tvm::tir::IndexMapNode::TVM_DECLARE_FINAL_OBJECT_INFO | ( | IndexMapNode | , |
Object | |||
) |
|
inline |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
Expressions defining the indices after remapping.
These expressions should only be in terms of the initial_indices, and must be expressible as an IterSumExpr. The mapping from initial_indices to final_indices must be injective.
If final_indices is empty, then initial_indices should also be empty, and the map is an identity function.
Variables representing the indices prior to remapping.
If initial_indices is empty, then final_indices should also be empty, and no mapping is applied.
The inverse index map.
When this is defined, IndexMap::Inverse will return the pre-defined inverse index map. Otherwise, the inverse index map will be computed on the fly. It is the user's responsibility to ensure the correctness of the pre-defined inverse index map.