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

An execution trace of a scheduling program. More...

#include <trace.h>

Inheritance diagram for tvm::tir::TraceNode:
Collaboration diagram for tvm::tir::TraceNode:

Public Member Functions

void VisitAttrs (tvm::AttrVisitor *v)
 
 TVM_DECLARE_FINAL_OBJECT_INFO (TraceNode, runtime::Object)
 
Optional< ObjectRefGetDecision (const Instruction &inst) const
 Retrieve the decision made on a specific instruction. More...
 
void Append (Instruction inst)
 Append a new instruction to the trace. More...
 
void Append (Instruction inst, ObjectRef decision)
 Append a new instruction with a random decision to the trace. More...
 
Optional< InstructionPop ()
 Remove the last instruction, along with the decision made on that instruction, if any. More...
 
void ApplyToSchedule (Schedule sch, bool remove_postproc, FTraceDecisionProvider decision_provider=nullptr) const
 Apply the trace to a TensorIR schedule. More...
 
ObjectRef AsJSON (bool remove_postproc) const
 Serialize the trace as a JSON-style object. More...
 
Array< StringAsPython (bool remove_postproc) const
 Serialize the trace as a sequence of python statements. More...
 
Trace WithDecision (Instruction inst, ObjectRef decision, bool remove_postproc) const
 Create a new trace with an instruction whose decision is changed, assuming this instruction exists in the resulting trace. More...
 
Trace Simplified (bool remove_postproc) const
 Simplify the trace with dead-code elimination. More...
 
- 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< Instructioninsts
 The instructions invoked so far in the program execution. More...
 
Map< Instruction, ObjectRefdecisions
 The random decisions made upon those instructions. More...
 

Static Public Attributes

static constexpr const char * _type_key = "tir.Trace"
 
- 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

An execution trace of a scheduling program.

A trace has two parts: 1) The instructions invoked so far in the program execution 2) The random decisions made upon those instructions, if any

A trace can be serialized to: 1) Roundtrippable JSON format: can be saved to file and loaded back 2) Python syntax: allows users to copy-paste the trace to reproduce the scheduling process

A trace can be applied to a TensorIR schedule by re-applying all its instructions possibly with their decisions accordingly. Re-sampling is invoked if a sampling instruction doesn't have its corresponding decision; Otherwise the existing decision will be reused accordingly.

Member Function Documentation

◆ Append() [1/2]

void tvm::tir::TraceNode::Append ( Instruction  inst)

Append a new instruction to the trace.

Parameters
instThe new instruction to be appended

◆ Append() [2/2]

void tvm::tir::TraceNode::Append ( Instruction  inst,
ObjectRef  decision 
)

Append a new instruction with a random decision to the trace.

Parameters
instThe new instruction to be appended
decisionThe random decision made on this instruction The type of decision depends on the instruction, e.g. the decision of SamplePerfectTile has type Array<IntImm>

◆ ApplyToSchedule()

void tvm::tir::TraceNode::ApplyToSchedule ( Schedule  sch,
bool  remove_postproc,
FTraceDecisionProvider  decision_provider = nullptr 
) const

Apply the trace to a TensorIR schedule.

Parameters
schThe schedule to be applied onto
remove_postprocIf postprocessing instructions are removed
decision_providerA callback that allows users to mutate decisions on the fly when applying instructions.
See also
FTraceDecisionProvider

◆ AsJSON()

ObjectRef tvm::tir::TraceNode::AsJSON ( bool  remove_postproc) const

Serialize the trace as a JSON-style object.

Parameters
remove_postprocIf postprocessing instructions are removed
Returns
The JSON-style object

◆ AsPython()

Array<String> tvm::tir::TraceNode::AsPython ( bool  remove_postproc) const

Serialize the trace as a sequence of python statements.

Parameters
remove_postprocIf postprocessing instructions are removed
Returns
A sequence of python statements

◆ GetDecision()

Optional<ObjectRef> tvm::tir::TraceNode::GetDecision ( const Instruction inst) const

Retrieve the decision made on a specific instruction.

Parameters
instThe instruction whose decision is to be retrieved
Returns
The corresponding decision; NullOpt if there is no decision made on the instruction

◆ Pop()

Optional<Instruction> tvm::tir::TraceNode::Pop ( )

Remove the last instruction, along with the decision made on that instruction, if any.

Returns
The instruction removed; NullOpt if the trace is empty

◆ Simplified()

Trace tvm::tir::TraceNode::Simplified ( bool  remove_postproc) const

Simplify the trace with dead-code elimination.

Parameters
remove_postprocIf postprocessing instructions are removed
Returns
A simplified trace

◆ TVM_DECLARE_FINAL_OBJECT_INFO()

tvm::tir::TraceNode::TVM_DECLARE_FINAL_OBJECT_INFO ( TraceNode  ,
runtime::Object   
)

◆ VisitAttrs()

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

◆ WithDecision()

Trace tvm::tir::TraceNode::WithDecision ( Instruction  inst,
ObjectRef  decision,
bool  remove_postproc 
) const

Create a new trace with an instruction whose decision is changed, assuming this instruction exists in the resulting trace.

Parameters
instThe instruction whose decision is to be changed
decisionThe decision to be changed to
remove_postprocIf postprocessing instructions are removed
Returns
The new trace with the decision changed

Member Data Documentation

◆ _type_key

constexpr const char* tvm::tir::TraceNode::_type_key = "tir.Trace"
staticconstexpr

◆ decisions

Map<Instruction, ObjectRef> tvm::tir::TraceNode::decisions

The random decisions made upon those instructions.

◆ insts

Array<Instruction> tvm::tir::TraceNode::insts

The instructions invoked so far in the program execution.


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