Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 11 additions & 19 deletions campaigns.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,13 @@ campaigns:
title: Linear-solver accuracy and cost
status: active
updated: '2026-10-08'
next: 'Phase 4a MERGED 2026-10-08 (autolens_profiling#398, fe9ca472; issue #397 closed; A100 job 399050): the A100-only
jacobi batched/unbatched difference is deterministic batch-shape-dependent Cholesky rounding (cho_factor/cho_solve differ
on 50/50 lanes from initialize at ~1e-15), amplified to order one within 1-2 iterations on the 24 Jacobi-unstable lanes
(all 20 of the 3a divergence set); not nondeterminism (deterministic-ops flag bit-identical), not a vmap defect; controls
pdip_raw <= 1.3e-13, certified <= 3.4e-12. Wiki wiki/research/jacobi_a100_batched_divergence.md with the decision table
(B ruled out, C unlikely, A or D need a Mapper corpus). Human chose option 2 (bounded evidence step): phase 5 Mapper
corpus ISSUED as #399 (delaunay_hst, rectangular_hst, slam_mixed_hst, optional interferometer_delaunay; accuracy,
timing and divergence cells; one authorized A100 job). Phase 5 delivered (PR #400, A100 job 399225): Jacobi converged 24/24 Mapper/mixed systems, 0 batch-sensitive lanes;
raw+polish 1.05-1.62x Jacobi cost. DECISION 2026-10-08 (decisions/linear-solver-mapper-default-jacobi.md): keep Jacobi
as the Mapper default, raw+polish for MGE-only, no library change. Next: /prm on the re-landed phase-5 PR (corpus out
of git, human choice); then close the programme in the task.'
evidence: https://github.com/PyAutoLabs/autolens_profiling/blob/fe9ca472/wiki/research/jacobi_a100_batched_divergence.md
next: 'Programme question CLOSED by decision 2026-10-08 (decisions/linear-solver-mapper-default-jacobi.md): keep Jacobi as
the Mapper default, raw+polish for MGE-only, no library change. Phase 5 merged as autolens_profiling#401 (766f8202; #400
superseded, corpus files out of git with sha256 + regenerate in the manifest, copies on RAL and the laptop); phases 3a/3b/4a
merged earlier (#394, #396, #398). Open evidence gaps, not tasks: wide-prior Mapper vectors, an interferometer corpus,
the n~1500 CPU batched/unbatched 4e-13 difference, rectangular criterion-2 failures. Campaign stays active for the
release re-runs of the solver cells; nothing issued.'
evidence: https://github.com/PyAutoLabs/PyAutoPulse/blob/main/decisions/linear-solver-mapper-default-jacobi.md
- id: imaging
title: Production imaging and likelihood breakdown
status: active
Expand Down Expand Up @@ -207,17 +202,14 @@ tasks:
- id: mge_nnls_fix_pyautoarray_571_slam_60
campaign: linear-solver
title: 'Linear-solver programme phase 3: GPU/vmap/A100 timing and parity rows for the solver corpus'
status: active
status: complete
priority: medium
path: tasks/mge_nnls_fix_pyautoarray_571_slam_60.md
updated: '2026-10-08'
issue: https://github.com/PyAutoLabs/autolens_profiling/issues/399
next: 'Phases 3a/3b/4a merged (#394, #396, #398; Mind records complete/2026/10/linear-solver-p3a-a100-parity.md,
linear-solver-p3b-gpu-timing.md, linear-solver-p4a-jacobi-a100-divergence.md). Phase 5 Mapper corpus issued as #399
(Mind active/linear_solver_phase5_mapper_corpus.md, worktree linear-solver-p5-mapper-corpus, Opus executing). Task
stays active until the re-landed phase-5 PR is merged. Decision taken 2026-10-08: keep Jacobi for Mapper, raw+polish
for MGE-only (decisions/linear-solver-mapper-default-jacobi.md).'
evidence: https://github.com/PyAutoLabs/autolens_profiling/pull/398
next: 'Complete 2026-10-08: phases 3a (#394), 3b (#396), 4a (#398) and 5 (#401) merged; Mind records complete/2026/10/linear-solver-p{3a-a100-parity,3b-gpu-timing,4a-jacobi-a100-divergence,5-mapper-corpus}.md.
Human decision recorded in decisions/linear-solver-mapper-default-jacobi.md. Revisit conditions live there; no follow-up issued.'
evidence: https://github.com/PyAutoLabs/autolens_profiling/pull/401
- id: autofit_profiling_bootstrap
campaign: autofit
title: 'autofit_profiling: bootstrap the repo + general PyAutoFit profiling epic'
Expand Down
2 changes: 1 addition & 1 deletion dashboard.html

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions dashboard.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# PyAutoPulse — profiling dashboard

<!-- pulse-campaigns:5561dbba1d4ce4ed1c8800f397a77dd99346300db80e0872771e47492295f923 -->
<!-- pulse-campaigns:bce1ae813dcdc2d614bbd30393760ee6b5dc2cff55b2444b1c3e62ef817fefb9 -->
## Profiling Check In

