Thanks for sharing all of this—really solid findings. Working with AutoTVM on Windows definitely brings some unique challenges, and your notes highlight the key issues really clearly.
- Using 127.0.0.1 instead of 0.0.0.0
That makes sense.
0.0.0.0
can act unexpectedly on Windows, so switching to127.0.0.1
is a smart workaround for local setups. - Pickle and multiprocessing closures
Yep, this is a common Windows issue since it doesn’t use
fork
. Moving the wrapped function to the top level is the right call—glad to see you already figured that out. - Missing
tar
command Good tip—Cygwin works, or even Git Bash or WSL. In some cases, using Python’s built-intarfile
module could help skip the shell command entirely. - Handling
:
in Windows paths for tar Adding--force-local
is a solid workaround when paths include a drive letter. Windows really doesn’t like the colon in CLI tools unless handled this way. - Backslash issues in tar commands
Yeah, replacing
\
with/
helps when shelling out commands. You might also consider usingpathlib.Path.as_posix()
to keep things cleaner. - Socket error 10048 Pretty typical when sockets don’t release fast enough. Adding specific handling for error 10048 is a good call.
- LocalRunner + cpp_rpc
That’s a gotcha for a lot of people. Compiling and manually starting
tvm_rpc.exe
is necessary, and it’s not super obvious. Documenting this better would help a lot. - Tracker/server creation in loops Definitely inefficient on Windows. Your reuse logic looks like a clean improvement—it’d be great to see something like this upstreamed.
- Linker error for
tvm_main
Seen this too. Annotating or stubbingtvm_main
is a workable fix for now, but it’d be good to understand why it’s getting pulled in at all during linking.