Zulip Chat Archive

Stream: mathlib4

Topic: !bench against commit?


Thomas Murrills (Oct 22 2023 at 22:44):

This might have a simple answer: is there syntax to bench against a specific commit (possibly in a different branch)? Specifically, I want to bench a test of a lean4 PR against nightly-testing.

If not I suppose I’ll have to make a PR and bench it, then compare in the speedcenter, then close the PR. But if it doesn’t exist already, !bench against (<branch>?):<commit> might be a useful feature to have. :) (Also note that running things locally is not really feasible on my machine.)

Matthew Ballard (Oct 22 2023 at 22:46):

There is a comparison feature where you can choose two commits and get a perf diff.

Thomas Murrills (Oct 22 2023 at 22:47):

In the speedcenter, right? Doesn’t that mean I need to open 2 PRs?

Matthew Ballard (Oct 22 2023 at 22:48):

In the speedcenter web interface yes. You will need to get runs for both of them so you'll need two PRs (modulo unusual provenance).

Thomas Murrills (Oct 22 2023 at 22:49):

Right, I know I can do that, my question is specifically about a command like !bench against … on a single mathlib PR. :)

Matthew Ballard (Oct 22 2023 at 22:52):

No such command exists. The general assumption is that you are benching off the commit you branched from master.

Thomas Murrills (Oct 22 2023 at 23:00):

Ah, okay. In that case I’d like to turn this thread into a feature request, since there are a few scenarios in which we don’t want to bench against that commit. :)

Joachim Breitner (Oct 23 2023 at 06:35):

I had the same desire. My work around was to create a temporary PR with that commit at tbre head, run !bench, and delete the PR again. (For me it would suffice to have !bench abcdef, I can then click that comparison in the web view manually)

Matthew Ballard (Oct 23 2023 at 12:17):

With the PR, you have CI run on the commit which is prophylactic for empty benchmarking runs.

Thomas Murrills (Oct 23 2023 at 19:02):

CI runs on branches without PRs anyway, no?

Joachim Breitner (Oct 25 2023 at 09:38):

A small QoL improvement would be if !bench would schedule not just the HEAD commit of the branch, but also the base commit (the merge-base), which is usually what you would want to compare against (assuming that scheduling a commit is idempotent).

Sebastian Ullrich (Oct 25 2023 at 09:50):

Java contributions welcome! :) https://github.com/IPDSnelting/velcom

Joachim Breitner (Oct 25 2023 at 09:59):

The code changes to might actually be doable by cargo-culting existing Java code, if the Github API would include more sensible data, but (again) it doesn’t, and one would have to run git merge-base manually… so nevermind.

Sebastian Ullrich (Oct 25 2023 at 10:01):

Velcom has to have the information eventually in order to generate the diff I suppose, but what you're saying is that it doesn't have it at this specific place?

Joscha Mennicken (Oct 25 2023 at 12:43):

Velcom finds the base commit for comparisons here using this fancy recursive query that traverses the PR until it finds one or more tracked commits. A tracked commit is a commit reachable from a tracked branch (in lean's and mathlib's case, that's only master). For example, in this commit graph

A - B - C - D - E (master)
     \       \
      F - G - H - I (pr)

commits A, B, C, D, and E are tracked and getFirstParentsOfBranch will return B and D.

Joachim Breitner (Oct 25 2023 at 16:20):

Not within three lines of looking up and down :-)

Joachim Breitner (Oct 25 2023 at 16:26):

So one could use this logic to find a good compareToHash before scheduling the actual !bench PR head, check if it had been run before, and if not, schedule it. So later replyToFinishedPrCommands would (more likely) find a run to compare against. Not sure how frequent that need is to add that logic, it might be easier to support !bench <commit> or hand out access to the UI to those who are bothered.

Joscha Mennicken (Oct 25 2023 at 17:48):

!bench <commit> would need similar logic to schedule <commit> (checking whether a run exists and if not, adding one to the queue)


Last updated: Dec 20 2023 at 11:08 UTC