tvm
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
tvm::runtime::ObjectRef Class Reference

Base class of all object reference. More...

#include <object.h>

Inherited by tvm::runtime::Array< tvm::relay::Var >, tvm::runtime::Array< tvm::meta_schedule::ArgInfo >, tvm::runtime::Array< tvm::arith::IterSumExpr >, tvm::runtime::Array< tvm::ObjectPath >, tvm::runtime::Array< tvm::tir::BufferRegion >, tvm::runtime::Array< tvm::tir::IterVar >, tvm::runtime::Array< tvm::meta_schedule::TaskRecord >, tvm::runtime::Array< tvm::Integer >, tvm::runtime::Array< tvm::ConstantInfo >, tvm::runtime::Array< tvm::Range >, tvm::runtime::Array< tvm::tir::MatchBufferRegion >, tvm::runtime::Array< tvm::relax::Binding >, tvm::runtime::Array< tvm::meta_schedule::MeasureCallback >, tvm::runtime::Array< tvm::runtime::ObjectRef >, tvm::runtime::Array< tvm::TypeConstraint >, tvm::runtime::Array< tvm::transform::Pass >, tvm::runtime::Array< tvm::script::printer::StmtDoc >, tvm::runtime::Array< tvm::relax::BindingBlock >, tvm::runtime::Array< tvm::relax::DFPattern >, tvm::runtime::Array< tvm::script::printer::ExprDoc >, tvm::runtime::Array< tvm::te::Tensor >, tvm::runtime::Array< tvm::te::Operation >, tvm::runtime::Array< tvm::te::Stage >, tvm::runtime::Array< tvm::runtime::Optional< tvm::Integer > >, tvm::runtime::Array< tvm::TensorAffineType >, tvm::runtime::Array< tvm::runtime::Array< tvm::PrimExpr > >, tvm::runtime::Array< tvm::relax::StructInfo >, tvm::runtime::Array< tvm::PoolInfo >, tvm::runtime::Array< tvm::AttrFieldInfo >, tvm::runtime::Array< tvm::ConstantPoolInfo >, tvm::runtime::Array< Range >, tvm::runtime::Array< Region >, tvm::runtime::Array< tvm::runtime::Map< tvm::runtime::String, tvm::runtime::ObjectRef > >, tvm::runtime::Array< tvm::relax::distributed::PlacementSpec >, tvm::runtime::Array< tvm::relay::OpSpecialization >, tvm::runtime::Array< tvm::auto_scheduler::Iterator >, tvm::runtime::Array< tvm::Span >, tvm::runtime::Array< tvm::Diagnostic >, tvm::runtime::Array< tvm::script::printer::AssignDoc >, tvm::runtime::Array< tvm::TypeVar >, tvm::runtime::Array< tvm::tir::Instruction >, tvm::runtime::Array< tvm::te::IterVarRelation >, tvm::runtime::Array< tvm::script::printer::Frame >, tvm::runtime::Array< tvm::runtime::Array< tvm::Integer > >, tvm::runtime::Array< tvm::relay::Clause >, tvm::runtime::Array< tvm::relay::DFPattern >, tvm::runtime::Array< tvm::relax::Var >, tvm::runtime::Array< tvm::auto_scheduler::Stage >, tvm::runtime::Array< tvm::PrimExpr >, tvm::runtime::Array< tvm::script::printer::IdDoc >, tvm::runtime::Array< tvm::relay::OpImplementation >, tvm::runtime::Array< tvm::FloatImm >, tvm::runtime::Array< tvm::tir::Var >, tvm::runtime::Array< tvm::script::printer::Doc >, tvm::runtime::Array< tvm::IRModule >, tvm::runtime::Array< tvm::Constructor >, tvm::runtime::Array< tvm::te::Schedule >, tvm::runtime::Array< tvm::relax::Knob >, tvm::runtime::Array< tvm::Type >, tvm::runtime::Array< tvm::IntImm >, tvm::runtime::Array< tvm::instrument::PassInstrument >, tvm::runtime::Array< tvm::tir::IndexMap >, tvm::runtime::Array< tvm::script::ir_builder::IRBuilderFrame >, tvm::runtime::Array< tvm::tir::Buffer >, tvm::runtime::Array< tvm::RelayExpr >, tvm::runtime::Array< tvm::tir::Stmt >, tvm::runtime::Array< tvm::relay::Pattern >, tvm::runtime::Array< tvm::auto_scheduler::Step >, tvm::runtime::Array< tvm::arith::IterSplitExpr >, tvm::runtime::Array< tvm::runtime::String >, tvm::runtime::Array< tvm::Target >, tvm::runtime::Map< tvm::relay::Var, tvm::runtime::ObjectRef >, tvm::runtime::Map< tvm::GlobalVar, tvm::BaseFunc >, tvm::runtime::Map< tvm::runtime::String, tvm::runtime::Map< tvm::runtime::String, tvm::runtime::ObjectRef > >, tvm::runtime::Map< tvm::runtime::String, tvm::relax::DFPattern >, tvm::runtime::Map< tvm::tir::Var, tvm::PrimExpr >, tvm::runtime::Map< tvm::tir::Instruction, tvm::runtime::ObjectRef >, tvm::runtime::Map< tvm::Target, tvm::Integer >, tvm::runtime::Map< tvm::GlobalTypeVar, tvm::TypeData >, tvm::runtime::Map< tvm::te::Operation, tvm::te::Stage >, tvm::runtime::Map< tvm::runtime::String, tvm::RelayExpr >, tvm::runtime::Map< tvm::tir::Var, tvm::tir::Buffer >, tvm::runtime::Map< tvm::relax::Var, tvm::RelayExpr >, tvm::runtime::Map< tvm::SourceName, tvm::Source >, tvm::runtime::Map< tvm::runtime::String, tvm::runtime::Array< tvm::GlobalInfo > >, tvm::runtime::Map< tvm::runtime::String, tvm::relax::Choice >, tvm::runtime::Map< tvm::runtime::ObjectRef, tvm::runtime::String >, tvm::runtime::Map< tvm::tir::Var, tvm::tir::IterVar >, tvm::runtime::Map< tvm::relax::Var, tvm::runtime::Array< tvm::relax::Var > >, tvm::runtime::Map< tvm::tir::Var, tvm::Range >, tvm::runtime::Map< tvm::ObjectPath, tvm::runtime::String >, tvm::runtime::Map< tvm::runtime::String, tvm::GlobalTypeVar >, tvm::runtime::Map< tvm::RelayExpr, tvm::relax::Var >, tvm::runtime::Map< tvm::runtime::String, tvm::GlobalVar >, tvm::runtime::Map< tvm::runtime::String, tvm::runtime::ObjectRef >, tvm::runtime::Map< tvm::tir::usmp::BufferInfo, tvm::tir::Stmt >, tvm::runtime::Map< tvm::tir::Buffer, tvm::tir::Buffer >, tvm::runtime::Map< tvm::tir::IterVar, tvm::te::IterVarAttr >, tvm::runtime::Optional< tvm::meta_schedule::SearchStrategy >, tvm::runtime::Optional< tvm::meta_schedule::CostModel >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::ScheduleRule > >, tvm::runtime::Optional< tvm::tir::IterVar >, tvm::runtime::Optional< tvm::runtime::Array< tvm::tir::BufferRegion > >, tvm::runtime::Optional< tvm::Integer >, tvm::runtime::Optional< tvm::runtime::Map< tvm::meta_schedule::Mutator, tvm::FloatImm > >, tvm::runtime::Optional< tvm::runtime::NDArray >, tvm::runtime::Optional< tvm::Range >, tvm::runtime::Optional< tvm::runtime::ObjectRef >, tvm::runtime::Optional< tvm::meta_schedule::SpaceGenerator >, tvm::runtime::Optional< tvm::runtime::Map< tvm::runtime::String, tvm::runtime::NDArray > >, tvm::runtime::Optional< tvm::script::printer::ExprDoc >, tvm::runtime::Optional< tvm::runtime::PackedFunc >, tvm::runtime::Optional< tvm::VDevice >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::RunnerFuture > >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::ArgInfo > >, tvm::runtime::Optional< tvm::runtime::Array< tvm::auto_scheduler::MeasureCallback > >, tvm::runtime::Optional< tvm::Bool >, tvm::runtime::Optional< tvm::relax::StructInfo >, tvm::runtime::Optional< tvm::runtime::Array< tvm::PrimExpr > >, tvm::runtime::Optional< tvm::relax::PrimValue >, tvm::runtime::Optional< tvm::runtime::Array< tvm::IntImm > >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::Postproc > >, tvm::runtime::Optional< tvm::runtime::Map< tvm::runtime::String, tvm::runtime::ObjectRef > >, tvm::runtime::Optional< tvm::runtime::Array< tvm::tir::Stmt > >, tvm::runtime::Optional< tvm::relay::DFPattern >, tvm::runtime::Optional< tvm::runtime::Array< tvm::Integer > >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::MeasureCandidate > >, tvm::runtime::Optional< tvm::PrimExpr >, tvm::runtime::Optional< tvm::TypedEnvFunc >, tvm::runtime::Optional< tvm::runtime::Array< tvm::relax::StructInfo > >, tvm::runtime::Optional< tvm::FloatImm >, tvm::runtime::Optional< tvm::IRModule >, tvm::runtime::Optional< tvm::runtime::Array< tvm::FloatImm > >, tvm::runtime::Optional< tvm::DiagnosticContext >, tvm::runtime::Optional< tvm::Type >, tvm::runtime::Optional< tvm::IntImm >, tvm::runtime::Optional< tvm::runtime::Array< tvm::meta_schedule::BuilderResult > >, tvm::runtime::Optional< tvm::RelayExpr >, tvm::runtime::Optional< tvm::relax::Function >, tvm::runtime::Optional< tvm::meta_schedule::Database >, tvm::runtime::Optional< tvm::runtime::Map< tvm::runtime::String, tvm::Bool > >, tvm::runtime::Optional< tvm::tir::Stmt >, tvm::runtime::Optional< tvm::Target >, tvm::runtime::Optional< tvm::runtime::String >, tvm::AffineType, tvm::AttrFieldInfo, tvm::Attrs, tvm::BaseExpr, tvm::CompilationConfig, tvm::ConstantInfo, tvm::ConstantMemoryPools, tvm::Diagnostic, tvm::DiagnosticContext, tvm::DiagnosticRenderer, tvm::EnvFunc, tvm::GenericFunc, tvm::GlobalInfo, tvm::GlobalVarSupply, tvm::IRModule, tvm::MemoryInfo, tvm::NameSupply, tvm::ObjectPath, tvm::ObjectPathPair, tvm::PoolInfo, tvm::PoolInfoProperties, tvm::PrinterConfig, tvm::Range, tvm::Source, tvm::SourceMap, tvm::SourceName, tvm::Span, tvm::Target, tvm::TargetKind, tvm::TargetTag, tvm::Type, tvm::TypeReporter, tvm::TypedEnvFunc< R(Args...)>, tvm::VirtualDevice, tvm::WorkspaceMemoryPools, tvm::arith::ConstIntBound, tvm::arith::IntConstraints, tvm::arith::IntConstraintsTransform, tvm::arith::IntGroupBounds, tvm::arith::IntSet, tvm::arith::IterMapResult, tvm::arith::IterMark, tvm::arith::ModularSet, tvm::auto_scheduler::AccessAnalyzer, tvm::auto_scheduler::AttachMap, tvm::auto_scheduler::BuildResult, tvm::auto_scheduler::ComputeDAG, tvm::auto_scheduler::CostModel, tvm::auto_scheduler::HardwareParams, tvm::auto_scheduler::Iterator, tvm::auto_scheduler::MeasureCallback, tvm::auto_scheduler::MeasureInput, tvm::auto_scheduler::MeasureResult, tvm::auto_scheduler::ProgramBuilder, tvm::auto_scheduler::ProgramMeasurer, tvm::auto_scheduler::ProgramRunner, tvm::auto_scheduler::RecordReader, tvm::auto_scheduler::SearchCallback, tvm::auto_scheduler::SearchPolicy, tvm::auto_scheduler::SearchTask, tvm::auto_scheduler::Stage, tvm::auto_scheduler::State, tvm::auto_scheduler::Step, tvm::auto_scheduler::TuningOptions, tvm::instrument::PassInstrument, tvm::meta_schedule::ArgInfo, tvm::meta_schedule::Builder, tvm::meta_schedule::BuilderInput, tvm::meta_schedule::BuilderResult, tvm::meta_schedule::CostModel, tvm::meta_schedule::Database, tvm::meta_schedule::ExtractedTask, tvm::meta_schedule::FeatureExtractor, tvm::meta_schedule::MeasureCallback, tvm::meta_schedule::MeasureCandidate, tvm::meta_schedule::Mutator, tvm::meta_schedule::Postproc, tvm::meta_schedule::Profiler, tvm::meta_schedule::Runner, tvm::meta_schedule::RunnerFuture, tvm::meta_schedule::RunnerInput, tvm::meta_schedule::RunnerResult, tvm::meta_schedule::ScheduleRule, tvm::meta_schedule::SearchStrategy, tvm::meta_schedule::SpaceGenerator, tvm::meta_schedule::TaskRecord, tvm::meta_schedule::TaskScheduler, tvm::meta_schedule::TuneContext, tvm::meta_schedule::TuningRecord, tvm::meta_schedule::Workload, tvm::relax::Binding, tvm::relax::BindingBlock, tvm::relax::BlockBuilder, tvm::relax::Choice, tvm::relax::DFConstraint, tvm::relax::DFPattern, tvm::relax::Database, tvm::relax::DataflowBlockRewrite, tvm::relax::ExecBuilder, tvm::relax::Id, tvm::relax::Knob, tvm::relax::MatchResult, tvm::relax::NestedMsg< T >, tvm::relax::PatternContext, tvm::relax::PatternSeq, tvm::relax::StructInfo, tvm::relax::Trace, tvm::relax::TuningRecord, tvm::relax::distributed::Placement, tvm::relax::distributed::PlacementSpec, tvm::relax::transform::FusionPattern, tvm::relax::transform::PatternCheckContext, tvm::relay::Clause, tvm::relay::ConstructorValue, tvm::relay::DFPattern, tvm::relay::DFPatternCallback, tvm::relay::Executor, tvm::relay::Id, tvm::relay::OpImplementation, tvm::relay::OpSpecialization, tvm::relay::OpStrategy, tvm::relay::Pattern, tvm::relay::RecClosure, tvm::relay::RefValue, tvm::relay::Runtime, tvm::runtime::ADT, tvm::runtime::Array< T, typename >, tvm::runtime::Closure, tvm::runtime::DRef, tvm::runtime::Map< K, V, typename, typename >, tvm::runtime::Module, tvm::runtime::NDArray, tvm::runtime::Optional< T >, tvm::runtime::PackedFunc, tvm::runtime::Session, tvm::runtime::ShapeTuple, tvm::runtime::String, tvm::runtime::Timer, tvm::runtime::Variant< V >, tvm::runtime::cuda_ipc::CUDAIPCMemory, tvm::runtime::memory::Storage, tvm::runtime::metadata::MetadataBase, tvm::runtime::profiling::DeviceWrapper, tvm::runtime::profiling::MetricCollector, tvm::runtime::profiling::Report, tvm::runtime::relax_vm::VMExtension, tvm::script::ir_builder::IRBuilder, tvm::script::ir_builder::IRBuilderFrame, tvm::script::printer::Doc, tvm::script::printer::Frame, tvm::script::printer::IRDocsifier, tvm::te::IterVarAttr, tvm::te::IterVarRelation, tvm::te::Operation, tvm::te::Schedule, tvm::te::SpecializedCondition, tvm::te::Stage, tvm::te::TensorIntrin, tvm::te::TensorIntrinCall, tvm::tir::BijectiveLayout, tvm::tir::BlockDependenceInfo, tvm::tir::BlockRV, tvm::tir::BlockScope, tvm::tir::Buffer, tvm::tir::BufferRegion, tvm::tir::CommReducer, tvm::tir::DataProducer, tvm::tir::Dependency, tvm::tir::IndexMap, tvm::tir::Instruction, tvm::tir::InstructionKind, tvm::tir::IterVar, tvm::tir::Layout, tvm::tir::LoopRV, tvm::tir::MatchBufferRegion, tvm::tir::Schedule, tvm::tir::ScheduleState, tvm::tir::Stmt, tvm::tir::StmtSRef, tvm::tir::TensorIntrin, tvm::tir::Trace, tvm::tir::usmp::AllocatedPoolInfo, tvm::tir::usmp::BufferInfo, tvm::tir::usmp::BufferInfoAnalysis, tvm::tir::usmp::PoolAllocation, tvm::transform::Pass, tvm::transform::PassContext, and tvm::transform::PassInfo.

Collaboration diagram for tvm::runtime::ObjectRef:

Public Types

using ContainerType = Object
 type indicate the container type. More...
 

Public Member Functions

 ObjectRef ()=default
 default constructor More...
 
 ObjectRef (ObjectPtr< Object > data)
 Constructor from existing object ptr. More...
 
bool same_as (const ObjectRef &other) const
 Comparator. More...
 
bool operator== (const ObjectRef &other) const
 Comparator. More...
 
bool operator!= (const ObjectRef &other) const
 Comparator. More...
 
bool operator< (const ObjectRef &other) const
 Comparator. More...
 
bool defined () const
 
const Objectget () const
 
const Objectoperator-> () const
 
bool unique () const
 
int use_count () const
 
template<typename ObjectType , typename = std::enable_if_t<std::is_base_of_v<Object, ObjectType>>>
const ObjectType * as () const
 Try to downcast the internal Object to a raw pointer of a corresponding type. More...
 
template<typename ObjectRefType , typename = std::enable_if_t<std::is_base_of_v<ObjectRef, ObjectRefType>>>
Optional< ObjectRefType > as () const
 Try to downcast the ObjectRef to a Optional<T> of the requested type. More...
 

Static Public Attributes

static constexpr bool _type_is_nullable = true
 

Protected Member Functions

