It seems to me relay.build() and tvm.build() are processed through completely
different paths in TVM source repo. **It is appreciated anyone can help correct
me or confirm**. Thanks in advance.
Relay.build() call in python is quickly passed on into C++ side, mainly
processed within src/relay/backend/build_module.cc.
```
/*!
* \brief Compile a Relay IR module to runtime module.
*
* \param relay_module The Relay IR module.
* \param params The parameters.
*/
void BuildRelay(
IRModule relay_module,
const std::unordered_map<std::string, tvm::runtime::NDArray>& params) {
// Relay IRModule -> IRModule optimizations.
relay_module = Optimize(relay_module, targets_, params); // <== **Various
graph-level optimizations**.
// Get the updated function.
auto func = Downcast<Function>(relay_module->Lookup("main"));
// Generate code for the updated function.
graph_codegen_ = std::unique_ptr<GraphCodegen>(new GraphCodegen());
graph_codegen_->Init(nullptr, targets_);
graph_codegen_->Codegen(func);
ret_.graph_json = graph_codegen_->GetJSON();
ret_.params = graph_codegen_->GetParams();
auto lowered_funcs = graph_codegen_->GetLoweredFunc();
if (lowered_funcs.size() == 0) {
LOG(WARNING) << "no lowered funcs exist in the compiled module";
} else {
ret_.mod = tvm::build( <= **Calls into tvm.build()???**
lowered_funcs,**
target_host_,**
BuildConfig::Current());**
}
...
}
```
In contrast, the tvm.build(...) python call is mainly processed via python code
python/tvm/driver/build_module.py
```
...
fhost_all = []
device_modules = []
for tar, flist in target_flist.items():
fhost, mdev = _build_for_device(flist, tar, target_host)
# Save the current lowered functions of the host and the device module.
fhost_all += fhost
device_modules.append(mdev)
# Generate a unified host module.
mhost = codegen.build_module(fhost_all, str(target_host))
# Import all modules.
for mdev in device_modules:
if mdev:
mhost.import_module(mdev)
return mhost
```
---
[Visit
Topic](https://discuss.tvm.ai/t/relationship-between-tvm-build-and-relay-build/4166/4)
to respond.
You are receiving this because you enabled mailing list mode.
To unsubscribe from these emails, [click
here](https://discuss.tvm.ai/email/unsubscribe/6fd7b25b03b1bd1080f52005e1ef2a0bcd8ba45d6aee222f4261ba516f8f5be9).