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

Execute (and analyze) single Bench.measure #7323

Closed
4 of 5 tasks
JaroslavTulach opened this issue Jul 18, 2023 · 16 comments · Fixed by #7101
Closed
4 of 5 tasks

Execute (and analyze) single Bench.measure #7323

JaroslavTulach opened this issue Jul 18, 2023 · 16 comments · Fixed by #7101
Assignees
Labels
--low-performance -compiler -libs Libraries: New libraries to be implemented
Milestone

Comments

@JaroslavTulach
Copy link
Member

JaroslavTulach commented Jul 18, 2023

The current Enso benchmarking infrastructure allows to take highlevel view of the benchmark runs, but doesn't allow simple transfer of such benchmarks for detailed analysis via lowlevel tools like IGV. As a result we are working with Enso benchmarks as a blackbox. We know something is slow, but we don't have a way to increase our cluelessness by easily running the same Bench.measure benchmark in isolation, with deep insight into the compilation of the single benchmark functionality, without being distracted by the rest.

Tasks

The exploratory work has already been done in #7101. Time to finish it or to create new PR(s) to move us forward. As the discussion at #7270 (comment) shows, we need to start writing benchmarks in a way that is more lowlevel friendly (as the amount of work to modify original #5067 benchmark was too high to be manually repeated with every benchmark written).

Follow-up tasks

@JaroslavTulach JaroslavTulach added -compiler -libs Libraries: New libraries to be implemented --low-performance labels Jul 18, 2023
@JaroslavTulach JaroslavTulach added this to the Beta Release milestone Jul 18, 2023
@JaroslavTulach JaroslavTulach mentioned this issue Jul 18, 2023
2 tasks
@enso-bot
Copy link

enso-bot bot commented Jul 18, 2023

Pavel Marek reports a new STANDUP for yesterday (2023-07-17):

Progress: - Working on the prototype of JMH benchmarks for Enso libs

  • Moving the prototype into a separate SBT project It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 18, 2023

Pavel Marek reports a new STANDUP for today (2023-07-18):

Progress: - Discussion about bench API specification - how to specify before and after functions? It should be finished by 2023-07-28.

mergify bot pushed a commit that referenced this issue Jul 19, 2023
Designing new `Bench` API to _collect benchmarks_ first and only execute them then. This is a minimal change to allow  implementation of #7323  - e.g. ability to invoke a _single benchmark_ via JMH harness.