<details><summary>Full check-in prompt</summary>
Expand Down Expand Up @@ -108,13 +108,12 @@ Reviewed 2026-10-07. Decision matrix complete: last cell merged (autolens_profil

<details><summary>Linear-solver accuracy and cost — active</summary>

Reviewed 2026-10-08. Phase 4a MERGED 2026-10-08 (autolens_profiling#398, fe9ca472; issue #397 closed; A100 job 399050): the A100-only jacobi batched/unbatched difference is deterministic batch-shape-dependent Cholesky rounding (cho_factor/cho_solve differ on 50/50 lanes from initialize at ~1e-15), amplified to order one within 1-2 iterations on the 24 Jacobi-unstable lanes (all 20 of the 3a divergence set); not nondeterminism (deterministic-ops flag bit-identical), not a vmap defect; controls pdip_raw &lt;= 1.3e-13, certified &lt;= 3.4e-12. Wiki wiki/research/jacobi_a100_batched_divergence.md with the decision table (B ruled out, C unlikely, A or D need a Mapper corpus). Human chose option 2 (bounded evidence step): phase 5 Mapper corpus ISSUED as #399 (delaunay_hst, rectangular_hst, slam_mixed_hst, optional interferometer_delaunay; accuracy, timing and divergence cells; one authorized A100 job). Phase 5 delivered (PR #400, A100 job 399225): Jacobi converged 24/24 Mapper/mixed systems, 0 batch-sensitive lanes; raw+polish 1.05-1.62x Jacobi cost. DECISION 2026-10-08 (decisions/linear-solver-mapper-default-jacobi.md): keep Jacobi as the Mapper default, raw+polish for MGE-only, no library change. Next: /prm on the re-landed phase-5 PR (corpus out of git, human choice); then close the programme in the task.
Reviewed 2026-10-08. Programme question CLOSED by decision 2026-10-08 (decisions/linear-solver-mapper-default-jacobi.md): keep Jacobi as the Mapper default, raw+polish for MGE-only, no library change. Phase 5 merged as autolens_profiling#401 (766f8202; #400 superseded, corpus files out of git with sha256 + regenerate in the manifest, copies on RAL and the laptop); phases 3a/3b/4a merged earlier (#394, #396, #398). Open evidence gaps, not tasks: wide-prior Mapper vectors, an interferometer corpus, the n~1500 CPU batched/unbatched 4e-13 difference, rectangular criterion-2 failures. Campaign stays active for the release re-runs of the solver cells; nothing issued.

[Campaign evidence](https://github.com/PyAutoLabs/autolens_profiling/blob/fe9ca472/wiki/research/jacobi_a100_batched_divergence.md)
[Campaign evidence](https://github.com/PyAutoLabs/PyAutoPulse/blob/main/decisions/linear-solver-mapper-default-jacobi.md)

### Active tasks

- [Linear-solver programme phase 3: GPU/vmap/A100 timing and parity rows for the solver corpus](https://github.com/PyAutoLabs/PyAutoPulse/blob/main/tasks/mge_nnls_fix_pyautoarray_571_slam_60.md) — active: Phases 3a/3b/4a merged (#394, #396, #398; Mind records complete/2026/10/linear-solver-p3a-a100-parity.md, linear-solver-p3b-gpu-timing.md, linear-solver-p4a-jacobi-a100-divergence.md). Phase 5 Mapper corpus issued as #399 (Mind active/linear_solver_phase5_mapper_corpus.md, worktree linear-solver-p5-mapper-corpus, Opus executing). Task stays active until the re-landed phase-5 PR is merged. Decision taken 2026-10-08: keep Jacobi for Mapper, raw+polish for MGE-only (decisions/linear-solver-mapper-default-jacobi.md).

</details>

Expand Down
6 changes: 6 additions & 0 deletions tasks/mge_nnls_fix_pyautoarray_571_slam_60.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ The original task below is retained verbatim. Current scheduling state lives in
- Human decision: keep Jacobi as the Mapper default and raw+polish for MGE-only; no library change. Canonical record `decisions/linear-solver-mapper-default-jacobi.md` (indexed in `decisions.yaml`, Decision History on the board).
- Human decision (engineering, not a Pulse decision record): the three 50–56 MB corpus files stay out of git — external copies on RAL and the laptop, sha256 + regenerate command in the manifest; PR #400 to be re-landed from a fresh branch, never by rewriting the pushed one.


### Complete 2026-10-08

- Phase 5 merged as [autolens_profiling#401](https://github.com/PyAutoLabs/autolens_profiling/pull/401) (`766f8202`, lint green; #400 closed as superseded and its branch deleted on the human's instruction); issue #399 closed; Mind record `complete/2026/10/linear-solver-p5-mapper-corpus.md` (d77a7dea); worktree removed. Corpus copies verified by sha256 on RAL `/mnt/ral/jnightin/autolens_profiling_corpus/` and the laptop canonical checkout.
- Task status → complete. The programme's open question is closed by the decision record; the solver cells re-run on each release as the standing `scripts/lens/solver/` section.

---

# Linear-solver programme phase 3: GPU/vmap/A100 timing and parity rows for the solver corpus
Expand Down
Loading