Objectget_mutable () const
 

Static Protected Member Functions

template<typename T >
static T DowncastNoCheck (ObjectRef ref)
 Internal helper function downcast a ref without check. More...
 
static void FFIClearAfterMove (ObjectRef *ref)
 Clear the object ref data field without DecRef after we successfully moved the field. More...
 
template<typename ObjectType >
static ObjectPtr< ObjectType > GetDataPtr (const ObjectRef &ref)
 Internal helper function get data_ as ObjectPtr of ObjectType. More...
 

Protected Attributes

ObjectPtr< Objectdata_
 Internal pointer that backs the reference. More...
 

Friends

struct ObjectPtrHash
 
class TVMRetValue
 
class TVMArgsSetter
 
class ObjectInternal
 
template<typename SubRef , typename BaseRef >
SubRef Downcast (BaseRef ref)
 Downcast a base reference type to a more specific type. More...
 

Detailed Description

Base class of all object reference.

Member Typedef Documentation

◆ ContainerType

type indicate the container type.

Constructor & Destructor Documentation

◆ ObjectRef() [1/2]

tvm::runtime::ObjectRef::ObjectRef ( )
default

◆ ObjectRef() [2/2]

tvm::runtime::ObjectRef::ObjectRef ( ObjectPtr< Object data)
inlineexplicit