# Important Notes
This is just the basic API skeleton. It can be enhanced, if the basic properties (allowing integration with JMH) are kept. It is not intent of this PR to make the API 100% perfect and usable. Neither it is goal of this PR to update existing benchmarks to use it (74ac8d7 changes only one of them to demonstrate _it all works_ somehow). It is however expected that once this PR is integrated, the newly written benchmarks (like the ones from #7270) are going to use (or even enhance) the new API.
@enso-bot
Copy link

enso-bot bot commented Jul 21, 2023

Pavel Marek reports a new STANDUP for yesterday (2023-07-20):

Progress: - The CLI of the custom JMH runner conforms to the standard JMH CLI

  • The only exception is the meaning of includes regex specification, where we have to specify group along with label
  • Got working benchmark discovery, listing, and help message It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 21, 2023

Pavel Marek reports a new STANDUP for today (2023-07-21):

Progress: - Troubleshooting the recent GraalVM version update:

  • Trying to fix a broken build on MacOS
  • Adding back GraalVM version check to sbt build
  • Troubleshooting various problems with IDE build after the GraalVM update
  • Trying to merge the fixes in Fix GraalVM distribution download on MacOS #7364 ASAP. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 24, 2023

Pavel Marek reports a new STANDUP for today (2023-07-24):

Progress: - Reverting some incompatible changes that I introduced after Graal Update

  • I accidentally changd the naming of our artifacts, instead of only the name of downloaded graal artifacts
  • Fix of a Dockerfile.
  • Supporting Greg T
    • Consultation how to initialize local IDE build.
  • JMHization:
    • Integrating annotation processor
    • I tried hard to not introduce yet another sbt project, but failed to do so.
    • There will probably be two projects: bench-libs and bench-processor. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 25, 2023

Pavel Marek reports a new STANDUP for today (2023-07-25):

Progress: - Figuring out how to cmdline options for frgaal compiler so that we have a custom class path in the annotation processor.

  • At the end, I was able to do it with some custom option handling in the FrgaalCompiler sbt plugin.
  • Finally got all the Truffle languages, along with Enso, in the benchmark annotation processor!. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 27, 2023

Pavel Marek reports a new STANDUP for yesterday (2023-07-26):

Progress: - Struggling a bit with the sbt build config again.

  • Integrating bench and benchOnly SBT commands. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 27, 2023

Pavel Marek reports a new STANDUP for today (2023-07-27):

Progress: - Finished the prototype, now we can generate all the JMH code for benchmarks, run a single benchmark, and run all the benchmarks

  • Added some docs for benchmarks and for debugging annotation processors.
  • Tomorrow, I will merge the PR. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 28, 2023

Pavel Marek reports a new STANDUP for today (2023-07-28):

Progress: - Integrating a lot of suggestions from the review.

  • Refactoring other Enso benchmarks to the new builder API.
  • Putting all the result collection logic to bench-processor.
  • Adding some annotation parameters so that the processor can collect suites from more files. It should be finished by 2023-07-28.

@enso-bot
Copy link

enso-bot bot commented Jul 31, 2023

Pavel Marek reports a new 🔴 DELAY for today (2023-07-31):

Summary: There is 9 days delay in implementation of the Execute (and analyze) single Bench.measure (#7323) task.
It will cause 9 days delay for the delivery of this weekly plan.

Delay Cause: We concluded that we want to finish the whole integration of JMH for stdlib benchmarks generation. In other words, the end goal of this task is to create a new CI job that runs all the std lib benchmarks and collects the data. This is much more involved than a simple ability to run just one benchmark locally.

@enso-bot
Copy link

enso-bot bot commented Jul 31, 2023

Pavel Marek reports a new STANDUP for the provided date (2023-08-06):

Progress: - Bumped into yet another AssertionError in Truffle's source section - #5585

  • Reproduing issue with blank screen after opening any project on all the AppImages from July
  • Emphasizing discussion about mismatch of versions between IDE and Language Server/Engine.
  • Review of BigInteger support.
  • Writing some tests for SpecCollector.
    • Struggling with how to create and compile a new module via enso polyglot API. It should be finished by 2023-08-06.

@enso-bot
Copy link

enso-bot bot commented Jul 31, 2023

Pavel Marek reports a new STANDUP for today (2023-07-31):

Progress: - Bumped into yet another AssertionError in Truffle's source section - #5585

  • Reproduing issue with blank screen after opening any project on all the AppImages from July
  • Emphasizing discussion about mismatch of versions between IDE and Language Server/Engine.
  • Review of BigInteger support.
  • Writing some tests for SpecCollector.
    • Struggling with how to create and compile a new module via enso polyglot API. It should be finished by 2023-08-06.

@enso-bot
Copy link

enso-bot bot commented Aug 1, 2023

Pavel Marek reports a new STANDUP for today (2023-08-01):

Progress: - Added some reasonable annotation parameters specifying benchmark discovery.

  • BenchProcessor is able to collect more than 1 suite now.
  • Integrated some tests via a package in test resources.
  • Some reviews
  • Bookclub It should be finished by 2023-08-06.

@enso-bot
Copy link

enso-bot bot commented Aug 3, 2023

Pavel Marek reports a new STANDUP for yesterday (2023-08-02):

Progress: - Integrating many review comments It should be finished by 2023-08-06.

@enso-bot
Copy link

enso-bot bot commented Aug 3, 2023

Pavel Marek reports a new STANDUP for today (2023-08-03):

Progress: - Integrating rest of the review comments

@enso-bot
Copy link

enso-bot bot commented Aug 4, 2023

Pavel Marek reports a new STANDUP for today (2023-08-04):

Progress: - Some problems with CI - jobs are taking unusually long, cannot merge today. It should be finished by 2023-08-06.

@mergify mergify bot closed this as completed in #7101 Aug 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
--low-performance -compiler -libs Libraries: New libraries to be implemented
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

2 participants