Repository navigation
D-DYNBAG-1: ℕ-compose for p(X, Z) over DR64² tiles: exact, and measured - #1909
Conversation
…DYNBAG-1, WIP: tests not yet run) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…nse differential Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
matmul_i8_to_i32 over two DR64 tiles is exact against both oracles (300 cases) and projects to relcomp::compose; on this host (no VNNI, no AMX) it costs ~21 us per tile against 50 ns - 2.4 us for the Boolean compose. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
…tchas noted The cost example now prints the matmul tier. /proc/cpuinfo spells the flag avx512_vnni; the earlier grep missed it. Numbers unchanged on re-run. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3df8cf8274
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
… D-DYNBAG-1 in PR Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…atch its fallback The ChainJoin branch compared only the relation ids with its fallback, so a chain with a reordered projection or a filter on one input was answered as the fallback's query. It now checks its output columns against the key order and refuses a bound on either input before the comparison. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
…rge) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF
What
p(X, Z) :- r(X, Y), s(Y, Z)keeps both ends. Until now it was refused at admission. The lab probe now answers it as an integer matrix product over two DR64² 0/1 tiles. This is the falsifier from pland-dynbag-holographic-bags-v1.md§7.5, with results in §7.6.xlog-relcomp-probesrc/ncompose.rs:admit_pairadmits XLOG's body in both join orders its optimizer emits. It admits aChainJoinonly when its own relations match its fallback. Bounds are refused, andq(Y)is still never admitted asp(X, Z).pair_countsbuilds the 0/1 tiles over DRLocalMapaxes (base relations are sets) and multiplies them withndarray::simd::matmul_i8_to_i32.tests/litho.rspart 4.examples/ncompose_cost.rs. It reports ns per call againstrelcomp::compose, and prints whichmatmul_i8_to_i32tier ran.Results
Equality: ℕ per (x, z) matches both oracles: scalar witness enumeration, and a bag walk of XLOG's own RIR for
p. It holds on the fixture and on a 300-case random differential, with ids 0..6 per axis so that ℕ ≠ B in more than 100 cases.Projection:
count > 0equalsrelcomp::composeon the DR64 register in every case.Disable runs, both red:
Bug found while testing: XLOG's
ChainJoinsometimes putssfirst. The first version ofadmit_pairrefused that order; it now admits it, checked against the fallback.Cost (MEASURED). The host is an Intel Xeon, model 0x55 (Skylake-SP / Cascade Lake class), 4 vCPU VM, with AVX-512 VNNI and no AMX. The product ran on its AVX-512 VNNI
VPDPBUSDtier. Two runs agreed within 1%.compose(B)matmul_i8_to_i32(ℕ, tiles prepared)pair_counts(ℕ, from tuples)Through
matmul_i8_to_i32's current signature, a 64² tile costs about 21 µs whatever the density: exact, but 400× slower than B on sparse input and 9× on dense. 64³ multiply-adds is only about 4,096VPDPBUSDinstructions. HYPOTHESIS (not profiled): the time is the per-callpack_contig, u8 shift copy, outputVec, bias pass and copy back (plan §7.4). Two candidates follow, both forndarray::simd, backend-first:Correction. The first version of this PR said "no VNNI, scalar tier". I had grepped
/proc/cpuinfoforavx512vnni, but the kernel spells itavx512_vnni. The numbers did not change on re-run, and the example now prints the tier.AMX (ndarray
.claude/AMX_GOTCHAS.md):amx_available() == falseis genuine (Gotcha 4 does not apply).Validation
cargo test --release: every probe suite green (one#[ignore]that was already there).cargo clippy --release --all-targets -- -D warnings: clean.Still open:
🤖 Generated with Claude Code
https://claude.ai/code/session_01XAqKMNZqKXSaeb9g2ypywF