Constructor from existing object ptr.

Member Function Documentation

◆ as() [1/2]

template<typename ObjectType , typename >
const ObjectType * tvm::runtime::ObjectRef::as
inline

Try to downcast the internal Object to a raw pointer of a corresponding type.

The function will return a nullptr if the cast failed.

if (const AddNode *ptr = node_ref.as<AddNode>()) {
  // This is an add node
}
Template Parameters
ObjectTypethe target type, must be a subtype of Object

◆ as() [2/2]

template<typename ObjectRefType , typename >
Optional< ObjectRefType > tvm::runtime::ObjectRef::as
inline

Try to downcast the ObjectRef to a Optional<T> of the requested type.

The function will return a NullOpt if the cast failed.

if (Optional<Add> opt = node_ref.as<Add>()) {
  // This is an add node
}
Note
While this method is declared in <tvm/runtime/object.h>, the implementation is in <tvm/runtime/container/optional.h> to prevent circular includes. This additional include file is only required in compilation units that uses this method.
Template Parameters
ObjectRefTypethe target type, must be a subtype of ObjectRef

◆ defined()

bool tvm::runtime::ObjectRef::defined ( ) const
inline
Returns
whether the object is defined(not null).

◆ DowncastNoCheck()

template<typename T >
static T tvm::runtime::ObjectRef::DowncastNoCheck ( ObjectRef  ref)
inlinestaticprotected

Internal helper function downcast a ref without check.

Note
Only used for internal dev purposes.
Template Parameters
TThe target reference type.
Returns
The casted result.

◆ FFIClearAfterMove()

static void tvm::runtime::ObjectRef::FFIClearAfterMove ( ObjectRef ref)
inlinestaticprotected

Clear the object ref data field without DecRef after we successfully moved the field.

Parameters
refThe reference data.

◆ get()

const Object* tvm::runtime::ObjectRef::get ( ) const
inline
Returns
the internal object pointer

◆ get_mutable()

Object* tvm::runtime::ObjectRef::get_mutable ( ) const
inlineprotected
Returns
return a mutable internal ptr, can be used by sub-classes.

◆ GetDataPtr()

template<typename ObjectType >
static ObjectPtr<ObjectType> tvm::runtime::ObjectRef::GetDataPtr ( const ObjectRef ref)
inlinestaticprotected

Internal helper function get data_ as ObjectPtr of ObjectType.

Note
only used for internal dev purpose.
Template Parameters
ObjectTypeThe corresponding object type.
Returns
the corresponding type.

◆ operator!=()

bool tvm::runtime::ObjectRef::operator!= ( const ObjectRef other) const
inline

Comparator.

Parameters
otherAnother object ref.
Returns
the compare result.

