tvm
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tvm::tir::IndexMapNode Class Reference

Defines a mapping between two representations of indices into a buffer. More...

#include <index_map.h>

Inheritance diagram for tvm::tir::IndexMapNode:
Collaboration diagram for tvm::tir::IndexMapNode:

Public Member Functions

 IndexMapNode ()
 Default constructor. More...
 
Array< PrimExprMapIndices (const Array< PrimExpr > &indices, arith::Analyzer *analyzer) const
 Map indices to the output space. More...
 
Array< RangeMapRanges (const Array< Range > &ranges, arith::Analyzer *analyzer) const
 Map a memory range to the output space. More...
 
Array< PrimExprMapShape (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)
 
Objectoperator= (const Object &other)
 
Objectoperator= (Object &&other)
 

Public Attributes

Array< Varinitial_indices
 Variables representing the indices prior to remapping. More...
 
Array< PrimExprfinal_indices
 Expressions defining the indices after remapping. More...
 
Optional< ObjectRefinverse_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...
 

Detailed Description

Defines a mapping between two representations of indices into a buffer.

This is primarily used for layout transformations of Buffer objects.

Constructor & Destructor Documentation

◆ IndexMapNode()

tvm::tir::IndexMapNode::IndexMapNode ( )
inline

Default constructor.

Defines the mapping as an identity function, with initial_indices equal to the final indices.

Member Function Documentation

◆ MapIndices()

Array<PrimExpr> tvm::tir::IndexMapNode::MapIndices ( const Array< PrimExpr > &  indices,
arith::Analyzer analyzer 
) const

Map indices to the output space.

Parameters
indicesThe indices in the input space. Should contain one value for each variable in initial_indices.
analyzerAn optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer.
Returns
The indices in the output space. Contains one value for each expression in final_indices.

◆ MapNDArray()

runtime::NDArray tvm::tir::IndexMapNode::MapNDArray ( runtime::NDArray  arr_src) const

◆ MapRanges()

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.

Parameters
rangesThe ranges in the input space. Should contain one value for each variable in initial_indices.
analyzerAn optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer.
Returns
The ranges in the output space. Contains one value for each expression in final_indices.

◆ MapShape()

Array<PrimExpr> tvm::tir::IndexMapNode::MapShape ( const Array< PrimExpr > &  shape,
arith::Analyzer analyzer 
) const

Map a buffer shape to the output space.

Parameters
shapeThe buffer shape in the input space. Should contain one value for each variable in initial_indices.
analyzerAn optional analyzer to be used to simplify the resulting expressions. If null, will use a fresh analyzer.
Returns
The buffer shape in the output space. Contains one value for each expression in final_indices.

◆ SEqualReduce()

bool tvm::tir::IndexMapNode::SEqualReduce ( const IndexMapNode other,
SEqualReducer  equal 
) const
inline

◆ SHashReduce()

void tvm::tir::IndexMapNode::SHashReduce ( SHashReducer  hash_reduce) const
inline

◆ ToPythonString()

String tvm::tir::IndexMapNode::ToPythonString ( const std::function< Optional< String >(const Var &var)> &  f_name_map = nullptr) const

Convert to string representation in Python.

Parameters
f_name_mapOptional function to specify the stringified name of the variables.
Returns
The stringified lambda expression in Python.

◆ TVM_DECLARE_FINAL_OBJECT_INFO()

tvm::tir::IndexMapNode::TVM_DECLARE_FINAL_OBJECT_INFO ( IndexMapNode  ,
Object   
)

◆ VisitAttrs()

void tvm::tir::IndexMapNode::VisitAttrs ( AttrVisitor v)
inline

Member Data Documentation

◆ _type_has_method_sequal_reduce

constexpr const bool tvm::tir::IndexMapNode::_type_has_method_sequal_reduce = true
staticconstexpr

◆ _type_has_method_shash_reduce

constexpr const bool tvm::tir::IndexMapNode::_type_has_method_shash_reduce = true
staticconstexpr

◆ _type_key

constexpr const char* tvm::tir::IndexMapNode::_type_key = "tir.IndexMap"
staticconstexpr

◆ final_indices

Array<PrimExpr> tvm::tir::IndexMapNode::final_indices

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.

◆ initial_indices

Array<Var> tvm::tir::IndexMapNode::initial_indices

Variables representing the indices prior to remapping.

If initial_indices is empty, then final_indices should also be empty, and no mapping is applied.

◆ inverse_index_map

Optional<ObjectRef> tvm::tir::IndexMapNode::inverse_index_map

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.

Note
ObjectRef is used here instead of IndexMap to avoid circular reference.

The documentation for this class was generated from the following file: