tvm
Loading...
Searching...
No Matches
tune_context.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19#ifndef TVM_S_TIR_META_SCHEDULE_TUNE_CONTEXT_H_
20#define TVM_S_TIR_META_SCHEDULE_TUNE_CONTEXT_H_
21
22#include <tvm/ffi/container/array.h>
23#include <tvm/ffi/container/map.h>
24#include <tvm/ffi/function.h>
25#include <tvm/ffi/optional.h>
26#include <tvm/ffi/reflection/registry.h>
27#include <tvm/ffi/string.h>
28#include <tvm/ir/expr.h>
29#include <tvm/ir/module.h>
30#include <tvm/ir/prim/expr.h>
36#include <tvm/target/target.h>
37
38namespace tvm {
39namespace s_tir {
40namespace meta_schedule {
41
42class TaskSchedulerObj;
43class MeasureCallback;
44class TuneContext;
45
47class TuneContextObj : public ffi::Object {
48 public:
50
52 ffi::Optional<IRModule> mod;
54 ffi::Optional<Target> target;
56 ffi::Optional<SpaceGenerator> space_generator;
58 ffi::Optional<SearchStrategy> search_strategy;
60 ffi::Optional<ffi::String> task_name;
66 ffi::Function logger;
67
68 static void RegisterReflection() {
69 namespace refl = tvm::ffi::reflection;
70 refl::ObjectDef<TuneContextObj>()
71 .def_ro("mod", &TuneContextObj::mod)
72 .def_ro("target", &TuneContextObj::target)
73 .def_ro("space_generator", &TuneContextObj::space_generator)
74 .def_ro("search_strategy", &TuneContextObj::search_strategy)
75 .def_ro("task_name", &TuneContextObj::task_name)
76 .def_ro("num_threads", &TuneContextObj::num_threads)
77 .def_ro("rand_state", &TuneContextObj::rand_state);
78 // `logger` is not registered
79 }
80
84 void Initialize();
90
91 static constexpr const bool _type_mutable = true;
92 TVM_FFI_DECLARE_OBJECT_INFO_FINAL("s_tir.meta_schedule.TuneContext", TuneContextObj, ffi::Object);
93};
94
99class TuneContext : public ffi::ObjectRef {
100 public:
106 explicit TuneContext(ffi::ObjectPtr<TuneContextObj> data) : ffi::ObjectRef(data) {
107 TVM_FFI_ICHECK(data != nullptr);
108 }
120 TVM_DLL explicit TuneContext(ffi::Optional<IRModule> mod, ffi::Optional<Target> target,
121 ffi::Optional<SpaceGenerator> space_generator,
122 ffi::Optional<SearchStrategy> search_strategy,
123 ffi::Optional<ffi::String> task_name, int num_threads,
124 TRandState rand_state, ffi::Function logger);
126};
127
128} // namespace meta_schedule
129} // namespace s_tir
130} // namespace tvm
131
132#endif // TVM_S_TIR_META_SCHEDULE_TUNE_CONTEXT_H_
int64_t TRandState
Definition random_engine.h:47
The auto tuning context.
Definition tune_context.h:47
void Initialize()
Initialize members that needs initialization with tune context.
int num_threads
The number of threads to be used.
Definition tune_context.h:62
ffi::Optional< SearchStrategy > search_strategy
The search strategy.
Definition tune_context.h:58
TRandState rand_state
The random state.
Definition tune_context.h:64
ffi::Optional< SpaceGenerator > space_generator
The design space generator.
Definition tune_context.h:56
ffi::Optional< ffi::String > task_name
The name of the tuning task.
Definition tune_context.h:60
TuneContext Clone() const
Clone the tune context.
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("s_tir.meta_schedule.TuneContext", TuneContextObj, ffi::Object)
LinearCongruentialEngine::TRandState TRandState
Definition tune_context.h:49
ffi::Function logger
The tuning task's logging function. t.
Definition tune_context.h:66
static constexpr const bool _type_mutable
Definition tune_context.h:91
ffi::Optional< IRModule > mod
The workload to be tuned.
Definition tune_context.h:52
ffi::Optional< Target > target
The target to be tuned for.
Definition tune_context.h:54
static void RegisterReflection()
Definition tune_context.h:68
Managed reference to TuneContextObj.
Definition tune_context.h:99
LinearCongruentialEngine::TRandState TRandState
Definition tune_context.h:101
TuneContext(ffi::Optional< IRModule > mod, ffi::Optional< Target > target, ffi::Optional< SpaceGenerator > space_generator, ffi::Optional< SearchStrategy > search_strategy, ffi::Optional< ffi::String > task_name, int num_threads, TRandState rand_state, ffi::Function logger)
Constructor.
TuneContext(ffi::ObjectPtr< TuneContextObj > data)
Constructor from ffi::ObjectPtr<TuneContextObj>.
Definition tune_context.h:106
TVM_FFI_DEFINE_OBJECT_REF_METHODS_NOTNULLABLE(TuneContext, ffi::ObjectRef, TuneContextObj)
Base expr nodes in TVM.
TIR expressions.
IRModule that holds the functions and type definitions.
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition attr.h:23
Random number generator. It provides a generic interface consistent with std::uniform_random_bit_gene...
Compilation target object.