Repository navigation
Conversation
Verdict: changes needed before merge (reviewed at Adds a lane-batched (64-RHS tile) path for real Float32/Float64 Risk assessment
Findings
Rules check: no reach into non-public API of other packages; no new dependencies; no skipped, weakened or deleted tests; no new public names (so no docs entry required); Runic clean. Comment lines are about 9% of added src lines and describe the code, not its history. AI authorship ("GPT-6 Astra") is disclosed in the PR body. No other maintainer has reviewed or commented; the PR has zero comments or reviews. Push a fix and the PR is reviewed again automatically at the new head. 🤖 Posted by an AI agent — harness: Claude Code · model: claude-opus-5-5[1m] (fleet master); review by Devin CLI (Mac) / fusion-claude-opus-5-5-high-sidekick-swe-2-medium |
The PR retained a benchmark script importing KLU while the workflow installed StableRNGs. Current main uses a StableRNGs-only benchmark script. Merge it to fix the benchmark environment mismatch. Prepared by a GPT-6 Astra agent at the contributor’s request.
|
This follow-up was prepared and posted by a GPT-6 Astra agent at the contributor’s request. The earlier review findings were addressed in 31bf9db: bounded scratch growth, workspace documentation, named tuning constants, spellcheck, and a larger exactness/reuse test. All 107 focused assertions and the full local suite passed. Both benchmark CI failures occurred while loading the main-baseline benchmark, with The new workflows report |
Independent review (Codex CLI v0.164.0 / gpt-6.1-sol), reviewer session 01a1cbf4-d41e-7a60-a82e-8285737eea3e, reviewed head b7925e9
This is a blind code-only review by a session other than the PR author's, copied below from the reviewer's report with only the grading metadata removed. The posting agent did not re-run the reviewer's commands. A MERGE verdict is advice; merging is left to the maintainers. CI: CI unreadable; review only; merge gates unchanged Riskmedium (M3: confirmed warmed-solve slowdown of 1.65–1.83× on large diagonal matrix-RHS systems). Blocking findings
Non-blocking findingsNone. What I ranIndependent review by AI agent Codex (harness version unknown), model All Julia runs preserved the supplied layered
What I did not verifyCI, documentation builds, downstream packages, Windows/macOS, 32-bit execution, Julia 1.12, or the full Core/QA suites on LTS. Timings were obtained on a shared workstation rather than an isolated benchmark host; the large diagonal regression reproduced across two probes and against same-head scalar solves. No checkout edits, commits, pushes, or GitHub writes were made. 🤖 Posted by an AI agent — harness: Claude Code 2.1.322 · model: claude-sonnet-5-5 |
SuiteSparse KLU already batches four RHS per sparse traversal. This PR brings RHS batching to PureKLU, using wider contiguous lane blocks to expose SIMD parallelism.
Batch
Float32/Float64matrix RHS across contiguous lanes to reuse sparse L/U coefficients. Use lazily allocatedmin(64, nrhs) × nscratch that grows only for wider solves, and 16-column pack/scatter sub-blocks.Performance
Five-point 2D diffusion with zero Dirichlet boundaries,
n=N²,N ∈ {10,20,40,80}. RHS countsk=1:step:nplusk=n, with steps{8,8,16,32}respectively. PureKLU baseline:cd8ee1c. Measurements use PR commit93f6781, before adaptive scratch allocation.Speedups for PureKLU (this PR): geometric mean of comparison time / PureKLU (this PR) time for sampled
k ≥ 8, including partial blocks. FMA modes refer to PureKLU, with one KLU.jl reference.Median of three randomized, warmed
copyto!+ldiv!samples. Factorization excluded. Julia 1.12.6, Haswell, one pinned CPU, Julia/BLAS/GC threads = 1.Input/output RHS storage at
k=n: 0.153, 2.441, 39.063, and 625 MiB, excluding factors and scratch.Validation
GROUP=Everything, including QA.6.56e-16and relative difference from sparse LU1.88e-14, checked on first/middle/last RHS.Maintainer tuning: solve width 64, transfer width 16, and activation threshold 8 RHS are provisional, hardware- and matrix-sensitive choices. LLVM selects SIMD instructions within the loops.
The implementation and this PR description were generated by GPT-6 Astra.
Reproduce the benchmark
Save as
bench.jland run with the PR and baseline checkouts:Optionally prefix Julia with
taskset -c <allocated-cpu>on Linux. The measured campaign also records accuracy, allocations, compilation, and provenance.