19 #ifndef TVM_TIR_SCHEDULE_TRACE_H_
20 #define TVM_TIR_SCHEDULE_TRACE_H_
40 ffi::TypedFunction<Any(
const Instruction& inst,
const Array<Any>& inputs,
41 const Array<Any>& attrs,
const Any& decision)>;
67 refl::ObjectDef<TraceNode>()
72 static constexpr
const char*
_type_key =
"tir.Trace";
99 Optional<Instruction>
Pop();
115 ObjectRef
AsJSON(
bool remove_postproc)
const;
121 Array<String>
AsPython(
bool remove_postproc)
const;
143 class Trace :
public runtime::ObjectRef {
152 explicit Trace(Array<Instruction> insts, Map<Instruction, Any> decisions);
Managed reference to InstructionNode.
Definition: instruction.h:191
Managed reference to ScheduleNode.
Definition: schedule.h:880
An execution trace of a scheduling program.
Definition: trace.h:58
static void RegisterReflection()
Definition: trace.h:65
Map< Instruction, Any > decisions
The random decisions made upon those instructions.
Definition: trace.h:63
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...
ObjectRef AsJSON(bool remove_postproc) const
Serialize the trace as a JSON-style object.
void ApplyToSchedule(Schedule sch, bool remove_postproc, FTraceDecisionProvider decision_provider=nullptr) const
Apply the trace to a TensorIR schedule.
void Append(Instruction inst, Any decision)
Append a new instruction with a random decision to the trace.
TVM_DECLARE_FINAL_OBJECT_INFO(TraceNode, runtime::Object)
Optional< Instruction > Pop()
Remove the last instruction, along with the decision made on that instruction, if any.
Array< String > AsPython(bool remove_postproc) const
Serialize the trace as a sequence of python statements.
Trace Simplified(bool remove_postproc) const
Simplify the trace with dead-code elimination.
static constexpr const char * _type_key
Definition: trace.h:72
Array< Instruction > insts
The instructions invoked so far in the program execution.
Definition: trace.h:61
Any GetDecision(const Instruction &inst) const
Retrieve the decision made on a specific instruction.
void Append(Instruction inst)
Append a new instruction to the trace.
Managed reference to TraceNode.
Definition: trace.h:143
TVM_DEFINE_MUTABLE_NOTNULLABLE_OBJECT_REF_METHODS(Trace, runtime::ObjectRef, TraceNode)
Trace()
Default constructor. Creating an empty trace.
Trace(Array< Instruction > insts, Map< Instruction, Any > decisions)
Constructor. Creating a trace from existing instructions and their decisions.
static void ApplyJSONToSchedule(ObjectRef json, Schedule sch)
Apply a JSON-serialized trace to a TensorIR schedule.
Definition: repr_printer.h:91
ffi::TypedFunction< Any(const Instruction &inst, const Array< Any > &inputs, const Array< Any > &attrs, const Any &decision)> FTraceDecisionProvider
A callback that allows users to mutate decisions on the fly when applying instructions....
Definition: trace.h:41
Performance counters for profiling via the PAPI library.
Definition: analyzer.h:37