Skip to content

ci(bench): add an x86_64 tier without AVX-512 IFMA - #419

Merged
kixelated merged 5 commits into
mainfrom
quest/m2/speed/bench-no-ifma
Nov 6, 2026
Merged

kixelated merged 5 commits into
mainfrom
quest/m2/speed/bench-no-ifma

Conversation

@kixelated

@kixelated kixelated commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

bench.yml gains a native (x86_64-unknown-linux-gnu, portable, no-ifma) row that denies only AVX-512 IFMA to rind (RIND_CPU_DISABLE_avx512ifma) and to aws-lc (OPENSSL_ia32cap='~0x0:~0x200000', leaf 7 EBX bit 21) and times rsa_priv. An RSA change's A/B now reads that row and measures the path CPUs without IFMA take, whether the runner draws an AMD EPYC 7763 or an IFMA CPU such as the EPYC 9V74 or Xeon 6975P-C. moq-dev/rind#351 had to re-dispatch until both runs avoided IFMA.

The speed epic now says which row an RSA comparison reads, and lists the no-IFMA tier among the paths it covers. admin/bench-report knows the new tier as the "no IFMA" column, between x86_64 and no ADX.

Fixed along the way: the no-adx row denied aws-lc its dual AVX-512 RSAZ but left rind's on, since rind gained one in moq-dev/rind#263 after the row's comment ("which rind lacks") was written. On an IFMA runner that row compared rind's IFMA RSA against aws-lc's non-IFMA one. It now denies rind's too, matching the Haswell path it models.

Caused by

  • moq-dev/rind#263 - added rind's dual AVX-512 RSAZ without denying it in the no-adx bench row

Public API

None. CI and admin tooling only.

Decisions made without asking

  • portable: true for the row, as no-adx does. It reuses the existing rind_cpu_disable denial and drops ring, which can't be denied a feature. ring's RSA has no IFMA path, so it could have stayed, but that needs a second switch beside portable; rind against aws-lc is enough for an A/B, which compares rind with itself.
  • Only rsa_priv. IFMA reaches only RSA's CRT pair (mod_exp_pair). The RSA-2048 handshake in rustls shares that signing cost but would add every other handshake and the bulk transfer to the row.
  • The report shows only the tiers its saved run timed. Rendering the current tiers.json with the new tier would add an all-empty "no IFMA" column, which the report reads as "same code as x86_64". tier_columns now drops a column the run lacks; admin/bench-report nightly already refuses an incomplete run, so this only matters between adding a tier and the next refresh. Until a nightly on main times the row, nightly reports runs as lacking "no IFMA", as for any new tier. BENCHMARKS.md changes only in its intro line.

Validation

  • actionlint .github/workflows/bench.yml: clean.
  • Merged origin/main after moq-dev/rind#397 (OVH hosts, report refresh) without conflicts; admin/bench-report render regenerates nothing on the merged tree, and render --check passes.
  • python3 admin/bench-report-test: 17 tests pass on the merged tree.
  • quest check: ok.
  • Under Intel SDE's Sapphire Rapids model (sde -spr), a release build with --cfg rind_cpu_disable passes detects_the_expected_cpu with RIND_TEST_X86_AVX512_RSA=1, and with RIND_CPU_DISABLE_avx512ifma=1 passes it at =0 and fails it at =1: the denial turns off rind's dual RSAZ.
  • just check: passes.
  • The row itself runs on the next nightly; neither local host (i7-8700, Ryzen 9 5900XT) has IFMA.

Follow-ups

None.

Models

Size: XS
Implementer: Claude Code, claude-opus-5-5, high effort

(Written by Claude Opus 5.5 with high)

Review

Rewritten by quest review after each round.

  • Reviewer: Codex, gpt-6.1-sol, low effort
  • Session: 01a1b2ff-1c4d-7dc3-8570-b6b422aaae93, round 1
  • Head: 57dc4e8
  • Base: origin/main at f8de447
  • Score: 10/10, The specified diff consistently adds the no-IFMA benchmark tier and preserves older report data compatibility; all eight rendering tests pass, with no actionable defects identified.
  • Findings: none

kixelated and others added 3 commits November 6, 2026 13:46
RSA A/Bs on GitHub's runners read the no-ifma row, which times the path
of CPUs without IFMA whatever CPU the runner draws. The no-adx row now
denies rind's dual AVX-512 RSAZ too, as it already did aws-lc's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A tier new to bench.yml would otherwise render as an empty column, which
the report reads as code shared with the column to its left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title An x86_64 bench tier without AVX-512 IFMA ci(bench): add an x86_64 tier without AVX-512 IFMA Nov 6, 2026
@kixelated
kixelated marked this pull request as ready for review November 6, 2026 22:15
@pullfrog

pullfrog Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Your OpenCode Go account is out of credit. Top it up, then re-trigger Pullfrog.

OpenCode Go's response
provider error: Insufficient account funds

Top up OpenCode Go →

Pullfrog  | Rerun failed job ➔ | View workflow run | via Pullfrog | Using glm-5.3

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 22 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d259c601-5bec-4029-8d7f-b19c220b0c98
Commits

Reviewing files that changed from the base of the PR and between ddd7fa0 and 57dc4e8.

Files selected for processing: 5

  • .github/workflows/bench.yml
  • BENCHMARKS.md
  • admin/bench-report
  • quest/m2/speed/README.md
  • quest/m2/speed/bench-no-ifma.md
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed cd58732. No actionable findings. The dedicated no-IFMA row is a sound direction: its release-build feature denial reaches rind's RSA capability check, the aws-lc mask clears IFMA, and the row keeps a distinct artifact/tier identity. The no-ADX adjustment removes the asymmetric IFMA path, and filtering report columns by saved tiers avoids implying a missing new tier was measured.

Verification: GitHub-only static review of all changed files, workflow result handling, report helpers, CPU detection, and RSA benchmark selection. I did not run actionlint, report tests, SDE, or benchmarks on IFMA hardware.

@kixelated
kixelated added this pull request to the merge queue Nov 6, 2026
Merged via the queue into main with commit 6f16f53 Nov 6, 2026
8 checks passed
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