◆ operator->()

const Object* tvm::runtime::ObjectRef::operator-> ( ) const
inline
Returns
the internal object pointer

◆ operator<()

bool tvm::runtime::ObjectRef::operator< ( const ObjectRef other) const
inline

Comparator.

Parameters
otherAnother object ref by address.
Returns
the compare result.

◆ operator==()

bool tvm::runtime::ObjectRef::operator== ( const ObjectRef other) const
inline

Comparator.

Parameters
otherAnother object ref.
Returns
the compare result.

◆ same_as()

bool tvm::runtime::ObjectRef::same_as ( const ObjectRef other) const
inline

Comparator.

Parameters
otherAnother object ref.
Returns
the compare result.

◆ unique()

bool tvm::runtime::ObjectRef::unique ( ) const
inline
Returns
whether the reference is unique

◆ use_count()

int tvm::runtime::ObjectRef::use_count ( ) const
inline
Returns
The use count of the ptr, for debug purposes

Friends And Related Function Documentation

◆ Downcast

template<typename SubRef , typename BaseRef >
SubRef Downcast ( BaseRef  ref)
friend

Downcast a base reference type to a more specific type.

Parameters
refThe input reference
Returns
The corresponding SubRef.
Template Parameters
SubRefThe target specific reference type.
BaseRefthe current reference type.

◆ ObjectInternal

friend class ObjectInternal
friend

◆ ObjectPtrHash

friend struct ObjectPtrHash
friend

◆ TVMArgsSetter

friend class TVMArgsSetter
friend

◆ TVMRetValue

friend class TVMRetValue
friend

Member Data Documentation

◆ _type_is_nullable

constexpr bool tvm::runtime::ObjectRef::_type_is_nullable = true
staticconstexpr

◆ data_

ObjectPtr<Object> tvm::runtime::ObjectRef::data_
protected

Internal pointer that backs the reference.

Examples
/workspace/include/tvm/script/ir_builder/base.h.

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