tvm
|
Transformation steps. These steps are used to manipulate LoopState
. They are similar to the schedule primitives in te::Stage.
More...
#include <dmlc/common.h>
#include <dmlc/json.h>
#include <tvm/node/node.h>
#include <tvm/te/schedule.h>
#include <vector>
Go to the source code of this file.
Namespaces | |
tvm | |
runtime implementation for LibTorch/TorchScript. | |
tvm::auto_scheduler | |
Typedefs | |
typedef Map< tvm::te::Stage, Array< tir::IterVar >, ObjectHash, ObjectEqual > | tvm::auto_scheduler::StageToAxesMap |
Enumerations | |
enum class | tvm::auto_scheduler::IteratorKind : int { tvm::auto_scheduler::kSpatial = 0 , tvm::auto_scheduler::kReduction = 1 , tvm::auto_scheduler::kMixed = 2 , tvm::auto_scheduler::kSpecial = 3 } |
The type of an iterator. More... | |
enum class | tvm::auto_scheduler::IteratorAnnotation : int { tvm::auto_scheduler::kNone = 0 , tvm::auto_scheduler::kUnroll = 1 , tvm::auto_scheduler::kVectorize = 2 , tvm::auto_scheduler::kParallel = 3 , tvm::auto_scheduler::kVThread = 4 , tvm::auto_scheduler::kBlockX = 5 , tvm::auto_scheduler::kThreadX = 6 , tvm::auto_scheduler::kBlockY = 7 , tvm::auto_scheduler::kThreadY = 8 , tvm::auto_scheduler::kBlockZ = 9 , tvm::auto_scheduler::kThreadZ = 10 , tvm::auto_scheduler::kTensorize = 11 } |
The type of an iterator's annotation. More... | |
Functions | |
void | tvm::auto_scheduler::UpdateStageToAxesMap (const te::Stage &stage, StageToAxesMap *stage_to_axes) |
Update the current stage IterVar information to StageToAxesMap. More... | |
Step | tvm::auto_scheduler::StepReadFromRecord (dmlc::JSONReader *reader) |
Read a step record from JSONReader and create the corresponding step. More... | |
void | tvm::auto_scheduler::StepApplyToState (const Step &step, State *state, const ComputeDAG &dag) |
Apply a general step to a State with runtime dynamic dispatching. More... | |
void | tvm::auto_scheduler::StepApplyToSchedule (const Step &step, Array< te::Stage > *stages, StageToAxesMap *stage_to_axes, te::Schedule *schedule, const Array< Step > &transform_steps) |
Apply a general step to tvm.schedule with runtime dynamic dispatching. More... | |
String | tvm::auto_scheduler::StepPrintAsPythonAPI (const Step &step, Array< te::Stage > *stages, StageToAxesMap *stage_to_axes, te::Schedule *schedule, const Array< Step > &transform_steps) |
Print a general step as equivalent python schedule API with runtime dynamic dispatching. More... | |
Variables | |
const char * | tvm::auto_scheduler::IteratorAnnotationString [] |
Transformation steps. These steps are used to manipulate LoopState
. They are similar to the schedule primitives in te::Stage.
FuseStepNode
, FuseStep
in transform_steps.h
, and implement its first construction function FuseStep::FuseStep()
in transform_steps.cc
.FuseStepNode::ApplyToSchedule()
and FuseStepNode::PrintAsPythonAPI()
.FuseStepNode::ApplyToState
and the state API State::fuse
.StepApplyToState
, StepApplyToSchedule
, and StepPrintAsPythonAPI
.FuseStepNode::WriteToRecord
which takes a mutable JSONWriter pointer as input and output the record to it.StepReadFromRecord
.loop_state.py
with necessary unit tests. The test should at lease cover two parts: the functional test and the record serialization test.