tvm
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
driver_api.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 
29 #ifndef TVM_DRIVER_DRIVER_API_H_
30 #define TVM_DRIVER_DRIVER_API_H_
31 
33 #include <tvm/ir/module.h>
34 #include <tvm/ir/transform.h>
36 #include <tvm/support/with.h>
37 #include <tvm/target/target.h>
38 #include <tvm/te/schedule_pass.h>
39 #include <tvm/tir/function.h>
40 
41 #include <string>
42 #include <unordered_map>
43 #include <unordered_set>
44 #include <utility>
45 #include <vector>
46 
47 namespace tvm {
49 
57 TVM_DLL transform::Sequential MixedModulePassManager(IRModule mixed_mod, Target target);
58 
66 TVM_DLL transform::Sequential DeviceModulePassManager(IRModule mixed_mod, Target target);
67 
75 TVM_DLL transform::Sequential HostModulePassManager(IRModule mixed_mod, Target target_host);
76 
83 TVM_DLL IRModule LowerModule(IRModule mod, bool simple_mode = false);
84 
93 TVM_DLL IRModule LowerPrimFunc(tvm::tir::PrimFunc func, const std::string& name,
94  bool simple_mode = false);
95 
108 TVM_DLL IRModule LowerSchedule(te::Schedule sch, const Array<te::Tensor>& args,
109  const std::string& name,
110  const std::unordered_map<te::Tensor, tir::Buffer>& binds,
111  GlobalVarSupply global_var_supply, bool simple_mode = false);
112 
124 TVM_DLL IRModule LowerSchedule(te::Schedule sch, const Array<ObjectRef>& args,
125  const std::string& name,
126  const std::unordered_map<te::Tensor, tir::Buffer>& binds,
127  GlobalVarSupply global_var_supply, bool simple_mode = false);
128 
140 IRModule ScheduleToModule(te::Schedule sch, const Array<ObjectRef>& args, const std::string& name,
141  const std::unordered_map<te::Tensor, tir::Buffer>& binds,
142  GlobalVarSupply global_var_supply);
150 TVM_DLL runtime::Module build(const IRModule& funcs, const Target& target,
151  const Target& target_host);
152 
162 TVM_DLL runtime::Module build(const Map<Target, IRModule>& input, const Target& target_host);
163 
173 TVM_DLL runtime::Module build(const Map<String, IRModule>& input, const Target& target_host);
174 } // namespace tvm
175 
176 #endif // TVM_DRIVER_DRIVER_API_H_
IRModule LowerModule(IRModule mod, bool simple_mode=false)
Lower an IRModule (optimize with it with the pass list defined in CreatePassList) ...
transform::Sequential MixedModulePassManager(IRModule mixed_mod, Target target)
Configures and returns the composite Pass for the fused module (pre split) that contains device and h...
IRModule that holds the functions and type definitions.
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
IRModule LowerSchedule(te::Schedule sch, const Array< te::Tensor > &args, const std::string &name, const std::unordered_map< te::Tensor, tir::Buffer > &binds, GlobalVarSupply global_var_supply, bool simple_mode=false)
Build an IRModule given a TE schedule, args and binds. This function also applies the lowering passes...
IRModule LowerPrimFunc(tvm::tir::PrimFunc func, const std::string &name, bool simple_mode=false)
Lower a primfunc and name (convert to IRModule, and optimize it with the pass list defined in CreateP...
tvm::transform::Sequential Sequential
Definition: transform.h:49
TIR Function.
tvm::transform::Pass Pass
Definition: transform.h:43
GlobalVarSupply that can be used to generate unique.
Collection of Schedule pass functions.
Managed reference to PrimFuncNode.
Definition: function.h:145
transform::Sequential DeviceModulePassManager(IRModule mixed_mod, Target target)
Configures and returns the composite Pass for the device Target after device/host from mixed module...
Compilation target object.
tvm::PrimExpr mod(const tvm::PrimExpr &a, const tvm::PrimExpr &b)
Definition: broadcast.h:290
IRModuleFrame IRModule()
The IRModule declaration statement.
IRModule ScheduleToModule(te::Schedule sch, const Array< ObjectRef > &args, const std::string &name, const std::unordered_map< te::Tensor, tir::Buffer > &binds, GlobalVarSupply global_var_supply)
Create an IRModule out of a TE Schedule. It does not apply lowering passes. If you want to apply lowe...
Type-erased function used across TVM API.
runtime::Module build(const IRModule &funcs, const Target &target, const Target &target_host)
Build a device and host module for a specific target from an IRModule.
transform::Sequential HostModulePassManager(IRModule mixed_mod, Target target_host)
Configures and returns the composite Pass for the host Target after device/host from mixed module...
RAII wrapper function to enter and exit a context object similar to python&#39;s with syntax...