Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AutoScheduler] Improve SearchTask and ComputeDAG serialization #7145

Merged
merged 3 commits into from
Dec 23, 2020

Conversation

comaniac
Copy link
Contributor

@comaniac comaniac commented Dec 22, 2020

The previous implementation of task serialization mechanism has a potential problem, which is a bit tricky so I didn't notice that before.

Previously, I defined a set of attributes in the Python object (e.g., hardware_params) and use them to be the state when serializing a task object in Python. However, in the case that users don't provide hardware_params, the SearchTask constructor in C++ invokes GetDefaultHardwareParams to get the default hardware parameters. These default hardware parameters aren't exposed to the Python object because of the same name attribute.

It wouldn't be a bit deal because when a task is deserialized, we follow the same process to get the default hardware parameters. However, since GetDefaultHardwareParams may access hardware context (e.g., CUDA context), this prevents tasks from being deserialized in parallel (with multiprocessing).

This PR removes all attributes in SearchTask Python object to make sure we access the up-to-date C++ object attributes when serializing a task. The only exception is self.dag because we need it to reconstruct a ComputeDAG.

cc @merrymercy @jcf94

@comaniac comaniac requested a review from merrymercy December 22, 2020 01:43
python/tvm/auto_scheduler/search_task.py Outdated Show resolved Hide resolved
python/tvm/auto_scheduler/search_task.py Outdated Show resolved Hide resolved
@comaniac comaniac force-pushed the ansor_fix_task branch 2 times, most recently from e88dafa to dfecfa7 Compare December 22, 2020 19:04
@comaniac comaniac changed the title [AutoScheduler][Bugfix] Hardware params is not serialized properly [AutoScheduler] Improve SearchTask and ComputeDAG serialization Dec 23, 2020
@comaniac
Copy link
Contributor Author

Per offline discussion, now we only support (de)serialization of ComputeDAG constructed by compute, because this limitation can largely simplify the design.

@merrymercy @jcf94 PTAL.

Copy link
Contributor

@jcf94 jcf94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! This looks great.

@merrymercy merrymercy merged commit 5a61089 into apache:main Dec 23, 2020
@comaniac comaniac deleted the ansor_fix_task branch December 23, 2020 17:40
masahi pushed a commit to masahi/tvm that referenced this pull request Dec 24, 2020
…he#7145)

* Use self.dag in Python object

* Add sch to ComputeDAG

* address comment
tkonolige pushed a commit to tkonolige/incubator-tvm that referenced this pull request Jan 11, 2021
…he#7145)

* Use self.dag in Python object

* Add sch to ComputeDAG

* address comment
TusharKanekiDey pushed a commit to TusharKanekiDey/tvm that referenced this pull request Jan 20, 2021
…he#7145)

* Use self.dag in Python object

* Add sch to ComputeDAG

* address comment
trevor-m pushed a commit to neo-ai/tvm that referenced this pull request Jan 21, 2021
…he#7145)

* Use self.dag in Python object

* Add sch to ComputeDAG

* address comment
electriclilies pushed a commit to electriclilies/tvm that referenced this pull request Feb 18, 2021
…he#7145)

* Use self.dag in Python object

* Add sch to ComputeDAG

* address comment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants