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

feat: use withCurrHeartbeats to reset the heartbeat usage for each step in sym_n #213

Draft
wants to merge 46 commits into
base: main
Choose a base branch
from

Conversation

alexkeizer
Copy link
Collaborator

@alexkeizer alexkeizer commented Oct 3, 2024

Description:

Stacked on:

This PR implements "snorkeling" of the heartbeat budget.

This unfortunately does not buy us much, as aggregation for 500 steps already seems to hit both the recursion limit and heartbeat budget, by itself.

Testing:

What tests have been run? Did make all succeed for your changes? Was
conformance testing successful on an Aarch64 machine? Yes

License:

By submitting this pull request, I confirm that my contribution is
made under the terms of the Apache 2.0 license.

…rue.

In particular, run only once, and set other profiler-related options
Traces cause less clutter in the infoview, and still give a decent enough output in batch mode as well
This way, we don't get old data because of lake's caching.
We still incorporate all benchmark files in the `Benchmarks` data, but only to ensure we build all dependencies; we disable running the actual benchmark when run with `lake build Benchmarks`
This target runs all the same benchmarks, but with the profiler option enabled
When an write to memory or a write to a register that is not SP is made, we update the proof of stack alignment. When a write to SP is made, we create a new mvar with the proof obligation that the new value is aligned, and store that mvar in a new `sideConditions` field.
The `trace.profiler.output` option has to be set when the frontend finishes the entire file. Therefore, it doesn't make sense to control it from within the benchmark elaborator: it's likely to do unexpected things if we have multiple benchmarks in the same file.

Instead, we should be setting the option from the makefile that runs the benchmark to begin with
These tags show up in the profile (unlike the message itself)
This help when profiling `sym_n`, because the threshold is applied to each step individually
This help when profiling `sym_n`, because the threshold is applied to each step individually
…step in `sym_n`.

This unfortunately does not buy us much, as aggregation for 500 already seems to hit both the recursion limit and heartbeat budget, by itself.
@alexkeizer alexkeizer changed the title WIP: feat: use withCurrHeartbeats to reset the heartbeat usage for each step in sym_n. WIP: feat: use withCurrHeartbeats to reset the heartbeat usage for each step in sym_n Oct 3, 2024
@alexkeizer alexkeizer changed the title WIP: feat: use withCurrHeartbeats to reset the heartbeat usage for each step in sym_n feat: use withCurrHeartbeats to reset the heartbeat usage for each step in sym_n Oct 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant