sunggg commented on code in PR #12628:
URL: https://github.com/apache/tvm/pull/12628#discussion_r960742815
##########
include/tvm/meta_schedule/database.h:
##########
@@ -357,6 +357,22 @@ class Database : public runtime::ObjectRef {
*/
TVM_DLL static Database JSONDatabase(String path_workload, String
path_tuning_record,
bool allow_missing);
+ /*!
+ * \brief A database composed of multiple databases, allowing users to guide
IR rewriting using
+ * combined knowledge of those databases. To each query, it returns the best
record among all the
+ * databases given.
+ * \param databases The list of databases to be combined.
+ * \return The combined database.
+ */
+ TVM_DLL static Database UnionDatabase(Array<Database, void> databases);
Review Comment:
Discussed offline with @junrushao and learned about more context behind the
naming.
I'm okay with the naming, but would like to suggest more documentation with
examples for better guidance.
Some examples we could use:
```python
### Examples
Assumption:
* db1, d2 does not have tuning records for the target workload.
* each db3, db4, db5 have tuning records r3, r4, r5 for target workload
respectively.
Case 1. `UnionDatabase`:
merged_db = ms.database.UnionDatabase(
db1, # no record
db2, # no record
db3, # has r3
db4 # has r4
)
# This return best one between r3 and r4
merged_db.query_tuning_record(..., target_workload)
Case 2. `OrderedUnionDatabase`
merged_db = ms.database.OrderedUnionDatabase(
db1, # no record
db2, # no record
db3, # has r3
db4 # has r4
)
# This return r3
merged_db.query_tuning_record(..., target_workload)
Case 3. Mix-use scenario
merged_db = ms.database.UnionDatabase(
db1, # no record
db2, # no record
db3, # has r3
ms.database.OrderedUnionDatabase( # returns r4
db4, # has r4
db5, # has r5
)
)
# This return best one between r3 and r4
merged_db.query_tuning_record(..., target_workload)
Case 4. Another mix-use scenario
merged_db = ms.database.UnionDatabase(
db1, # no record
db2, # no record
db3, # has r3
ms.database.UnionDatabase( # returns best one between r4 and r5
db4, # has r4
db5, # has r5
)
)
# This return best one among r3, r4 and r5
merged_db.query_tuning_record(..., target_workload)
Case 5. Yet another mix-use scenario
merged_db = ms.database.OrderedUnionDatabase(
db1, # no record
db2, # no record
ms.database.UnionDatabase( # returns best one between r3 and r4
db3, # has r3
db4, # has r4
)
db5, # has r5
)
# This return best one between r3 and r4
merged_db.query_tuning_record(..., target_workload)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]