Repository navigation
profiling(point_source): static-lattice A/B, RAL CPU + A100 rows, campaign phase 3 (PyAutoArray#568) - #305
Merged
Conversation
…0 submits (PyAutoArray#568 phase 3) scripts/point_source/likelihood_breakdown/static_lattice_ab.py: interleaved in-process A/B of AbstractSolver._initial_triangles with four routes -- control (flat 3N table, 69 849 rows), exact (28 665 exact-float rows), lattice (11 859 geometric vertices), library (self-labels from the traced step-0 deflection row count). Fresh closures + jax.clear_caches(); 20 x 20 default protocol; records FLOPs, memory_analysis, RSS delta, compile/lower/ first-call, table build + cache-hit time, observed XLA thread count and affinity. Tolerance gates (log L rel 1e-12, image counts + positions 1e-10, non-zero grad, vmap, step-0 containing sets). --constant-folding re-enables folding in a separate process via a dummy pass name and refuses (CPU) unless an HLO probe confirms folding ran. Submits: RAL CPU pinned to euclid-ral-compute-1 (phase-2 EPYC host), folding off + on, branch clones of PyAutoArray/PyAutoLens with import-origin refusal; A100 regression leg. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-compute-10-2 (compute-1..19 not responding) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… off/on) + campaign note section + README line Laptop, load-inflated, not quotable: simple 1.9x, cluster 2.7x (folding on 2.0x / 2.1x), library_matches=lattice, 31/31 gates bit-identical. Compile effect unresolved on the laptop; RAL CPU (pinned) and A100 legs pending. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…U, 350637 A100) — ACCEPT Pull the RAL JSONs/PNGs (CPU folding off + on, A100) and both job logs. All three JSONs import PyAutoArray ad0bf97b / PyAutoLens b346b6a0 from the branch clones, self-label library_matches=lattice, 31/31 gates bit-identical. CPU (Xeon 8490H, folding off) control -> library: simple solved 3.540 -> 1.758 ms (2.01x), vmap-4 1.43x, plain 2.08x, cluster 5.21x / 5.16x; compile +3..+12 %; XLA temp 4.82 -> 1.69 MB / 91.6 -> 22.6 MB. Folding on: 1.39-4.54x, worst compile +16.5 %. A100: 1.01-1.07x, compile -2..+13 %, no regression. Campaign note phase-3 section: RAL tables, gates, tie-case gate decision pending at ship, stop-rule verdict, phase-4 re-rank from FLOP shares. README phase-3 bullet updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…9-24, pinned as a PyAutoLens test The source-on-step-0-vertex tie (control 3 images incl. a duplicate root vs lattice 2) is accepted as duplicate removal and pinned as test__source_on_a_step_0_vertex_returns_the_two_true_images (PyAutoLens feature/point-source-cpu-p3 972d454e). README compile figures made exact. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-> 29) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Sep 24, 2026
2 of 3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Profiling evidence for point-source CPU campaign phase 3 (PyAutoArray#568; phase 4 remains): precompute the JAX
PointSolver's static step-0 lattice, deflecting the 11 859 geometrically unique vertices instead of the 69 849 flat slots (46 516 vs 276 507 on the cluster). A four-route in-process A/B cell —control(flat, 69 849),exact(28 665 exact-float unique),lattice(11 859, cell-built) andlibrary(the linked library branches, self-labelled from the traced step-0 row count) — with fresh closures +jax.clear_caches(), 20 rounds × 20 calls, a separate-process constant-folding cell, thread/affinity and memory provenance. Decision: ACCEPT.Measured speed-up (control = flat step-0 table → library = this change; median ms per likelihood call, 20 rounds × 20 calls, bootstrap 90 % CI)
RAL CPU job 350636 (
ral, pinned Xeon Platinum 8490H, 8 CPUs, fp64) — constant folding off (PyAutoNerves default):simple_solvedsimple_solved_vmap4(per batch)simple_plaincluster_solved(2 sources, 13 components)cluster_plainRAL CPU job 350636 — constant folding on (
--constant-folding, HLO probe confirms folding ran):simple_solvedsimple_solved_vmap4(per batch)simple_plaincluster_solvedcluster_plainRAL A100 job 350637 (A100 80GB PCIe, fp64, folding off):
simple_solvedsimple_solved_vmap4(per batch)simple_plaincluster_solvedcluster_plainRead from
results/breakdown/point_source/static_lattice_ab_{hpc_ral_cpu,constant_folding_hpc_ral_cpu,hpc_ral_a100}_fp64.json(autolens_profiling). Every JSON:source_revisionsPyAutoArrayad0bf97b, PyAutoLensb346b6a0(imported from RAL branch clones),library_matches: lattice,all_gates_pass: true. XLA temp memory falls 4.82 → 1.69 MB (simple) and 91.6 → 22.6 MB (cluster) on CPU, 3.36 → 0.39 / 42.1 → 6.35 MB on the A100.Gates
7.743201200876812, unchanged since phase 1); solved positions and image counts identical (simple 4, cluster 3 + 3);jax.gradfinite, non-zero and bit-identical; vmap-4 equals scalar; step-0containing_indicessets identical. The plan's gate was the tolerance gate (logL ≤ 1e-12 rel, positions ≤ 1e-10); the A/B met it at Δ = 0.test__source_on_a_step_0_vertex_returns_the_two_true_images.Caveats
test_static_lattice_jax.py, ~85–100 s, skipped without jax), departing from its no-JAX-in-unit-tests convention.Scripts Changed
scripts/point_source/likelihood_breakdown/static_lattice_ab.py— new four-route static-lattice A/B cell (31 correctness gates, FLOPs,memory_analysis, RSS, compile/lower/first-call, table build and cache-hit time,--constant-foldingmode with an HLO probe)hpc/batch_cpu/submit_breakdown_point_source_static_lattice_ab_ral_cpu_fp64— RALralCPU submit, pinned--nodelist, folding off then on in one jobhpc/batch_gpu/submit_breakdown_point_source_static_lattice_ab_a100_fp64— RAL A100 fp64 submitresults/breakdown/point_source/static_lattice_ab_{laptop_cpu,constant_folding_laptop_cpu,hpc_ral_cpu,constant_folding_hpc_ral_cpu,hpc_ral_a100}_fp64.{json,png}— laptop witness (not quotable) and RAL rowsresults/notes/point_source_cpu_2026_09_24_ral_job_350636_static_lattice_ab.out,..._350637_static_lattice_ab_a100.out— job logsresults/notes/point_source_cpu_campaign.md— phase-3 section (mechanism, A/B, gates, tie case PASSED by human decision 2026-09-24, decision, phase-4 re-rank)README.md— dashboard lineUpstream PR
Test Plan
scripts/misc/tooling/build_readme.py --checkpassesscripts/misc/wall/check_submits.py --checkpasses (11 wall-basis submits, 0 failing)all_gates_pass: true,library_matches: latticein all three JSONsPart of PyAutoLabs/PyAutoArray#568 (phase 4 remains).
Heart RED development override
Shipped under the
AUTONOMY.md"Human override for Heart RED (development only)"./prmwith every required check green.pyauto-heart readiness, re-read immediately before opening these PRs, verdict RED, score 45):release validation FAILED (stage integrate)workspace validation not passing (4 failed, cloud#35579888156: autolens notebooks/cluster/modeling.ipynb, autolens notebooks/weak/a2744.ipynb, autolens scripts/cluster/modeling.py, +1 more)manifest drift: hub organism blurb (organs present) — 7 mismatch(es) vs PyAutoMind/repos.yamlpytest test_autoarray1645 passed atad0bf97b;pytest test_autolens756 passed, 1 xfailed at972d454e(both re-run at ship); the step-0 shape guard (11 859 traced rows) is red on main (69 849) and green on the branch; autolens_workspace_test point-sourcejax_likelihood×4 andjax_grad/gradient.pyoutput identical to main (no rtol-1e-4 pin moved); A/B 31 / 31 gates bit-identical on RAL CPU job 350636 (folding off and on) and A100 job 350637; tie case pinned as a test; profilingbuild_readme.py --checkandcheck_submits.py --checkpass.Generated by the PyAutoLabs agent workflow.
🤖 Generated with Claude Code