-
Notifications
You must be signed in to change notification settings - Fork 5.3k
Parallelize superpmi-diffs pipeline per collection #106759
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
Conversation
Submit helix items for each collection to speed up the superpmi-diffs runs.
|
cc @dotnet/jit-contrib Example run with some test JIT changes (+ limiting the collections to a smaller subset to speed up the dev loop): https://dev.azure.com/dnceng-public/public/_build/results?buildId=784894&view=results |
| self.host_os = coreclr_args.host_os | ||
| self.target_os = coreclr_args.target_os | ||
| self.arch_name = coreclr_args.arch | ||
| self.host_os = "windows" if platform.system() == "Windows" else "linux" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what about mac?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
superpmi-diffs only supports Windows host (asmdiffs targetting all OS/archs, tpdiffs with MSVC) and Linux host (tpdiffs with Clang)
EgorBo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice!
|
Another issue is that the mch downloading is too slow. Most of the time is spent here. |
That's not true. We don't spend more than a couple of minutes downloading the collections. |
This PR changes superpmi-diffs such that it submits a Helix work item for each collection that we will be collecting asm diffs or tp diffs for.
superpmi_diffs_setup.pythat creates a .json file for every (target OS, target arch, collection) tuple--summary_as_jsonCLI arg tosuperpmi.py asmdiffs/tpdiff. When passed,superpmi.pywill output the information necessary to generate a .md summary as JSON instead. These JSON files are now the results of the Helix work items.superpmi.py summarizecommand. This command takes a collection of JSON summary files and generates a consolidated .md summary in the same format as before.superpmi_diffs_summarize.pyto consolidate the JSON summaries created for each (target OS, target arch, collection) tuple into a consolidated .md for each (target OS, target arch), before doing the final consolidation to the single overall (host OS, host arg) .md file that is shown on AzDO.With this PR superpmi-diffs is significantly faster. Actual time spent doing useful work (building and running superpmi) is only around 30 minutes total. The remaining CI time is spent waiting for AzDO runners to pick up the pipeline jobs, and for the Helix queues to pick up the Helix work items.
An end-to-end superpmi-diffs run takes a little over 1 hour now, in comparison to up to 3 hours before.