-
Notifications
You must be signed in to change notification settings - Fork 3.5k
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
Windows support for autotvm - Do not merge #4548
Conversation
… windows_support
… windows_support
… windows_support
… windows_support
sounds good to me. |
@jmorrill have you gotten a chance to work on the CPP server PR? |
… windows_support
… windows_support
… windows_support
… windows_support
This PR is superseded by another PR to add rpc server support (into the mainline) Thanks @jmorrill for very insightful investigations. |
This PR is not meant to give anyone a heart attack. @soiferj encouraged me to submit this PR so he could take a peek. So please don't code review seriously for merge. Feel free to close if you don't want to look at it :)
Two discuss topics related:
https://discuss.tvm.ai/t/unofficial-autotvm-on-windows-guide/4711 (Google doc has notes on quirks)
https://discuss.tvm.ai/t/added-windows-support-to-c-rpc-server/5007
Currently, there is no support for autotvm in Windows out of the box. Most challenges are related to fork() not being supported, which autotvm code uses extensively for getting multi-core performance in python. Having no fork() means data sent to process pools must be able to be pickled. Also, having no fork() means python pools or subprocesses need to be reused for performance reasons. This was very apparent in the
local_executor.py
, where starting a new python subprocess w/ python entry point could take almost 1000ms.To overcome these issues I have opted to use pathos library in some spots which uses dill to serialize. dill can serialize much more than pickle, notably functions.
I've tried to keep the linux behavior the same, but have not tested it. Most of the time I "ifdef"ed the python code with
os.name == 'nt'
so it was easy to spot.Notable problems are:
base.py
get_addr_family