Skip to content

scope+bench(phonon): config-batching proof-of-mechanism (verdict: park until H100) - #288

Draft
wladerer wants to merge 3 commits into
mainfrom
worktree-phonon-config-batching
Draft

scope+bench(phonon): config-batching proof-of-mechanism (verdict: park until H100)#288
wladerer wants to merge 3 commits into
mainfrom
worktree-phonon-config-batching

Conversation

@wladerer

Copy link
Copy Markdown
Owner

Scopes phonon config-batching (fold N displacement configs into the plane-wave
batch axis for one (N·nk) SCF, vs today's serial / SeedPool-process spokes) and
measures the one lever that gates the whole build before building it.

Deliverables

  • docs/design/phonon-config-batching.md — full scope: what folds (G-sphere/kinetic/
    position-free projectors) vs per-config (v_eff/density/Fermi/mixing), the required
    changes (per-row v_eff in BatchedHamiltonian, a config-batched SCF driver with
    per-config freezing), risks, and the go/no-go gate.
  • benchmarks/phonon_batch/config_batch_probe.py — isolates the eigensolve lever:
    N separate davidson_batched vs 1 folded (N·nk) solve, with a per-config
    eigenvalue correctness check. Does not run a full config-batched SCF.

Result (asus) — NO-GO on current hardware

run separate folded speedup correctness
CPU fp64 (nk=8, 96 batch) 126.0 s 274.1 s 0.46× Δeig 7e-14 eV (exact)
GPU fp32 RTX 3050 (Γ, 24 batch) 8.28 s 7.76 s 1.07× Δeig 2e-4 (fp32 noise)

The fold is bit-exact (fp64). But it's neutral-to-negative everywhere testable: CPU
BLAS is already saturated at one SCF's nk; the 3050 is too small to under-fill with a
realistic phonon spoke (and OOMs on the larger fold). The GPU-saturation premise is an
H100-class claim, untestable here.

Recommendation: don't build the config-batched SCF driver yet — validate the premise
on an H100 first (one spoke under-fills → fold fills it). Until then SeedPool stays the
campaign lever. The one unique advantage worth revisiting on H100: config-batching is
autograd-compatible, which SeedPool's process-parallelism structurally is not.

Draft — this is a scoping + measurement artifact, not a feature.

🤖 Generated with Claude Code

wladerer and others added 3 commits August 13, 2026 22:25
Isolates the gating question for phonon config-batching: fold N displacement
configs into the leading batch axis (N·nk, nb, npw_max) and time one folded
batched Davidson vs N separate solves, with a per-config eigenvalue correctness
check. Does NOT run a full config-batched SCF (per-config v_eff/density/Fermi/
mixing) — just measures whether the batched-eigensolve lever is real before
committing to that build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Scope doc (docs/design/phonon-config-batching.md) + probe measurements. Verdict:
DO NOT build the config-batched SCF driver yet. Folding is bit-exact (fp64 Δeig
7e-14) but neutral-to-negative on all accessible hardware — CPU 0.46x (BLAS
already saturated), RTX 3050 GPU 1.07x (too small to under-fill with a realistic
spoke). The GPU-saturation premise is an H100-class claim, untestable on the
3050. Park until H100; SeedPool process-parallelism stays the campaign lever.
Fix probe fp32 correctness threshold (2e-4 eV is fp32 noise, not a fold bug).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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