tvm
|
An execution trace of a scheduling program. More...
#include <trace.h>
Public Member Functions | |
void | VisitAttrs (tvm::AttrVisitor *v) |
TVM_DECLARE_FINAL_OBJECT_INFO (TraceNode, runtime::Object) | |
Optional< ObjectRef > | 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, ObjectRef decision) |
Append a new instruction with a random decision to the trace. More... | |
Optional< Instruction > | Pop () |
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, 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) | |
Object & | operator= (const Object &other) |
Object & | operator= (Object &&other) |
Public Attributes | |
Array< Instruction > | insts |
The instructions invoked so far in the program execution. More... | |
Map< Instruction, ObjectRef > | decisions |
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... | |
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.
void tvm::tir::TraceNode::Append | ( | Instruction | inst | ) |
Append a new instruction to the trace.
inst | The new instruction to be appended |
void tvm::tir::TraceNode::Append | ( | Instruction | inst, |
ObjectRef | decision | ||
) |
Append a new instruction with a random decision to the trace.
inst | The new instruction to be appended |
decision | The random decision made on this instruction The type of decision depends on the instruction, e.g. the decision of SamplePerfectTile has type Array<IntImm> |
void tvm::tir::TraceNode::ApplyToSchedule | ( | Schedule | sch, |
bool | remove_postproc, | ||
FTraceDecisionProvider | decision_provider = nullptr |
||
) | const |
Apply the trace to a TensorIR schedule.
sch | The schedule to be applied onto |
remove_postproc | If postprocessing instructions are removed |
decision_provider | A callback that allows users to mutate decisions on the fly when applying instructions. |
ObjectRef tvm::tir::TraceNode::AsJSON | ( | bool | remove_postproc | ) | const |
Serialize the trace as a JSON-style object.
remove_postproc | If postprocessing instructions are removed |
Serialize the trace as a sequence of python statements.
remove_postproc | If postprocessing instructions are removed |
Optional<ObjectRef> tvm::tir::TraceNode::GetDecision | ( | const Instruction & | inst | ) | const |
Retrieve the decision made on a specific instruction.
inst | The instruction whose decision is to be retrieved |
Optional<Instruction> tvm::tir::TraceNode::Pop | ( | ) |
Remove the last instruction, along with the decision made on that instruction, if any.
Trace tvm::tir::TraceNode::Simplified | ( | bool | remove_postproc | ) | const |
Simplify the trace with dead-code elimination.
remove_postproc | If postprocessing instructions are removed |
tvm::tir::TraceNode::TVM_DECLARE_FINAL_OBJECT_INFO | ( | TraceNode | , |
runtime::Object | |||
) |
|
inline |
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.
inst | The instruction whose decision is to be changed |
decision | The decision to be changed to |
remove_postproc | If postprocessing instructions are removed |
|
staticconstexpr |
Map<Instruction, ObjectRef> tvm::tir::TraceNode::decisions |
The random decisions made upon those instructions.
Array<Instruction> tvm::tir::TraceNode::insts |
The instructions invoked so far in the program execution.