tvm
Public Member Functions | Static 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

 TVM_DECLARE_FINAL_OBJECT_INFO (TraceNode, runtime::Object)
 
Any GetDecision (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, Any 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< String > AsPython (bool remove_postproc) const
 Serialize the trace as a sequence of python statements. More...
 
Trace WithDecision (Instruction inst, Any 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...
 

Static Public Member Functions

static void RegisterReflection ()
 

Public Attributes

Array< Instructioninsts
 The instructions invoked so far in the program execution. More...
 
Map< Instruction, Any > decisions
 The random decisions made upon those instructions. More...
 

Static Public Attributes

static constexpr const char * _type_key = "tir.Trace"
 

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,
Any  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()

Any 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; nullptr 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; std::nullopt if the trace is empty

◆ RegisterReflection()

static void tvm::tir::TraceNode::RegisterReflection ( )
inlinestatic

◆ 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   
)

◆ WithDecision()

Trace tvm::tir::TraceNode::WithDecision ( Instruction  inst,
Any  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, Any> 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: