Skip to content

ci: Add Aiur compile + typecheck benchmark workflow#449

Merged
samuelburnham merged 4 commits into
mainfrom
sb/aiur-ci-bench
Jun 19, 2026
Merged

ci: Add Aiur compile + typecheck benchmark workflow#449
samuelburnham merged 4 commits into
mainfrom
sb/aiur-ci-bench

Conversation

@samuelburnham

@samuelburnham samuelburnham commented Jun 17, 2026

Copy link
Copy Markdown
Member

Two main changes:

  • Upgrades the CheckNatAddComm.lean benchmark to a generic Typecheck.lean benchmark, with optional JSON output for CI integration.
  • Refactors the bencher.dev ix compile benchmark on main to also benchmark Aiur execution + proving on the following InitStd and Mathlib constants:
- bench: InitStd
  consts: Nat.add_comm Nat.sub_le_of_le_add String.append Array.append_assoc
- bench: Mathlib
  consts: Nat.factorial Nat.Coprime Nat.Prime.two_le

Because of Aiur's memory restraints these are all light enough to run easily on the 128GB runner, whereas Vector.extract_append hit OOM on execution. These constants should thus be changed to cover more unique workloads as Aiur RAM usage improves.

The prove benchmarks have the following measurements, each with their own thresholds which will fail CI/create an alert when a percentage-based regression from the last 64 runs is detected:

  • Constants - 0% threshold, should only change on toolchain bump
  • FFTs - 0% threshold
  • Execute Time - 10% threshold
  • Prove time - 10% threshold
  • Peak RAM usage - 10% threshold
  • Throughput (constants/second) - 10% threshold

Note

The ubuntu-latest runner builds the bench-typecheck binary but it does not have support AVX-512. This means the proving benchmarks will be significantly slower (10-30%), and are mainly meant to test for performance regression than absolute numbers. Later we can upgrade to a more powerful runner.

Successful run:
https://github.com/argumentcomputer/ix/actions/runs/27778973973

After argumentcomputer/tracing-texray#2

@samuelburnham samuelburnham changed the title Add Aiur compile + typecheck benchmark workflow ci: Add Aiur compile + typecheck benchmark workflow Jun 17, 2026
@samuelburnham samuelburnham force-pushed the sb/aiur-ci-bench branch 4 times, most recently from 6315cba to cc23c22 Compare June 18, 2026 16:46
Merge the Ix-compiler benchmark and a new Aiur execute/prove benchmark into one
workflow (aiur-bench.yml): per library env, 'ix compile' produces a per-bench
.ixe (compile-throughput metrics; cached to actions/cache), then bench-typecheck
STARK-checks selected constants over that same .ixe (execute, prove, and peak-RSS metrics).
The env loads lazily via Ixon.deEnvAnon so Mathlib statements check at ~10GB peak
RSS instead of the ~100GB eager load. Shared bencher + toolchain-bump-reset logic
lives in the .github/actions/bencher-track composite action (pinned to bencher
v0.6.7, authenticating with a project-scoped BENCHER_API_KEY); constants are
inline in the workflow matrix. Replaces compile.yml.

Also share CLI name resolution: extract parseName/resolveName/ixNameToLeanName/
resolveIxeAddr from Ix.Cli.CheckCmd into a lightweight Ix.Cli.NameResolve module
(depends only on Address/Environment/Ixon). 'ix addr-of --ixe' gains the toString
fallback 'ix check' uses, and bench-typecheck resolves names through the same
module instead of duplicating the helpers.
Revert before merging. Scopes the push trigger to this branch so the
benchmark workflow can be exercised end-to-end; Bencher data lands under
the `sb/aiur-ci-bench` branch, isolated from `main`'s plots.
@samuelburnham samuelburnham marked this pull request as ready for review June 18, 2026 18:37
arthurpaulino
arthurpaulino previously approved these changes Jun 18, 2026

@arthurpaulino arthurpaulino left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@samuelburnham samuelburnham merged commit aaa7dc0 into main Jun 19, 2026
14 checks passed
@samuelburnham samuelburnham deleted the sb/aiur-ci-bench branch June 19, 2026 15:10
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.

2 participants