Here are my two cents before diving into the detail code review.

1. At the first glance most implementations, including the Relay passes, were 
done in Python. It would be better to implement them in C++ for better 
performance.
2. The term and namespace "subgraph" is improper and confusing.
3. It would be better to break the PR down to 3 smaller PRs (one PR per 
component) for reviewing. Each component should have its unit tests with hand 
crafted inputs instead of a single set of unit tests to test all 3 component.

Some questions for each component:

Compoenent 1: What's the current split logic? From the PR it seems to me that 
you simply split every op to a subgraph? Ideally we should perform dependency 
analysis and minimize the number of subgraphs.

Component 2: It seems not ideal to let users build each subgraph manually, and 
from your test case, it seems like users have to make sure the built runtimes 
are in the correct order? The order should be guaranteed in some artifacts.

Meanwhile, it would be better to keep the components independent as well. 
Specifically, the APIs could be

```
mods, artifacts = split_graph(mod)
libs = build(mods, artifacts)
runtime = create(libs)
runtime.set_input(...)
runtime.run()
```
One important point is **the build API does not have a strong dependency to 
split_graph**. Suppose a user prepares a list of modules as well as the 
artifacts by herself, the `build` API should also work. That's why I feel the 
first and second/third components should be in separate PRs.





---
[Visit 
Topic](https://discuss.tvm.apache.org/t/rfc-compute-graph-pipeline-with-new-subgraph-executor/9839/3)
 to respond.

You are receiving this because you enabled mailing list mode.

To unsubscribe from these emails, [click 
here](https://discuss.tvm.apache.org/email/unsubscribe/b65d92eb12bab7f5f3a301f4e0cca385ef240c1b434dd58316f21791189bf665).

Reply via email to