diff --git a/docs/ClusterFinderCUDA_benchmark_results.md b/docs/ClusterFinderCUDA_benchmark_results.md index 58e884d5..0adf7073 100644 --- a/docs/ClusterFinderCUDA_benchmark_results.md +++ b/docs/ClusterFinderCUDA_benchmark_results.md @@ -76,7 +76,7 @@ actually sustained. Companion documents: - `docs/pedestal_precision_f32_cancellation.md` — why the naive f32 pedestal failed and how B1 fixes it -- `docs/cf_cuda_fused.pptx` — the deck these numbers feed, built by `docs/deck/build_fused_deck.py` +- `docs/cf_cuda_performance.pptx` — the deck these numbers feed, built by `docs/deck/build_performance_deck.py` --- @@ -733,12 +733,25 @@ internal chunking, which is how the ladder reproduces opt3/opt4 on the current c ### 8.2 What opt5 does *not* fix — the diagnosis that motivates opt6 ★ -At 9×9, opt5 lands at **66.39 µs against a 30.01 µs peak**. The pipelined loop runs at -`max(GPU, host)` by construction, so this is arithmetic, not inference: +At 9×9, opt5 lands at **66.39 µs against a 30.01 µs peak**: > **The GPU delivers a frame every 30.01 µs and the system delivers one every 66.39. The -> entire ~36 µs/frame gap is host-side, and overlap cannot hide it because the host term -> is the larger one.** +> ~36 µs/frame gap is host-side, and overlap cannot hide it because the host term is the +> larger one.** + +Two caveats on that sentence, both of which matter and neither of which changes it. + +**It is inference, not arithmetic.** Reading the host term straight off the end-to-end +time assumes the pipelined loop attains `max(GPU, host)` exactly. That is the design, but +it is not measured here, and if overlap were imperfect the host term could be smaller +with the balance being un-overlapped GPU. The independent support is opt6: same loop, +same two slots, and it lands on **30.01 µs — 100 % of the floor** (§9), which is +`max(GPU, host)` attained exactly. The machinery demonstrably works when the host term is +small. + +**66.39 µs is not a plateau value.** It is the best of five reps, and it still carries +**151 601 minor faults**. opt5 at 9×9 is the one row in the ladder that never reaches a +fault-free steady state — see §8.3. The host path is `collect()`'s materialization loop ([`materialize_slot`, `ClusterFinderCUDA.hpp:137`](../include/aare/ClusterFinderCUDA.hpp#L137)): @@ -751,6 +764,47 @@ despite the far larger absolute gap: pipelining hides `min(GPU, host)`, so it pa when the two terms are comparable. At 9×9 the host term is twice the GPU term, and hiding the GPU underneath it recovers only the GPU's share. + +### 8.3 opt5 at 9×9 never reaches a plateau — and what the host term actually is ★ + +Every other row in this document is quoted at steady state. This one cannot be. From +`ladder_9x9.csv` in `2026-08-20_f64_cap1700/`, with the §25 rate of **0.68 µs per +first-touch fault** applied out of sample: + +| rep | µs/frame | minor faults | fault cost | fault-free | +|--:|--:|--:|--:|--:| +| 0 | 78.56 | 460 283 | 15.65 | 62.91 | +| **1** | **66.39** | **151 601** | **5.15** | **61.23** | +| 2 | 67.34 | 95 884 | 3.26 | 64.08 | +| 3 | 81.26 | 506 241 | 17.21 | 64.04 | +| 4 | 73.97 | 334 303 | 11.37 | 62.60 | + +The fault count does not converge — 460 k → 152 k → 96 k → 506 k → 334 k — because each +rep meets a different allocator state for the 467 kB per-frame block. Contrast opt6 in the +same file: **2 072, 0, 0, 0, 0**. And contrast opt5 at **3×3**, which is clean (30–96 k +faults ≈ 0.2–0.65 µs/frame, 1.6 % spread). The contamination is specific to this one cell +of the matrix, and its cause is exactly the allocation opt6 deletes. + +**The host term is ~62 µs, not ~40.** Two independent routes agree: + +1. **Fault correction.** Subtracting the fault term collapses a **22 % raw spread into + 4.6 %**, at 61–64 µs. A rate fitted at 3×3 and applied unchanged here should not be + able to do that unless it is describing the real mechanism. +2. **A rep that was already warm.** In the f32 arm, rep 3 happened to run with only + **10 128 faults** (0.34 µs/frame) and measured **61.85 µs** with no correction at all — + inside the corrected f64 band. + +Annex A4's `opt5` row already contained this pair (`66.39 (152 k)` vs `61.85 (10 k)`, +verdict *not separable*); §8.3 is what it implies for the host term. + +**Consequence.** Any figure drawing the 9×9 host cost at 40 µs understates it by about +half. The conclusion is unaffected — the host is the taller bar either way — but the +margin is roughly 2× the GPU floor, not 1.3×. + +**Reproducing it.** Timing this row honestly needs a fresh process per rep and a +pre-touched result heap; without both, the number that comes out is an allocator state, +not a throughput. + **Fault-fairness warning.** Freeing a ~10 GB result heap hands it back to the allocator and a subsequent loop reuses it, so on a cold heap the first loop pays the entire first-touch tax and any printed ratio is meaningless. Both loops must be at plateau; drop @@ -804,14 +858,21 @@ since the sustained rate is the lower of the two. The win from `collect_view()` is `max(0, host_copy − gpu_floor)` plus the allocation it avoids: -| | bytes copied per frame by `collect()` | ≈ copy time | GPU floor | copy fits underneath? | -|---|--:|--:|--:|:--:| -| 3×3 | 2 324 × 40 B ≈ 93 kB | ~8 µs | 16.17 µs | **yes** → small win (×1.16) | -| 9×9 | 1 422 × 328 B ≈ 467 kB | ~40 µs | 30.01 µs | **no** → large win (**×2.21**) | +| | bytes copied per frame by `collect()` | memcpy at bandwidth | **host term** | GPU floor | fits underneath? | +|---|--:|--:|--:|--:|:--:| +| 3×3 | 2 330.9 × 40 B ≈ 93 kB | ~8 µs | ~9.8 µs | 16.17 µs | **yes** → small win (×1.16) | +| 9×9 | 1 422.4 × 328 B ≈ 467 kB | ~40 µs | **~62 µs** | 30.01 µs | **no** → large win (**×2.21**) | + +**The two middle columns are not the same quantity, and conflating them understates the +9×9 case by about half.** "memcpy at bandwidth" is 467 kB divided by a single-threaded +copy rate — it is what the loop would cost if it were bandwidth-bound. It is not: +[`ClusterFinderCUDA.hpp:130-136`](../include/aare/ClusterFinderCUDA.hpp#L130-L136) records +that the work is *one 467 kB malloc + first-touch per frame, allocation-bound rather than +bandwidth-bound*. The host-term column is the steady-state figure derived in §8.3. At 3×3 the copy hides under the GPU and opt5 already absorbs it, so what opt6 removes is -the per-frame allocation and the fault floor — second-order. At 9×9 the copy is 1.5× the -GPU time and cannot hide at any amount of overlap. **This is the same "tallest bar" logic +the per-frame allocation and the fault floor — second-order. At 9×9 the host term is +**twice** the GPU time and cannot hide at any amount of overlap. **This is the same "tallest bar" logic as §4, applied to the host instead of the device.** ### Reproducibility is the other half of the claim @@ -1306,7 +1367,7 @@ opt1/opt2 stop over-counting extended charge-shared events: | exploratory notebook | `python/tests/ClusterFinderCUDA_perf.ipynb` | **stores only the last run** — not a record. Archive a copy per cluster size if used | | correctness notebook | `python/tests/ClusterFinderFrozen_vs_CUDA.ipynb` | CPU↔CUDA agreement analysis | | precision study | `docs/pedestal_precision_f32_cancellation.md` | B1 derivation | -| deck | `docs/cf_cuda_fused.pptx` + `docs/deck/build_fused_deck.py` | 34 slides in the same three acts plus a 15-slide annex (A1–A5); figures from `docs/deck/make_figs.py`. The `.pptx` is untracked — rebuild it from the script | +| deck | `docs/cf_cuda_performance.pptx` + `docs/deck/build_performance_deck.py` | 35 slides in the same three acts plus a 6-group annex (A1–A6), 53 pages with dividers; figures from `docs/deck/make_figs.py` and `make_figs_kernel.py`. Rebuild with `python docs/deck/make_figs.py && python docs/deck/build_performance_deck.py` | ### CSV step labels diff --git a/docs/cf_cuda_fused.pptx b/docs/cf_cuda_performance.pptx similarity index 96% rename from docs/cf_cuda_fused.pptx rename to docs/cf_cuda_performance.pptx index 6479f119..8dd13794 100644 Binary files a/docs/cf_cuda_fused.pptx and b/docs/cf_cuda_performance.pptx differ diff --git a/docs/deck/CHANGELOG_2026-08-25.md b/docs/deck/CHANGELOG_2026-08-25.md index 2eb9b701..d37088d1 100644 --- a/docs/deck/CHANGELOG_2026-08-25.md +++ b/docs/deck/CHANGELOG_2026-08-25.md @@ -358,3 +358,99 @@ previously two-and-a-half. They now read as three kinds without being read: | code panel | framed, lighter fill, rounded | source | | callout | flat panel, coloured left spine | conclusion | | caption | none | provenance | + +--- + +## §9 — Permanent names + +`fused` described how the deck was assembled (two decks merged, once, in +August 2026); `eng_slides` was a placeholder. Neither says what the file *is*, +which is what a name has to do a year from now. Renamed on both sides: + +| was | now | what it is | +|---|---|---| +| `cf_cuda_fused.pptx` | **`cf_cuda_performance.pptx`** | the talk: kernel design, hardware limits, the seven steps | +| `cf_cuda_eng_slides.pptx` | **`cf_cuda_internals.pptx`** | the engineering addendum: contracts, ownership, API structure | +| `build_fused_deck.py` | **`build_performance_deck.py`** | | +| `build_eng_slides.py` | **`build_internals_deck.py`** | | + +Both names are audience-neutral and describe content rather than construction or +readership, so neither has to change if the audience split changes. The +`cf_cuda_` family prefix is kept, and `cf_cuda_kernel.pptx` is untouched — it is +the PSI base deck that donates the theme, not an output. + +References updated in `make_figs.py` (including the `_placements()` parse path, +which reads the deck script to keep the legibility gate in sync with the layout — +verified still resolving after the rename), `make_figs_kernel.py`, +`build_internals_deck.py` (its `SRC` path and the exec marker), the report +(§0 and the artefact table) and `python/tests/perf/kernel_resources.py`. + +The earlier dated changelogs keep the old names on purpose: they record what the +files were called on those dates. + +--- + +## §10 — opt3's other barrier, and the 9×9 bridge (33 → 35 slides) + +Two slides inserted, which shifted every later number: 31 `chrome()` indices, 7 +`section()` ranges with their item lists, and 23 prose cross-references were +remapped (`n ≤ 14 → n`, `15–16 → n+1`, `≥ 17 → n+2`). + +**New 15 — "One D2H per frame, not two".** opt3's title has always read "remove +the sync barriers", plural, but the deck told only one of them: the per-round +`cudaDeviceSynchronize`. The count-then-fetch round trip went at the same step and +appeared nowhere. Two step-flows carry it — `kernel › copy 4 B › BLOCK › read +count › copy N B › BLOCK` against `kernel › copy the whole envelope › next frame` +— because the argument is a shape, not a listing. No table, no code panel: the +point is that a transfer whose length depends on the transfer before it cannot be +streamed, and that opt3 pays ~20 % more bytes to delete that edge. + +**17 (opt5) is now 3×3 only.** It quoted ×1.31 in its title while its figure drew +3×3 proportions and its rail carried both geometries. `fig_overlap` is labelled +`3×3`, the rail keeps one column, and the freed space holds the six-line +submit/collect loop with the point that matters to an engineer: a synchronous call +became two calls and a token, and `find_clusters_batched()` wraps both so callers +who want one call keep one call. + +**New 18 — "Overlap runs out: the host is the taller bar".** The bridge into opt6, +and the answer to the question the room reliably asks. `fig_overlap_9x9` draws the +pipeline twice at measured proportions (GPU 30.01, host ~62) — once with two slots +and once with three — and lands both on the same finish line, because the host lane +is already back-to-back in both. A deeper buffer relocates GPU idle; it cannot +close it. + +## §11 — the 9×9 host term was understated by half + +`fig_resultpath` drew the 9×9 host bar at **40 µs**. That figure was 467 kB divided +by a single-threaded copy rate — what the loop would cost if it were +bandwidth-bound. `ClusterFinderCUDA.hpp:130-136` says it is not: *one 467 kB malloc ++ first-touch per frame, allocation-bound rather than bandwidth-bound*. + +Checking the raw measurement settled it. opt5 at 9×9 is the **one row in the ladder +that never reaches a fault-free plateau** — faults across five reps run +460 k → 152 k → 96 k → 506 k → 334 k with no convergence, against opt6's +2 072, 0, 0, 0, 0 in the same file, and against a clean opt5 at 3×3. Even the +quoted 66.39 µs carries 151 601 minor faults. + +Correcting each rep at the deck's own 0.68 µs/fault collapses a **22 % spread into +4.6 %**, at 61–64 µs. Independently, f32 rep 3 happened to run with 10 128 faults +and measured **61.85 µs** directly. So the host term is **~62 µs**, and the bar is +now drawn there. The ×2.21 conclusion is measured and unchanged; what changes is +that the picture explaining it no longer understates its own case. + +Report: §8.2 gained the two caveats (the host term is inference, not arithmetic; +66.39 is not a plateau), §8.3 is new and documents the fault data, and §12's +payload table now separates "memcpy at bandwidth" from "host term" instead of +printing one under the other's name. + +## §12 — housekeeping + +- `docs/deck/README.md` is new: how to build, the two mechanical invariants + (9 pt legibility, nothing past the footer) and why each exists, the numbering + hazard, and where the numbers come from. +- The overflow checker had a hardcoded input path and ignored `argv`, so it had + been validating a stale PDF. Fixed, and every check in this session's later + passes was re-run against it. +- `build_internals_deck.py` and `cf_cuda_internals.pptx` deleted: the four + engineering slides they held are now folded into the single deck, in the arc, + which is what "one deck with a bit more detail" means. diff --git a/docs/deck/README.md b/docs/deck/README.md new file mode 100644 index 00000000..087561ef --- /dev/null +++ b/docs/deck/README.md @@ -0,0 +1,96 @@ +# The CUDA ClusterFinder deck + +`docs/cf_cuda_performance.pptx` — kernel design, hardware limits, and the opt1→opt7 +optimization ladder, told in three acts ordered by which bar is tallest. + +35 numbered slides plus a 6-group annex, 53 pages once dividers and the title page +are counted. + +## Build + +```bash +python docs/deck/make_figs.py # figures -> docs/figures/*.png +python docs/deck/make_figs_kernel.py # 3 more (fig_frame, fig_occupancy, fig_tile) +python docs/deck/build_performance_deck.py +``` + +Order matters: the deck embeds the PNGs, so regenerate figures first if you touched +either `make_figs*.py`. Running only the builder is fine when you have changed slide +text or layout alone. + +Requires `python-pptx`, `matplotlib`, `pillow`, `lxml`. On this machine the only +interpreter with all four is `/home/ferjao_k/.conda/envs/py/bin/python` — the system +`python` is absent, `python3` is too old, and `python3.11` has no matplotlib. + +`docs/cf_cuda_kernel.pptx` is an **input**, not an output: it donates the PSI theme and +the title slide, and every other slide of it is deleted at build time. Do not edit the +generated `.pptx` by hand — it is overwritten on every build. Edit the script. + +## Layout guarantees, and how they are enforced + +Two invariants are checked mechanically, because both fail silently otherwise. + +**Nothing renders below 9 pt on the projected slide.** A figure's on-screen type size +is `raw_pt × (placement_width / figure_width)`, and neither factor is visible at the +point where the font size is written. `make_figs.py` closes that loop: `_placements()` +parses the placement width of every figure **out of the deck script itself**, so the +gate cannot drift from the layout it checks. Every run ends with either + +``` +legibility: every string in every figure renders at >= 9.0 pt on the slide. +``` + +or a list of offenders. Fix them; do not raise the floor. 9 pt on a 13.33 × 7.5 in +slide is about 1/60 of slide height, which is the conventional bound for readable +supporting detail at 6–7 m. + +Note the feedback trap: `savefig(bbox_inches="tight")` grows the saved canvas to fit a +long in-figure caption, which shrinks the placement scale, which shrinks the caption. +Raising the font size can make text *smaller*. Shorten the string or re-lay the axes. + +**No text runs past the footer line.** Convert and check: + +```bash +libreoffice --headless --convert-to pdf --outdir /tmp/deck docs/cf_cuda_performance.pptx +python scratch/overflow.py /tmp/deck/cf_cuda_performance.pdf +``` + +Only page 1 may be flagged — that is the PSI template's own title slide. The same +script counts unrendered `**` markup, which is the usual symptom of putting markup in a +helper that does not parse it: `bullets`, `callout`, `table` and `code` understand +`**bold**`; `caption` does not, and nothing understands backticks or `*italics*`. + +## Numbering + +Slide indices are explicit — `chrome(s, 17, …)` — and so are the section ranges and the +prose cross-references ("expands slide 27"). **Inserting a slide shifts all three.** As +of this writing that is 31 `chrome()` calls, 7 `section(… rng=…)` ranges with their item +lists, and ~23 prose references. Renumber all of them in one pass and rebuild; the +progress track and the `N / 35` counter both read `N_SLIDES`. + +## Where the numbers come from + +`docs/ClusterFinderCUDA_benchmark_results.md`, quotable rows only. Two conventions the +deck depends on, both defined in slide 20: + +- **s1** is one stream — true, exclusive engine durations. +- **s4** is the shipped four-stream pipeline — engine *occupancy*, the union of + intervals per frame. The kernel overlaps itself across streams (9×9 f64 reads 32.66 µs + at s4 against ~43.2 µs per kernel); H2D and D2H do not, because there is one copy + engine per direction. +- **floor** = `1 / max(H2D, kernel, D2H)` at s4, taking the lower of the nsys estimate + and the best rate actually sustained. One quantity, two units: 30.01 µs/frame = + 33 323 FPS. + +One row is not at steady state and is flagged as such on its slide and in §8.3 of the +report: opt5 at 9×9, whose per-frame allocation never lets the fault count converge. + +## Files + +| file | role | +|---|---| +| `build_performance_deck.py` | the deck: tokens, helpers, every slide | +| `make_figs.py` | most figures, plus the legibility gate | +| `make_figs_kernel.py` | `fig_frame`, `fig_occupancy`, `fig_tile` | +| `frame147.json`, `validation_tiers.json` | measured data two figures read | +| `CHANGELOG_2026-08-*.md` | dated records of past revisions; they keep the file names in use on those dates | diff --git a/docs/deck/build_fused_deck.py b/docs/deck/build_performance_deck.py similarity index 91% rename from docs/deck/build_fused_deck.py rename to docs/deck/build_performance_deck.py index 4f30b651..4b5ce7a2 100644 --- a/docs/deck/build_fused_deck.py +++ b/docs/deck/build_performance_deck.py @@ -1,4 +1,4 @@ -"""Build docs/cf_cuda_fused.pptx — the algorithm + kernel + hardware half of +"""Build docs/cf_cuda_performance.pptx — the algorithm + kernel + hardware half of docs/cf_cuda_kernel.pptx fused with the opt1→opt7 optimization story. The ladder is told in three acts, ordered by which bar is tallest: @@ -39,7 +39,7 @@ from PIL import Image DOCS = Path(__file__).resolve().parent.parent FIGS = DOCS / "figures" BASE = DOCS / "cf_cuda_kernel.pptx" # PSI theme + title slide -OUT = DOCS / "cf_cuda_fused.pptx" +OUT = DOCS / "cf_cuda_performance.pptx" # ---------------------------------------------------------------- design tokens BG = RGBColor(0x0B, 0x10, 0x18) @@ -78,7 +78,7 @@ R = "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}" prs = Presentation(str(BASE)) prs.slide_width, prs.slide_height = In(W), In(H) BLANK = prs.slide_layouts[0] # 'Blank Slide' — zero shapes -N_SLIDES = 33 +N_SLIDES = 35 # ------------------------------------------------------------------- helpers @@ -457,8 +457,8 @@ def section(kicker, title, thesis, items, rng, col=ACCENT, carry=None, Deliberately sparse — it exists to buy 10–15 s of stage setting, so it has to be readable at a glance and finished before the audience starts reading ahead. It carries no slide number and takes no tick of its own on the - progress track: slides 3–33 keep the numbers they have, so the annex's - cross-references ("expands slide 25") stay true. What it lights up instead + progress track: slides 3–35 keep the numbers they have, so the annex's + cross-references ("expands slide 27") stay true. What it lights up instead is the *range* the section covers, which is the thing the audience wants. """ s = new_slide() @@ -1011,8 +1011,9 @@ section("Act I of III · feed the GPU", [(12, "opt1 · first port"), (13, "opt2 · streams + batching"), (14, "opt3 · no barriers"), - (15, "opt4 · pinned memory")], - rng=(12, 15), + (15, "opt3 · one D2H, not two"), + (16, "opt4 · pinned memory")], + rng=(12, 16), carry=("Starting from", "6 762 FPS", "24-thread CPU · 14.8 s for 100 000 frames")) @@ -1040,7 +1041,7 @@ callout(s, M, 4.62, COL, "overlap, so the **floor** — the fastest a frame can go if the host cost " "nothing — is **max(H2D, kernel, D2H)**, never the sum. At 3×3 that is " "max(**16.17**, 15.17, 7.69) = **16.2 µs → 61 859 FPS**. Exactly how each of " - "those three is measured is slide 18; it does not change this one.", + "those three is measured is slide 20; it does not change this one.", h=1.00, size=10.5) figure(s, "fig_opt1_timeline", M, 5.80, COL) rail(s, [ @@ -1123,9 +1124,74 @@ caption(s, 8.35, 6.15, 4.25, "not sketched: H2D and D2H are one FIFO engine each, so a stream waits for the " "copy engine, never for another stream's copy to finish overlapping it.") +# ===================================================== 15 · OPT3b · ONE D2H +# opt3's title has always said "barriers", plural, but the deck only ever told +# one of them: the per-round cudaDeviceSynchronize. The count-then-fetch round +# trip went at the same step and was never shown, which made opt2 -> opt3 look +# like a refactor instead of the change of contract it was. +s = new_slide() +chrome(s, 15, "Act I · opt3 · the other barrier", + "One D2H per frame, not two") +bullets(s, M, 1.92, 11.9, [ + "opt2 asked the device **how many clusters**, blocked until the answer came " + "back, then asked for **that many**. The size of the second copy was a " + "function of data that had not arrived yet.", + "opt3 gives every frame a **fixed envelope** — count, then room for **cap** " + "clusters — so the copy's size is known at construction and can be queued " + "with the kernel. The count is still read, but **afterwards**, on the host.", +], size=11) + +flow(s, M, 3.42, 11.9, + ["kernel", "copy 4 B", "BLOCK", "read count", "copy N B", "BLOCK"], h=0.62) +caption(s, M, 4.12, 11.9, + "opt2 · two transfers and two stalls per frame, because the second one " + "cannot be issued until the first has landed.", size=9.5) + +flow(s, M, 4.62, 11.9, + ["kernel", "copy the whole envelope", "→ next frame, host not involved"], h=0.62) +caption(s, M, 5.32, 11.9, + "opt3 · one transfer, no stall. Nothing in the loop waits on a value.", size=9.5) + +callout(s, M, 5.86, 11.9, + "**You cannot stream a transfer whose length depends on the transfer " + "before it.** opt3 pays bytes to delete that dependency: the envelope is " + "sized by the **cap**, not by how many clusters were found, so an empty " + "frame costs the same D2H as a full one — 120 kB at 3×3 against 93 kB of " + "real clusters.", h=0.94, size=10.5) +caption(s, M, 6.94, 11.9, + "Everything downstream needs that fixed layout: opt6 could not hand out a " + "view into a buffer whose shape was not known in advance.", size=9) +notes(s, """The point to say out loud: this is the one step in the ladder that is +not a setting. It changed the kernel signature, the buffer ownership and the +collection loop, and it is why the opt1/opt2 class is frozen in a separate header +(ClusterFinderCUDAOpt2.hpp) rather than being a flag on the current one. + +The dependency edge is the whole argument. In opt2 the second memcpy's SIZE +argument is *sc.h_cluster_count -- host memory that only becomes valid after a +cudaStreamSynchronize (Opt2.hpp:277-294, then :442-446). So the sequence is +forced: kernel, copy 4 bytes, BLOCK, read, copy N bytes, BLOCK. Two of those six +steps are the host doing nothing, every frame. + +opt3 fixes the size once in the constructor (m_output_bytes_per_frame = +m_clusters_offset + cap * sizeof(ClusterType), ClusterFinderCUDA.hpp:440-445), so +the copy is enqueued in the same loop iteration as the kernel launch (:725-728). +The kernel gets two pointers into ONE allocation (:701 and :709). + +What it costs: 120 kB instead of 93 kB per frame at 3x3, 558 instead of 467 at +9x9. Roughly 20 % more bytes on an engine that had spare time, to buy back a +barrier that was stalling everything. That is also why the cap becomes a +throughput knob only from opt3 onward: under opt2 it bounded an allocation, under +opt3 it sets the D2H bar directly (report section 4.2). + +If asked why opt2 did not simply copy a cap-sized buffer and skip the sync: that +IS opt3. It could not be done in opt2 because the clusters lived in their own +device allocation with no count field and no fixed per-frame stride -- there was +no single object to copy. Merging the two buffers is what created one.""") + + # =========================================================== 14 · OPT4 s = new_slide() -chrome(s, 15, "Act I · opt4 · pinned (page-locked) memory", +chrome(s, 16, "Act I · opt4 · pinned (page-locked) memory", "Pinning the input buys DMA-speed H2D: ×1.32") bullets(s, M, 1.95, 12.0, [ "Normal host memory is **pageable**: the OS may move or swap it. A DMA engine " @@ -1162,15 +1228,16 @@ section("Act II of III · get the results back", "The host copy is now the tallest bar", "Frames go in at DMA speed. The results still come back slowly. Still 3×3, " "but 9×9 is where this act pays most.", - [(16, "opt5 · host↔GPU overlap"), - (17, "opt6 · zero-copy")], - rng=(16, 17), col=PALE, + [(17, "opt5 · host↔GPU overlap"), + (18, "9×9 · why overlap runs out"), + (19, "opt6 · zero-copy")], + rng=(17, 19), col=PALE, carry=("Arriving at", "38 486 FPS", "opt4 · 26.0 µs per frame · 62 % of the GPU floor")) # =========================================================== 15 · OPT5 s = new_slide() -chrome(s, 16, "Act II · opt5 · host↔GPU overlap", +chrome(s, 17, "Act II · opt5 · host↔GPU overlap", "Overlapping host and GPU hides min(host, GPU): ×1.31") bullets(s, M, 1.92, COL, [ "opt3 overlapped H2D ∥ kernel ∥ D2H **across streams, inside one batch**, but " @@ -1179,10 +1246,14 @@ bullets(s, M, 1.92, COL, [ "opt5 keeps **one batch in flight while materialising the previous one**: chunk " "i+1 is submitted before chunk i is collected.", ]) -figure(s, "fig_overlap", M - 0.15, 3.28, COL + 0.30) -callout(s, M, 5.86, COL, - "The time hidden is **min(GPU, host)**, so this pays most when the two are " - "comparable, and cannot rescue a host term that is simply larger.") +figure(s, "fig_overlap", M - 0.15, 3.26, COL + 0.30) +code(s, M, 5.88, COL, [ + "tok = cf.«submit_batch»(data[a0:b0], first_frame=a0)", + "for a, b in bounds[1:]:", + " nxt = cf.«submit_batch»(data[a:b], first_frame=a) // GPU starts i+1", + " results.extend(cf.«collect»(tok)) // host unpacks i", + " tok = nxt", +], size=9, title="you never write these: find_clusters_batched() wraps them") notes(s, """opt5 — host<->GPU overlap. Code and chunk sizing are on annex A3. tok = cf.submit_batch(data[a0:b0], first_frame=a0) @@ -1206,21 +1277,81 @@ twice the GPU term, so overlap hides only the smaller one and opt5 is worth x1.20 - which is exactly the diagnosis that motivates opt6: you cannot overlap your way out of a host term that is simply larger. Report SS8.2.""") rail(s, [ - ("label", "opt5 · 3×3 and 9×9 · no CUDA work at all"), + ("label", "opt5 · 3×3 · no CUDA work at all"), ("gap", 0.10), ("stat", "3×3 throughput", "50 410 FPS", PALE), ("row", "per frame · step · of floor", "19.8 µs · ×1.31 · 81 %", ACCENT), - ("gap", 0.14), - ("stat", "9×9 throughput", "15 063 FPS", PALE), - ("row", "per frame · step · of floor", "66.4 µs · ×1.20 · 45 %", AMBER), - ("gap", 0.15), - ("note", "For clusters that must outlive the finder, this is the endpoint at " - "3×3: opt6 lends, it does not give."), + ("gap", 0.16), + ("label", "the whole change"), + ("gap", 0.06), + ("row", "CUDA API calls added", "none", TEXT2), + ("row", "what moved", "the host loop", PALE), + ("gap", 0.16), + ("note", "Told at 3×3, where the host copy is SHORTER than the GPU floor and " + "tucks underneath it. 9×9 is the other case, and it is the next " + "slide. For clusters that must outlive the finder, 3×3 opt5 is the " + "endpoint: opt6 lends, it does not give."), ]) + +# ============================================ 18 · WHY OVERLAP RUNS OUT AT 9x9 +# The bridge from opt5 to opt6. Slide 17 is told at 3x3, where the host copy fits +# underneath the GPU floor and two slots are plainly enough. At 9x9 the host is +# the taller bar and the room reliably guesses "add more slots" -- so the picture +# answers that guess directly, by drawing three slots and landing on the same +# finish line. Once buffering is ruled out, opt6 is the only move left. +s = new_slide() +chrome(s, 18, "Act II · opt5 at 9×9 · why overlap runs out", + "Overlap runs out: the host is the taller bar") +bullets(s, M, 1.84, 11.9, [ + "At 3×3 the host copy is **shorter than the GPU floor** and hides underneath " + "it. At 9×9 it is **roughly twice the floor** — ~62 µs of malloc-and-copy " + "against 30.01 µs of GPU — so overlap still works, it just has less to hide. " + "That is why opt5 is worth **×1.20** here and ×1.31 at 3×3.", +], size=10.5) +figure(s, "fig_overlap_9x9", M + 0.15, 2.52, 11.3) +callout(s, M, 6.30, 11.9, + "A deeper buffer **relocates the GPU's idle, it does not close it** — the " + "host lane is already back-to-back in both strips, so it alone sets the " + "pace. **The only way down is to make the host term smaller.**", + h=0.66, size=10.5) +caption(s, M, 7.06, 11.9, + "Measured proportions: GPU 30.01 µs/frame, host ~62 µs steady-state. " + "Fault correction and the raw 66.4 µs are in the notes and annex A4.", + size=9) +notes(s, """This slide exists because "add more slots" is the reliable guess here, +and it is worth letting the room say it out loud before the second strip goes up. + +The queueing argument, if it is asked for: with producer period G and consumer +period H, an N-buffer pipeline has steady-state period max(G, H) for every N >= 2. +Buffers DECOUPLE two stages; they do not speed up either. Depth beyond 2 only +helps when the periods vary -- it absorbs jitter, at the cost of latency and +pinned memory. Here the work per chunk is near constant, so there is no jitter to +absorb. + +The concrete version lands better: a third slot needs somebody to fill it, and +the only host thread is inside collect(). Adding slots without adding a producer +thread is adding storage to a queue that is not storage-bound. + +"So would a producer thread help?" It would let submit and collect overlap, but +the host term is dominated by malloc + first touch, which is allocator-serialised +anyway. That was measured and reverted (ClusterFinderCUDA.hpp:130-136): 2.27 M +faults at 8 threads against 9.7 k at 1, a 6 % gain at best and a 33 % LOSS when +results are freed promptly. The comment there ends with the right conclusion -- +stop allocating per frame, do not copy faster. That is opt6. + +ON THE 62 US, if challenged. It is not measured directly; no one timed the host +loop. Two independent routes agree on it. (1) Fault-correct the five f64 reps at +0.68 us/fault -- the same rate fitted at 3x3 and applied out of sample -- and a +22 % raw spread collapses to 4.6 %, at 61-64 us. (2) f32 rep 3 happened to run +with only 10 128 faults and measured 61.85 us with no correction at all. The +"~40 us" that used to be on the opt6 slide was the memcpy alone, computed at +bandwidth; the loop is allocation-bound, not bandwidth-bound, so it under-counted +the host term by about half.""") + # =========================================================== 19 · OPT6 s = new_slide() -chrome(s, 17, "Act II · opt6 · zero-copy collection", +chrome(s, 19, "Act II · opt6 · zero-copy collection", "Read the results in place: ×2.21 at 9×9") bullets(s, M, 1.92, COL, [ "The D2H lands in a **pinned host buffer**. collect() then allocates one " @@ -1233,8 +1364,8 @@ bullets(s, M, 1.92, COL, [ figure(s, "fig_resultpath", M - 0.15, 3.05, COL + 0.30) callout(s, M, 5.86, COL, "The win is **max(0, host copy − GPU floor)**: at 3×3 the 8 µs copy hides under " - "a 16.2 µs floor and opt5 had already absorbed most of it; at 9×9 the 40 µs copy " - "is **larger than the floor** and cannot hide at any overlap.", h=0.80, size=10) + "a 16.2 µs floor and opt5 had already absorbed most of it; at 9×9 the ~62 µs " + "host term is **twice the floor** and cannot hide at any overlap.", h=0.80, size=10) caption(s, M, 6.78, COL, "The two bars are the competing costs, not the two steps; the step times are " "on the right.", size=8.5) @@ -1280,11 +1411,11 @@ section("Act III of III · the kernel", "Only now is the kernel the tallest bar", "The story moves to 9×9, where the kernel is finally the tallest bar. First, " "how the engine times in this act are measured.", - [(18, "how the engine times are measured"), - (19, "opt7 · FP32 pedestal"), - (20, "catastrophic cancellation"), - (21, "why it comes last")], - rng=(18, 21), col=AMBER, + [(20, "how the engine times are measured"), + (21, "opt7 · FP32 pedestal"), + (22, "catastrophic cancellation"), + (23, "why it comes last")], + rng=(20, 23), col=AMBER, carry=("Arriving at", "58 495 FPS", "opt6 · 3×3, and 33 323 FPS at 9×9, where this act pays")) @@ -1295,7 +1426,7 @@ section("Act III of III · the kernel", # grid of numbers; this slide keeps only the three definitions and the one # picture that makes the middle one make sense. s = new_slide() -chrome(s, 18, "How the engine times are measured", +chrome(s, 20, "How the engine times are measured", "Two configurations, one floor") cards = [ ("s1", ACCENT, "One stream, nothing else running", @@ -1361,7 +1492,7 @@ the floor is the busiest engine." The rest is in A1.""") # =========================================================== 18 · OPT7 why s = new_slide() -chrome(s, 19, "Act III · opt7 · FP32 device pedestal", +chrome(s, 21, "Act III · opt7 · FP32 device pedestal", "FP32 halves pedestal traffic: −41 % kernel time") bullets(s, M, 1.95, 7.5, [ "**~80 % of pixels** take the **pedestal-update** branch: it reads off, sum and " @@ -1403,7 +1534,7 @@ s1 alone would say the kernel is the thing to optimise and stop there. Right is s4, the shipped four-stream pipeline, and it says something different: the f64 kernel's busy time falls to 32.66 (self-overlap, 1.32x) while every transfer RISES under contention, and once opt7 puts the kernel at 23.94 the D2H -bar at 25.24 is above it. That is the handover slide 21 is about. +bar at 25.24 is above it. That is the handover slide 23 is about. So: -40.5 % is the s1 kernel claim and is the honest headline for what the typedef does to the arithmetic. -26.7 % is the same change measured at s4, where @@ -1423,7 +1554,7 @@ nothing end to end, because at 3x3 H2D is the floor.""") # two-line change that removes it. The error-floor curve and the full rewrite # are annex A5. s = new_slide() -chrome(s, 20, "Act III · opt7 · catastrophic cancellation", +chrome(s, 22, "Act III · opt7 · catastrophic cancellation", "Accumulate what is small, not what is large") bullets(s, M, 1.90, COL, [ (TEXT2, "**The trap.** The variance was computed as **var = E[X²] − mean²**. " @@ -1485,7 +1616,7 @@ change the update's arithmetic cost.""") # =========================================================== 21 · OPT6 when s = new_slide() -chrome(s, 21, "Act III · why this act comes last", +chrome(s, 23, "Act III · why this act comes last", "The saving never grew — the frame around it shrank") figure(s, "fig_f32_absolute", M, 1.95, 11.9) callout(s, M, 4.86, 5.85, @@ -1514,16 +1645,16 @@ caption(s, M, 6.30, 11.9, section("Results · what came out of it", "The whole ladder, and how to use it", "Both cluster sizes end to end, and the audit behind the numbers.", - [("22–23", "Results, both cluster sizes"), - ("24", "Where the time went"), - ("25–26", "What the numbers survived")], - rng=(22, 26), col=PALE, + [("24–25", "Results, both cluster sizes"), + ("26", "Where the time went"), + ("27–28", "What the numbers survived")], + rng=(24, 28), col=PALE, carry=("Arriving at", "58 495 FPS", "opt6 · everything after this is the ladder seen whole")) # =========================================================== 22 · RESULTS s = new_slide() -chrome(s, 22, "Results · 3×3", "×9.1 at 3×3, sitting on the H2D floor") +chrome(s, 24, "Results · 3×3", "×9.1 at 3×3, sitting on the H2D floor") figure(s, "fig_arc", 1.95, 1.88, 9.4) callout(s, M, 5.80, 5.85, "**×9.1 over 24 CPU threads**, 14.8 s → 1.63 s for 100 000 frames, " @@ -1532,7 +1663,7 @@ callout(s, 6.75, 5.80, 5.85, "Every step is **monotonic**, and correctness is held constant **throughout**: " "0.004 % against the CPU baseline; against the CPU twin that isolates the port, " "**exact on the f64 pedestal** and **6 clusters in 23 M** on the shipped f32 " - "(slides 27–30).", h=0.8, color=AMBER) + "(slides 29–32).", h=0.8, color=AMBER) caption(s, M, 6.62, 11.9, "3×3 clusters · nσ = 5 · 100 000 frames · batch 2 000 · 4 streams · 5 reps · " "warm = best of reps 1–4 (collect() does not converge, it oscillates between " @@ -1541,7 +1672,7 @@ caption(s, M, 6.62, 11.9, # =========================================================== 23 · RESULTS 9x9 s = new_slide() -chrome(s, 23, "Results · 9×9", "×26.5 at 9×9, and opt7 hands the floor to D2H") +chrome(s, 25, "Results · 9×9", "×26.5 at 9×9, and opt7 hands the floor to D2H") figure(s, "fig_arc_9x9", 1.95, 1.88, 9.4) callout(s, M, 5.80, 5.85, "**×26.5 over 32 CPU threads**; the kernel is the tallest bar for the whole " @@ -1559,7 +1690,7 @@ caption(s, M, 6.62, 11.9, # =========================================================== 24 · WHERE TIME GOES s = new_slide() -chrome(s, 24, "Where the time actually went", +chrome(s, 26, "Where the time actually went", "The host bar dies first, then the floor itself drops") figure(s, "fig_overhead", 1.95, 1.95, 9.4) callout(s, M, 5.30, 5.85, @@ -1585,7 +1716,7 @@ caption(s, M, 6.45, 11.9, # themselves. The other two are instrument caveats: named here, worked through # in A6. The full three-card version is A6·1. s = new_slide() -chrome(s, 25, "Behind the numbers · the artefact that dominates", +chrome(s, 27, "Behind the numbers · the artefact that dominates", "A GPU benchmark mostly measures the operating system") bullets(s, M, 1.90, COL, [ "Every run that keeps its results materialises **~10 GB of clusters**. The " @@ -1630,7 +1761,7 @@ rail(s, [ # =========================================================== 25 · FIRST RUN s = new_slide() -chrome(s, 26, "Behind the numbers · what a user actually gets", +chrome(s, 28, "Behind the numbers · what a user actually gets", "A first run loses a third of its throughput to page faults") figure(s, "fig_first_run", 1.37, 1.70, 10.6) callout(s, M, 5.98, 5.85, @@ -1652,17 +1783,17 @@ caption(s, M, 6.76, 11.9, section("Validation · does it find the same photons", "Every number so far assumed the answers are identical", "Whether the CUDA finder returns the same clusters as the CPU.", - [("27–28", "The fair comparison"), - ("29–30", "The residual, dissected"), - ("31–32", "For users"), - ("33", "What is next")], - rng=(27, 33), col=PALE, + [("29–30", "The fair comparison"), + ("31–32", "The residual, dissected"), + ("33–34", "For users"), + ("35", "What is next")], + rng=(29, 35), col=PALE, carry=("Established", "×9.1 and ×26.5", "on the hardware floor at both cluster sizes, if the physics holds")) # ============================================ 26 · PEDESTAL UPDATE TIMING s = new_slide() -chrome(s, 27, "Validation · why a CPU twin was needed", +chrome(s, 29, "Validation · why a CPU twin was needed", "CPU and CUDA update the pedestal at different moments") figure(s, "fig_pedtiming", M - 0.15, 1.90, 12.2) callout(s, M, 5.30, 5.85, @@ -1708,7 +1839,7 @@ Frozen ships in the library as a diagnostic, not as the recommended finder.""") # =========================================================== 26 · CORRECTNESS s = new_slide() -chrome(s, 28, "Validation · isolating one variable at a time", +chrome(s, 30, "Validation · isolating one variable at a time", "CUDA and its CPU twin agree exactly: 0 in 23 million") bullets(s, M, 1.86, 12.0, [ "**ClusterFinderFrozen** makes byte-for-byte the same decisions as ClusterFinder " @@ -1748,7 +1879,7 @@ caption(s, M, 6.58, 11.9, # ================================================ 28 · THE MISMATCH, SEEN s = new_slide() -chrome(s, 29, "Validation · the disagreement, seen", +chrome(s, 31, "Validation · the disagreement, seen", "The whole disagreement is one duplicate centre") figure(s, "fig_mismatch147", 1.37, 1.72, 10.6) callout(s, M, 6.30, 5.85, @@ -1783,7 +1914,7 @@ reproducible from ClusterFinderFrozen_vs_CUDA.ipynb directly.""") # ========================================================== 27 · RESIDUALS s = new_slide() -chrome(s, 30, "Validation · the six residuals, dissected", +chrome(s, 32, "Validation · the six residuals, dissected", "float32 cannot tell these two pixels apart") code(s, M, 1.88, 6.35, [ "frame 147 centre (x=202, y=8) 3×3 window", @@ -1850,7 +1981,7 @@ Consequences worth stating out loud if asked: # =========================================================== 28 · API 1 s = new_slide() -chrome(s, 31, "For users · Python API", "The fast path in eight lines") +chrome(s, 33, "For users · Python API", "The fast path in eight lines") code(s, M, 1.95, 7.6, [ "from aare import File, ClusterFinderCUDA", "", @@ -1890,7 +2021,7 @@ callout(s, 8.6, 6.35, 4.1, # =========================================================== 27 · API 2 s = new_slide() -chrome(s, 32, "For users · choosing the knobs", +chrome(s, 34, "For users · choosing the knobs", "Five knobs, and the one that silently truncates") hdr = [("Parameter", 1.05), ("What it does", 3.6), ("Guidance", 5.2)] y = 2.0 @@ -1940,7 +2071,7 @@ callout(s, M, 6.55, 11.2, # =========================================================== 28 · NEXT s = new_slide() -chrome(s, 33, "Where this leaves us", +chrome(s, 35, "Where this leaves us", "The bottleneck has walked from the host, to the GPU, to the wire") cards = [ ("DONE", ACCENT, "×9.1 at 3×3, ×26.5 at 9×9", @@ -2008,12 +2139,12 @@ section("", "the arc is finished; what follows answers questions")) # =========================================================================== -# ANNEX — the measurement detail behind slides 24–25, and the rejected routes +# ANNEX — the measurement detail behind slides 26–27, and the rejected routes # =========================================================================== # ---- A1 · THE CONVENTION ------------------------------------------------- s = new_slide() -annex_chrome(s, 1, "measurement convention · expands slide 18", +annex_chrome(s, 1, "measurement convention · expands slide 20", "Uncontended, or as the pipeline runs it") bullets(s, M, 1.90, 12.0, [ "Every engine time in this deck is tagged **[build · s1|s4]**. **s1** is one " @@ -2142,7 +2273,7 @@ rail(s, [ # Was a main-arc slide. It answers "did you try just making the copy faster?", # which is a question, not a step in the argument, so it belongs here. s = new_slide() -annex_chrome(s, 2, "rejected routes · the result copy · expands slide 18", +annex_chrome(s, 2, "rejected routes · the result copy · expands slide 20", "The copy is allocation-bound, not bandwidth-bound", part=3, nparts=3) rows = [ ("B\u2032", "One allocation per chunk", "collect_packed()", @@ -2180,7 +2311,7 @@ callout(s, M, 6.38, 11.9, # ---- A4 · THE OPT5 CODE -------------------------------------------------- s = new_slide() -annex_chrome(s, 3, "opt5 · the overlap code · expands slide 17", +annex_chrome(s, 3, "opt5 · the overlap code · expands slide 19", "The overlap, in six lines, and why you never write them") code(s, M, 1.86, 7.15, [ "tok = cf.«submit_batch»(data[a0:b0], first_frame=a0)", @@ -2225,7 +2356,7 @@ caption(s, M, 6.80, 12.0, # ---- A5 · THE FAULT MODEL ------------------------------------------------ s = new_slide() -annex_chrome(s, 4, "the fault model · expands slide 21", +annex_chrome(s, 4, "the fault model · expands slide 23", "The fault model, tested against every step") bullets(s, M, 1.90, 12.0, [ "Slide 26 fits **0.68 µs per first-touch fault** on the **3×3 f32** ladder, where " @@ -2253,17 +2384,17 @@ caption(s, M, 6.52, 12.0, "ladder_9x9.csv in results/2026-08-20_{f64,f32}_cap1700/, warm = best of reps " "1–4, faults are that rep's own getrusage minor-fault count. Predicted = Δfaults " "× 0.68 µs ÷ 20 000 frames, with 0.68 carried in unchanged from the 3×3 fit " - "(slide 25): nothing on this slide is tuned to make the columns agree. Observed " + "(slide 27): nothing on this slide is tuned to make the columns agree. Observed " "vs predicted: +13.22 / +13.37, −4.63 / −0.02, −4.54 / −4.81, −4.87 / 0.00. " "This table replaces an earlier figure that quoted opt3's +16 % as a measurement " "of the result path; it is a measurement of two allocator states.") # ---- A5 · THE VARIANCE REWRITE IN FULL ----------------------------------- -# Was main-arc slide 21, plus the error-floor panel that used to share -# fig_cancellation. Both are the quantitative backing for slide 20's third +# Was main-arc slide 23, plus the error-floor panel that used to share +# fig_cancellation. Both are the quantitative backing for slide 22's third # bullet, and neither is needed to follow the argument. s = new_slide() -annex_chrome(s, 5, "the variance rewrite · expands slide 20", +annex_chrome(s, 5, "the variance rewrite · expands slide 22", "The rewrite in full, and which pixels the error reached") bullets(s, M, 1.90, 7.4, [ "Freeze a per-pixel baseline **X₀ = round(mean)** once, at the end of pedestal " @@ -2299,10 +2430,10 @@ caption(s, 8.30, 2.00 + h + 0.18, 4.32, size=9) # ---- A6·1 · THE THREE ARTEFACTS ------------------------------------------ -# Main-arc slide 25 keeps only the first of these three, because it is the only +# Main-arc slide 27 keeps only the first of these three, because it is the only # one that moves a number the audience is shown. This is that slide as it stood. s = new_slide() -annex_chrome(s, 6, "benchmark artefacts · expands slide 25", +annex_chrome(s, 6, "benchmark artefacts · expands slide 27", "Three ways a GPU benchmark lies", part=1, nparts=4) items = [ ("First-touch page faults", AMBER, @@ -2341,7 +2472,7 @@ callout(s, M, 6.68, 11.9, # ---- A6 · FAULTS --------------------------------------------------------- s = new_slide() -annex_chrome(s, 6, "benchmark artefacts · expands slide 25", +annex_chrome(s, 6, "benchmark artefacts · expands slide 27", "First-touch page faults: two sources, one counter", part=2, nparts=4) bullets(s, M, 1.90, 12.0, [ "A page exists in the process's address space but has no physical frame yet. " @@ -2407,7 +2538,7 @@ rail(s, [ ("gap", 0.20), ("note", "Same kernel. The s4 column is the union of kernel intervals per frame, " "not how long one kernel takes. Quote s1 for duration; s4 feeds the floor, " - "subject to the sustained-rate rule on slide 18. Full grid: A1."), + "subject to the sustained-rate rule on slide 20. Full grid: A1."), ]) # ---- A8 · NSYS ----------------------------------------------------------- diff --git a/docs/deck/make_figs.py b/docs/deck/make_figs.py index 53887952..e62a69d5 100644 --- a/docs/deck/make_figs.py +++ b/docs/deck/make_figs.py @@ -1,4 +1,4 @@ -"""Figures for docs/cf_cuda_fused.pptx — deck palette, dark. +"""Figures for docs/cf_cuda_performance.pptx — deck palette, dark. Every number here is a quotable row from docs/ClusterFinderCUDA_benchmark_results.md, i.e. from python/tests/perf/results/. Acts I and II are the f64 arm, Act III is @@ -122,7 +122,7 @@ def _placements(): actually use. Where a figure appears twice, the narrowest placement wins, since that is the one that sets the smallest text. """ - deck = (Path(__file__).resolve().parent / "build_fused_deck.py") + deck = (Path(__file__).resolve().parent / "build_performance_deck.py") if not deck.exists(): return {} env = {"M": 0.7, "COL": 7.9, "RAIL_W": 3.5, "RAIL_X": 9.2, @@ -149,7 +149,7 @@ def save(fig, name, place_w=None): `place_w` is the width the deck places this figure at. Passing it turns the check on; the figure list at the bottom of this module keeps it in sync with - build_fused_deck.py, and tools/audit prints both sides. + build_performance_deck.py, and tools/audit prints both sides. """ path = OUT / f"{name}.png" texts = [(t.get_text(), t.get_fontsize()) @@ -739,27 +739,27 @@ def fig_resultpath(): for ax, title, floor, copy_us, gain, verdict, col in [ (a1, "3×3 · host copy 93 kB / frame", 16.17, 8.0, "×1.16", "copy hides under the GPU\n→ small win", ACCENT), - (a2, "9×9 · host copy 467 kB / frame", 30.01, 40.0, "×2.21", + (a2, "9×9 · host copy 467 kB / frame", 30.01, 62.0, "×2.21", "copy is larger than the GPU\n→ cannot hide at any overlap", AMBER), ]: ax.bar([0], [floor], width=0.5, color=col, zorder=3, linewidth=0) ax.bar([1], [copy_us], width=0.5, color=col, zorder=3, linewidth=0) ax.axhline(floor, color=GREEN, lw=1.3, ls="--", zorder=4) - ax.text(-0.55, floor + 1.2, "GPU floor", color=GREEN, fontsize=10, ha="left") - ax.text(0, floor + 1.4, f"{floor:.1f} µs", ha="center", color=PALE, + ax.text(-0.55, floor + 1.8, "GPU floor", color=GREEN, fontsize=10, ha="left") + ax.text(0, floor + 2.1, f"{floor:.1f} µs", ha="center", color=PALE, fontsize=10, fontweight="bold") - ax.text(1, copy_us + 1.4, f"≈{copy_us:.0f} µs", ha="center", color=PALE, + ax.text(1, copy_us + 2.1, f"≈{copy_us:.0f} µs", ha="center", color=PALE, fontsize=10, fontweight="bold") ax.set_xticks([0, 1]) ax.set_xticklabels(["GPU per frame\n(H2D ∥ kernel ∥ D2H)", "host copy per frame\ncollect() memcpy + malloc"], color=TEXT2, fontsize=10) - ax.set_xlim(-0.6, 1.7); ax.set_ylim(0, 52); ax.set_yticks([]) + ax.set_xlim(-0.6, 1.7); ax.set_ylim(0, 78); ax.set_yticks([]) bare(ax, keep=("bottom",)) ax.set_title(title, color=PALE, fontsize=10, pad=10, loc="left") - ax.text(1.68, 46, gain, color=col, fontsize=16, fontweight="bold", ha="right") - ax.text(1.68, 40, "opt5 → opt6", color=MUTED, fontsize=10, ha="right") - ax.text(-0.55, -11, verdict, color=col, fontsize=10, fontweight="bold", + ax.text(1.68, 75, gain, color=col, fontsize=16, fontweight="bold", ha="right") + ax.text(1.68, 68.5, "opt5 → opt6", color=MUTED, fontsize=10, ha="right") + ax.text(-0.55, -16, verdict, color=col, fontsize=10, fontweight="bold", va="top") fig.subplots_adjust(bottom=0.30) save(fig, "fig_resultpath") @@ -1075,7 +1075,7 @@ def fig_overlap(): ax.text(-0.25, y + lane_h / 2, lbl, ha="right", va="center", color=TEXT2, fontsize=10.5) - ax.text(-0.25, yG + lane_h + 0.30, "submit → collect, serialized (opt4)", + ax.text(-0.25, yG + lane_h + 0.30, "submit → collect, serialized (opt4) · 3×3", ha="left", va="bottom", color=TEXT2, fontsize=10.5, fontweight="bold") ax.text(-0.25, yG2 + lane_h + 0.30, "submit(i+1) before collect(i) (opt5)", @@ -1103,6 +1103,85 @@ def fig_overlap(): save(fig, "fig_overlap") +# ----------------------------- 12b. the 9x9 case: overlap runs out (opt5->opt6) +def fig_overlap_9x9(): + """Why opt5 stops at 9x9, and why a deeper buffer cannot restart it. + + Same pipelined loop as fig_overlap, but with the measured 9x9 proportions: + the GPU delivers a chunk every 30.01 us and the host needs ~62 (the + fault-corrected steady-state term; see the slide's caption). The host lane is + therefore the packed one, and it alone sets the finish line. + + The second strip is the answer to "add more slots". With three, the GPU front- + loads instead of stalling between chunks 2 and 3 -- but the host lane is + IDENTICAL in both strips, because it is already saturated, so both finish at + exactly the same time. A deeper buffer relocates GPU idle; it does not remove + it, and it cannot speed up the stage that is binding. + """ + fig, ax = plt.subplots(figsize=(11.2, 3.5)) + G, H = 30.0, 62.0 + lane_h = 9.0 + n = 4 + + def block(x, y, w, col, txt): + ax.add_patch(Rectangle((x, y), w, lane_h, facecolor=col, edgecolor=BG, + linewidth=1.4, zorder=3)) + ax.text(x + w / 2, y + lane_h / 2, txt, ha="center", va="center", + color=BG, fontsize=10, fontweight="bold", zorder=4) + + # The host is saturated in both cases, so its lane is the same schedule twice: + # chunk i is collected as soon as the host is free, never before G. + host_start = [G + i * H for i in range(n)] + finish = host_start[-1] + H + + # 2 slots: the GPU may only run one chunk ahead, so it waits for a slot to free + gpu2, free_at = [], [0.0, 0.0] + t = 0.0 + for i in range(n): + t = max(t, free_at[i % 2]) + gpu2.append(t); t += G + free_at[i % 2] = host_start[i] + H # slot returns when the host is done + # 3 slots: one more chunk of runway before the same wall + gpu3, free_at3 = [], [0.0, 0.0, 0.0] + t = 0.0 + for i in range(n): + t = max(t, free_at3[i % 3]) + gpu3.append(t); t += G + free_at3[i % 3] = host_start[i] + H + + for row, (gpu, tag, col) in enumerate([ + (gpu2, "2 slots · what ships", AMBER), + (gpu3, "3 slots · the natural next guess", MUTED)]): + yG = 49.0 - row * 33.0 + yH = yG - 12.0 + for i in range(n): + block(gpu[i], yG, G, ACCENT, f"GPU {i + 1}") + block(host_start[i], yH, H, PALE, f"host {i + 1}") + for lbl, y in (("GPU", yG), ("host", yH)): + ax.text(-6, y + lane_h / 2, lbl, ha="right", va="center", + color=TEXT2, fontsize=10.5) + ax.text(-6, yG + lane_h + 7.0, tag, ha="left", va="bottom", + color=col, fontsize=10.5, fontweight="bold") + # every gap the GPU sits through, marked where it happens + for i in range(1, n): + gap = gpu[i] - (gpu[i - 1] + G) + if gap > 4.0: # a 2 us seam is not an argument, only a real stall is + ax.annotate("", xy=(gpu[i], yG + lane_h / 2), + xytext=(gpu[i - 1] + G, yG + lane_h / 2), + arrowprops=dict(arrowstyle="<|-|>", color=AMBER, lw=1.3)) + ax.text((gpu[i] + gpu[i - 1] + G) / 2, yG + lane_h + 1.0, + f"idle {gap:.0f}", ha="center", va="bottom", + color=AMBER, fontsize=9.5, fontweight="bold") + + ax.plot([finish, finish], [2, 61], color=GREEN, lw=1.6, ls="--", zorder=6) + ax.text(finish + 5, 32, "same finish\nboth ways", ha="left", va="center", + color=GREEN, fontsize=11, fontweight="bold") + + ax.set_xlim(-32, finish + 62) + ax.set_ylim(0, 70) + ax.axis("off") + save(fig, "fig_overlap_9x9") + # ------------------------------------- 13. pedestal update timing, three ways def fig_pedtiming(): """Why ClusterFinderFrozen exists: the one variable it holds still. @@ -1176,6 +1255,7 @@ def fig_pedtiming(): fig_overlap() +fig_overlap_9x9() fig_pedtiming() diff --git a/docs/deck/make_figs_kernel.py b/docs/deck/make_figs_kernel.py index a552ab00..c2b9d209 100644 --- a/docs/deck/make_figs_kernel.py +++ b/docs/deck/make_figs_kernel.py @@ -6,7 +6,7 @@ Writes into docs/figures/ alongside the optimization figures. Occupancy numbers are not hand-computed: they come from cudaOccupancyMaxActiveBlocksPerMultiprocessor + cudaFuncGetAttributes on the real kernel (RTX 4090, sm_89), measured 2026-08-11 — see the table in -build_fused_deck.py. +build_performance_deck.py. """ import sys import matplotlib diff --git a/docs/figures/fig_overlap.png b/docs/figures/fig_overlap.png index 604cdbe9..c9068d70 100644 Binary files a/docs/figures/fig_overlap.png and b/docs/figures/fig_overlap.png differ diff --git a/docs/figures/fig_overlap_9x9.png b/docs/figures/fig_overlap_9x9.png new file mode 100644 index 00000000..5b11667d Binary files /dev/null and b/docs/figures/fig_overlap_9x9.png differ diff --git a/docs/figures/fig_resultpath.png b/docs/figures/fig_resultpath.png index 1c42f448..2a4c0c45 100644 Binary files a/docs/figures/fig_resultpath.png and b/docs/figures/fig_resultpath.png differ diff --git a/python/tests/ClusterFinderCUDA_perf.ipynb b/python/tests/ClusterFinderCUDA_perf.ipynb index 0e810081..90e1d870 100644 --- a/python/tests/ClusterFinderCUDA_perf.ipynb +++ b/python/tests/ClusterFinderCUDA_perf.ipynb @@ -1,1087 +1,1060 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "md-title", - "metadata": {}, - "source": [ - "# ClusterFinder — CPU vs CUDA performance\n", - "\n", - "Throughput comparison of the serial CPU finder against the CUDA variants:\n", - "per-frame, batched+pinned, CUDA-Graph, and the async double-buffered pipeline.\n", - "\n", - "CPU↔CUDA **correctness** (why the cluster counts differ) is analysed\n", - "separately in `ClusterFinderFrozen_vs_CUDA.ipynb`; here we only sanity-check that\n", - "the counts and spectra agree, and focus on timing." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "imports", - "metadata": {}, - "outputs": [], - "source": [ - "import sys; sys.path.append('/home/ferjao_k/aare/build')\n", - "\n", - "from pathlib import Path\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "import boost_histogram as bh\n", - "import time\n", - "from tqdm import tqdm\n", - "\n", - "from aare import (File, ClusterFinder, ClusterFinderFrozen, ClusterFinderMT, ClusterCollector,\n", - " ClusterFinderCUDA, ClusterFinderCUDAGraph, ClusterFinderCUDAOpt2)\n", - "from helper import print_pinning_budget\n", - "\n", - "import resource\n", - "\n", - "def _faults():\n", - " r = resource.getrusage(resource.RUSAGE_SELF)\n", - " return r.ru_minflt, r.ru_majflt" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "hist-helpers", - "metadata": {}, - "outputs": [], - "source": [ - "N_BINS = 200\n", - "\n", - "def make_hist(clusters):\n", - " h = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", - " h.fill(clusters.sum())\n", - " return h\n", - "\n", - "def make_hist_from_batch(result_list):\n", - " h = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", - " energies = [np.asarray(cv.sum()).ravel() for cv in result_list if cv.size > 0]\n", - " if energies:\n", - " h.fill(np.concatenate(energies))\n", - " return h" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "config", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Build: DEVICE_PED_TYPE = float\n", - "Image size: (400, 400)\n", - "Pedestal frames: 1000\n", - "Data frames: 100000\n", - "Total in file: 100000\n", - "Cluster cap: 3000 (per-frame output slot; D2H copies it whole)\n" - ] - } - ], - "source": [ - "base = Path('/mnt/sls_det_storage/moench_data/2603_MaxIVBeamtime/2026032408/process/xrf/')\n", - "f = File(base / 'Cu_factor_10_data_master_0.json')\n", - "pd = File(base / 'Cu_factor_10_pedestal_master_0.json')\n", - "\n", - "n_frames_pd = 1000\n", - "N = 100000\n", - "cluster_size = (3, 3)\n", - "rows, cols = f.rows, f.cols\n", - "image_size = (rows, cols)\n", - "capacity = 10000\n", - "BATCH_SIZE = 2000\n", - "\n", - "N_STREAMS = 4\n", - "N_SIGMA = 5\n", - "\n", - "# Cluster cap = the fixed-size per-frame output slot the kernel writes into and\n", - "# D2H copies WHOLE every frame, regardless of how full it is. MEASURED against\n", - "# the per-frame maximum, never guessed: 2 545 at 3x3 (100k frames), 1 633 at 9x9\n", - "# (20k). The earlier campaigns ran 9x9 at 1500, which is BELOW that maximum --\n", - "# the kernel guards only the write and the host clamps the count, so it silently\n", - "# dropped 2 715 clusters (0.0095%) and made a truncation artefact look like a\n", - "# CPU-vs-CUDA precision bug. Raising it is not free at 9x9: the slot grows\n", - "# 480.5 -> 544.5 KiB and D2H 22.8 -> 25.2 us/frame, which on the f32 build is\n", - "# the binding engine. See run_ladder.py CONFIGS and report section 8.\n", - "CAP = 1700 if cluster_size == (9, 9) else 3000\n", - "\n", - "# Per-frame CUDA-event kernel timing. Off by default: it adds 2 event records\n", - "# per frame to the streams + a host query per frame, and the number is only\n", - "# meaningful at n_streams=1. Flip to True to A/B what the instrumentation costs.\n", - "TIME_KERNELS = False\n", - "\n", - "# Build identity. DEVICE_PED_TYPE is a COMPILE-TIME axis (the opt6/opt7 arm), so\n", - "# it cannot be read back off a finder: device_pedestal() hands out an NDArray of\n", - "# the HOST pedestal type and upcasts, so its dtype is float64 on both builds.\n", - "# common.device_ped_type() parses the header instead, and assert_build_fresh()\n", - "# stops that from being a lie by refusing to run if any kernel header is newer\n", - "# than the compiled .so -- the exact failure that produced one quarantined\n", - "# probe set (results/2026-08-20_INVALID_stale_build).\n", - "sys.path.insert(0, '/home/ferjao_k/aare/python/tests/perf')\n", - "import common\n", - "common.assert_build_fresh()\n", - "ARM = common.device_ped_type() # 'float' | 'double'\n", - "\n", - "print(f'Build: DEVICE_PED_TYPE = {ARM}')\n", - "print(f'Image size: {image_size}')\n", - "print(f'Pedestal frames: {n_frames_pd}')\n", - "print(f'Data frames: {N}')\n", - "print(f'Total in file: {f.total_frames}')\n", - "print(f'Cluster cap: {CAP} (per-frame output slot; D2H copies it whole)')" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "pinning", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "── System RAM ──────────────────────────────────────────\n", - " Total RAM : 125.1 GiB\n", - " Currently available : 95.6 GiB (free + reclaimable cache)\n", - " Reserved headroom : 4.0 GiB (OS + CUDA context)\n", - " Safe pinning budget : 91.6 GiB\n", - "\n", - "── Frame layout ────────────────────────────────────────\n", - " Frame size : 400 × 400 × 2 B = 312.5 kB\n", - "\n", - "── Pinning estimate ────────────────────────────────────\n", - " Max frames pinnable : 307,378 (91.6 GiB)\n", - "\n", - " Note: no swap on this machine — exceeding available RAM\n", - " will trigger the OOM killer. Stay within the budget.\n" - ] - } - ], - "source": [ - "print_pinning_budget(rows, cols)" - ] - }, - { - "cell_type": "markdown", - "id": "md-build", - "metadata": {}, - "source": [ - "## Build finders\n", - "\n", - "`SERIAL` picks the CPU baseline: the sequential `ClusterFinder` or the\n", - "multi-threaded `ClusterFinderMT`. All finders are trained on the same pedestal\n", - "frames below." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "build", - "metadata": {}, - "outputs": [], - "source": [ - "SERIAL = False\n", - "\n", - "if SERIAL:\n", - " # cf_cpu = ClusterFinder(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", - " cf_cpu = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", - "else:\n", - " # Thread count is per cluster size, measured (perf/cpu_threads.py): 24 is the\n", - " # 3x3 optimum, 32 the 9x9 one. Past 32 the ClusterCollector drain -- which is\n", - " # inside the timed region -- costs more than the extra workers buy, and 9x9\n", - " # clusters are 9x larger, so the turnover happens later.\n", - " cf_cpu = ClusterFinderMT(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " capacity=capacity,\n", - " n_threads=32 if cluster_size == (9, 9) else 24)\n", - " sink = ClusterCollector(cf_cpu)\n", - " \n", - "cf_cuda_v1 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP,\n", - " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", - "cf_cuda = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP,\n", - " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", - "cf_graph = ClusterFinderCUDAGraph(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP,\n", - " n_streams=N_STREAMS)" - ] - }, - { - "cell_type": "markdown", - "id": "md-ped", - "metadata": {}, - "source": [ - "## Pedestal (all finders trained on identical frames)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "train", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Pedestal (1000 frames): 4.496s\n" - ] - } - ], - "source": [ - "t0 = time.perf_counter()\n", - "for _ in range(n_frames_pd):\n", - " img = pd.read_frame()\n", - " cf_cpu.push_pedestal_frame(img.copy())\n", - " cf_cuda_v1.push_pedestal_frame(img.copy())\n", - " cf_cuda.push_pedestal_frame(img.copy())\n", - " # cf_async.push_pedestal_frame(img.copy())\n", - " cf_graph.push_pedestal_frame(img.copy())\n", - "print(f'Pedestal ({n_frames_pd} frames): {time.perf_counter() - t0:.3f}s')" - ] - }, - { - "cell_type": "markdown", - "id": "md-io", - "metadata": {}, - "source": [ - "## Read all data frames into memory (I/O out of the timing loop)" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "io", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Reading 100000 frames: 44.883s (2228 FPS, 679.937 GB/s)\n" - ] - } - ], - "source": [ - "f.seek(0)\n", - "t0 = time.perf_counter()\n", - "data = f.read_n(N)\n", - "t_io = time.perf_counter() - t0\n", - "print(f'Reading {N} frames: {t_io:.3f}s ({N/t_io:.0f} FPS, '\n", - " f'{f.bytes_per_frame * N / 1024**2 / t_io:.3f} GB/s)')" - ] - }, - { - "cell_type": "markdown", - "id": "md-cpu", - "metadata": {}, - "source": [ - "## CPU clustering (baseline)" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "cpu", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|███████| 100000/100000 [00:14<00:00, 6886.40it/s]\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 2,502,285 (~1.75s est.) major: 0\n", - "=========================================================================================\n", - "CPU clustering: 14.524s (6885 FPS, 233087992 clusters, 2330.88/frame)\n" - ] - } - ], - "source": [ - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "for frame in tqdm(data):\n", - " cf_cpu.find_clusters(frame)\n", - "t_cpu = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults() # bracket the timed loop only; MT drain + hist below allocate too\n", - "\n", - "if SERIAL:\n", - " clusters_cpu = cf_cpu.steal_clusters(realloc_same_capacity=False)\n", - " n_clusters_cpu = clusters_cpu.size\n", - " hist_cpu = make_hist(clusters_cpu)\n", - "else:\n", - " cf_cpu.stop(); sink.stop()\n", - " clusters_cpu = sink.steal_clusters()\n", - " hist_cpu = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", - " n_clusters_cpu = 0\n", - " for cv in clusters_cpu:\n", - " hist_cpu.fill(cv.sum())\n", - " n_clusters_cpu += cv.size\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'CPU clustering: {t_cpu:.3f}s ({N/t_cpu:.0f} FPS, '\n", - " f'{n_clusters_cpu} clusters, {n_clusters_cpu/N:.2f}/frame)')" - ] - }, - { - "cell_type": "markdown", - "id": "md-v1", - "metadata": {}, - "source": [ - "## CUDA — per-frame (1 launch/frame, pageable memory)\n", - "Simplest path: no batching, no pinning. Isolates per-frame launch + PCIe overhead." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "v1", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 1,602 (~0.00s est.) major: 0\n", - "=========================================================================================\n", - "CUDA per-frame: 10.572s (9459 FPS, 233094769 clusters, 2330.95/frame)\n", - " Kernel only: nan ms/frame\n", - " PCIe + overhead: nan ms/frame\n", - "Speedup (CPU/CUDA): 1.37x\n" - ] - } - ], - "source": [ - "cf_cuda_v1.reset_timers()\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "\n", - "n_clusters_cuda_v1 = 0\n", - "hist_cuda_v1 = None\n", - "for frame in data:\n", - " cf_cuda_v1.find_clusters(frame)\n", - " clusters_frame = cf_cuda_v1.steal_clusters(realloc_same_capacity=True)\n", - " n_clusters_cuda_v1 += clusters_frame.size\n", - " h = make_hist(clusters_frame)\n", - " hist_cuda_v1 = h if hist_cuda_v1 is None else hist_cuda_v1 + h\n", - "\n", - "t_cuda_v1 = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults()\n", - "kernel_ms = cf_cuda_v1.avg_kernel_time_ms()\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'CUDA per-frame: {t_cuda_v1:.3f}s ({N/t_cuda_v1:.0f} FPS, '\n", - " f'{n_clusters_cuda_v1} clusters, {n_clusters_cuda_v1/N:.2f}/frame)')\n", - "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", - "print(f' PCIe + overhead: {t_cuda_v1*1000/N - kernel_ms:.3f} ms/frame')\n", - "print(f'Speedup (CPU/CUDA): {t_cpu / t_cuda_v1:.2f}x')" - ] - }, - { - "cell_type": "markdown", - "id": "md-batched", - "metadata": {}, - "source": [ - "## CUDA — batched + multi-streamed + pinned dataset\n", - "Pins the whole input once, then submits `BATCH_SIZE`-frame chunks across `N_STREAMS` streams so H2D / kernel / D2H overlap." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "batched", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 2,294,417 (~1.61s est.) major: 0\n", - "=========================================================================================\n", - "CUDA batched: 3.244s total | 0.032 ms/frame (30823 FPS, 233093554 clusters, 2330.94/frame)\n", - " Kernel only: nan ms/frame\n", - " PCIe + overhead: nan ms/frame\n", - "Speedup (CPU/CUDA): 4.48x\n" - ] - } - ], - "source": [ - "cf_cuda.register_input_buffer(data) # pin the whole dataset once\n", - "clusters_cuda_per_frame = []\n", - "\n", - "cf_cuda.reset_timers()\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "for start in range(0, N, BATCH_SIZE):\n", - " stop = min(start + BATCH_SIZE, N)\n", - " clusters_cuda_per_frame.extend(\n", - " cf_cuda.find_clusters_batched(data[start:stop], first_frame=start))\n", - "t_cuda = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults() # before make_hist_from_batch, which allocates GBs itself\n", - "\n", - "cf_cuda.unregister_input_buffer()\n", - "kernel_ms = cf_cuda.avg_kernel_time_ms()\n", - "n_clusters_cuda = sum(cv.size for cv in clusters_cuda_per_frame)\n", - "hist_cuda = make_hist_from_batch(clusters_cuda_per_frame)\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'CUDA batched: {t_cuda:.3f}s total | {t_cuda*1000/N:.3f} ms/frame ({N/t_cuda:.0f} FPS, '\n", - " f'{n_clusters_cuda} clusters, {n_clusters_cuda/N:.2f}/frame)')\n", - "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", - "print(f' PCIe + overhead: {t_cuda*1000/N - kernel_ms:.3f} ms/frame')\n", - "print(f'Speedup (CPU/CUDA): {t_cpu / t_cuda:.2f}x')" - ] - }, - { - "cell_type": "markdown", - "id": "md-asyncpipe", - "metadata": {}, - "source": [ - "## Async pipeline — is the wall clock host-bound?\n", - "\n", - "Diagnostic for the \"next moves\" slide. Both loops submit **slices of the already-pinned\n", - "`data`**, so neither pays a staging memcpy (the two-buffer pattern in the cell below is\n", - "only needed when frames are streamed in, not when the whole dataset is pinned in RAM).\n", - "\n", - "- **serial** `submit(b); collect(b)` -> GPU + host, serialized\n", - "- **pipelined** `submit(b+1)` before `collect(b)` -> max(GPU, host)\n", - "\n", - "`serial - pipelined` = min(GPU, host), i.e. how much time is hideable. Compare\n", - "`pipelined` against the exclusive GPU floor from nsys (`nsys_kernel_probe.py`) to see\n", - "which of the two is the real limit. Re-run the cell until minor faults plateau." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "asyncpipe", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: pipelined 2,050,435 (slots pre-pinned; the rest is result heap)\n", - "=========================================================================================\n", - "pipelined (max of both): 3.014s ( 33,174 FPS) 30.1 us/frame 233093554 clusters\n", - " vs find_clusters_batched: 1.08x (32.4 -> 30.1 us/frame)\n", - " kernel (event timer): nan us/frame (inflated under 4 streams — use nsys for the true value)\n", - "\n", - "Interpretation: if pipelined ~= the nsys GPU floor, the remaining cost was host-side\n", - "and is now hidden. If pipelined stays well above it, the host is the binding limit.\n" - ] - } - ], - "source": - [ - "# Async pipeline vs serial — no staging memcpy, slices of the pinned dataset.\n", - "# Drop the previous run's results FIRST. Otherwise the old res_pipe (~9.3 GB at\n", - "# 9x9) is still alive while the serial loop allocates its own, so the heap has to\n", - "# grow and the fault count never plateaus. res_pipe = [] below is too late: it\n", - "# frees inside the timed section.\n", - "for _v in ('res_serial', 'res_pipe'):\n", - " globals().pop(_v, None)\n", - "\n", - "# The serial loop is a reference point, but it also doubles as an accidental\n", - "# warm-up: it leaves both the heap and the pinned slots hot for the pipelined\n", - "# loop below. Set False to time the pipelined loop on its own and check that the\n", - "# fault count really is zero rather than merely absorbed upstream.\n", - "RUN_SERIAL = False\n", - "\n", - "cf_async = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP,\n", - " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", - "pd.seek(0)\n", - "for _ in range(n_frames_pd):\n", - " cf_async.push_pedestal_frame(pd.read_frame().copy())\n", - "\n", - "cf_async.register_input_buffer(data) # pin once; both loops reuse it\n", - "bounds = [(s, min(s + BATCH_SIZE, N)) for s in range(0, N, BATCH_SIZE)]\n", - "\n", - "# Pre-pin both output slots OUTSIDE any timed region. submit_batch() honours the\n", - "# batch size it is handed — MAX_SLOT_BYTES caps only the *auto* chunk — so these\n", - "# slots are BATCH_SIZE frames each: 240 MB at 3x3, 984 MB at 9x9, times two.\n", - "# Allocated lazily that is ~120 ms / ~480 ms of page-locking landing inside\n", - "# whichever loop runs first. Allocates only: no transfer, no launch, and the\n", - "# pedestal is NOT advanced, so cf_async stays comparable with the other finders.\n", - "\n", - "cf_async.reserve_output_slots(BATCH_SIZE)\n", - "\n", - "# ---- 1. SERIAL: submit then immediately collect (no overlap) ----------------\n", - "if RUN_SERIAL:\n", - " cf_async.reset_timers()\n", - " mf0, Mf0 = _faults()\n", - " t0 = time.perf_counter()\n", - " res_serial = []\n", - " for a, b in bounds:\n", - " tok = cf_async.submit_batch(data[a:b], first_frame=a)\n", - " res_serial.extend(cf_async.collect(tok))\n", - " t_serial = time.perf_counter() - t0\n", - " mf1, Mf1 = _faults()\n", - " f_serial = mf1 - mf0\n", - " n_serial = sum(cv.size for cv in res_serial)\n", - " del res_serial # free before the next loop\n", - "\n", - "# ---- 2. PIPELINED: keep one batch in flight while collecting the previous ---\n", - "# Reset again: avg_kernel_time_ms() is total_kernel_ms / frames_processed, and\n", - "# both loops accumulate into the same counters. Without this the kernel time\n", - "# printed below is an average over 40 000 frames from two different regimes.\n", - "cf_async.reset_timers()\n", - "mf2, Mf2 = _faults()\n", - "t0 = time.perf_counter()\n", - "res_pipe = []\n", - "tok = cf_async.submit_batch(data[bounds[0][0]:bounds[0][1]], first_frame=bounds[0][0])\n", - "for a, b in bounds[1:]:\n", - " nxt = cf_async.submit_batch(data[a:b], first_frame=a) # GPU starts batch N+1\n", - " res_pipe.extend(cf_async.collect(tok)) # host materializes batch N\n", - " tok = nxt\n", - "res_pipe.extend(cf_async.collect(tok)) # drain the last one\n", - "t_pipe = time.perf_counter() - t0\n", - "mf3, Mf3 = _faults()\n", - "f_pipe = mf3 - mf2\n", - "n_clusters_async = sum(cv.size for cv in res_pipe)\n", - "hist_async = make_hist_from_batch(res_pipe)\n", - "\n", - "cf_async.unregister_input_buffer()\n", - "\n", - "us = lambda t: t * 1e6 / N\n", - "print(f' minor faults: ' + (f'serial {f_serial:,} ' if RUN_SERIAL else '')\n", - " + f'pipelined {f_pipe:,} (slots pre-pinned; the rest is result heap)')\n", - "print(\"=========================================================================================\")\n", - "if RUN_SERIAL:\n", - " print(f'serial (GPU + host): {t_serial:.3f}s ({N/t_serial:8,.0f} FPS) {us(t_serial):6.1f} us/frame '\n", - " f'{n_serial} clusters')\n", - "print(f'pipelined (max of both): {t_pipe:.3f}s ({N/t_pipe:8,.0f} FPS) {us(t_pipe):6.1f} us/frame '\n", - " f'{n_clusters_async} clusters')\n", - "if RUN_SERIAL:\n", - " print(f' hidden by overlap: {us(t_serial) - us(t_pipe):6.1f} us/frame = min(GPU, host)')\n", - " print(f' speedup pipelined/serial: {t_serial / t_pipe:.2f}x')\n", - "try:\n", - " print(f' vs find_clusters_batched: {t_cuda / t_pipe:.2f}x '\n", - " f'({us(t_cuda):.1f} -> {us(t_pipe):.1f} us/frame)')\n", - "except NameError:\n", - " pass\n", - "print(f' kernel (event timer): {cf_async.avg_kernel_time_ms()*1000:6.1f} us/frame '\n", - " f'(inflated under {N_STREAMS} streams — use nsys for the true value)')\n", - "print()\n", - "print('Interpretation: if pipelined ~= the nsys GPU floor, the remaining cost was host-side')\n", - "print('and is now hidden. If pipelined stays well above it, the host is the binding limit.')\n" - ] - }, - { - "cell_type": "markdown", - "id": "md-graph", - "metadata": {}, - "source": [ - "## CUDA — Graph (pinned dataset)\n", - "Pre-records the H2D->kernel->D2H pipeline as a CUDA Graph per stream, cutting per-frame CPU API overhead (~21 us vs ~60 us for the streamed version)." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "graph", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 2,107,303 (~1.48s est.) major: 0\n", - "=========================================================================================\n", - "CUDA Graph: 4.105s (24358 FPS, 233093554 clusters, 2330.94/frame)\n", - " Kernel only: nan ms/frame\n", - " Kernel+PCIe+ovhd: 0.041 ms/frame (kernel not individually timed)\n", - "Speedup (vs batched): 0.79x\n", - "Speedup (CPU/Graph): 3.54x\n" - ] - } - ], - "source": [ - "cf_graph.register_input_buffer(data)\n", - "clusters_graph_per_frame = []\n", - "\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "for start in range(0, N, BATCH_SIZE):\n", - " stop = min(start + BATCH_SIZE, N)\n", - " clusters_graph_per_frame.extend(\n", - " cf_graph.find_clusters_batched(data[start:stop], first_frame=start))\n", - "t_graph = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults() # before make_hist_from_batch, which allocates GBs itself\n", - "\n", - "cf_graph.unregister_input_buffer()\n", - "n_clusters_graph = sum(cv.size for cv in clusters_graph_per_frame)\n", - "hist_graph = make_hist_from_batch(clusters_graph_per_frame)\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'CUDA Graph: {t_graph:.3f}s ({N/t_graph:.0f} FPS, '\n", - " f'{n_clusters_graph} clusters, {n_clusters_graph/N:.2f}/frame)')\n", - "print(f' Kernel only: {cf_graph.avg_kernel_time_ms():.3f} ms/frame')\n", - "print(f' Kernel+PCIe+ovhd: {t_graph*1000/N:.3f} ms/frame (kernel not individually timed)')\n", - "print(f'Speedup (vs batched): {t_cuda / t_graph:.2f}x')\n", - "print(f'Speedup (CPU/Graph): {t_cpu / t_graph:.2f}x')" - ] - }, - { - "cell_type": "markdown", - "id": "md-zerocopy", - "metadata": {}, - "source": [ - "## Zero-copy collection — `collect_view()`\n", - "\n", - "`find_clusters_batched` / `collect()` allocate one `ClusterVector` **per frame** and copy\n", - "into it. `collect_view()` copies nothing: the pinned D2H buffer already holds correctly\n", - "laid-out clusters at a fixed per-frame stride, so the view just exposes offsets into it.\n", - "\n", - "The copy it removes is **~8 us/frame at 3x3 and ~40 us/frame at 9x9** (bytes / memcpy\n", - "bandwidth). What that is *worth* end to end is `max(0, copy - GPU floor)`, so the two\n", - "sizes pay very differently: 19.8 -> 17.1 us/frame at 3x3 (x1.16, the copy mostly hid\n", - "under the GPU already) but 66.4 -> 30.0 at 9x9 (x2.21, where it could not hide at any\n", - "overlap). Both are `[f64]`, warm, 5 reps -- report section 8.\n", - "\n", - "The view borrows the finder's slot and is released at the end of each loop iteration,\n", - "so **anything you need afterwards must be copied out**. `sums()` returns an owned array\n", - "and is safe; `frame_data(i)` / `frame_xy(i)` are views and are not.\n", - "\n", - "`sums()` is timed separately below: `collect()` copies but does not reduce, so comparing\n", - "it against `collect_view()` + `sums()` compares different work. The bare line is the one\n", - "to put next to the batched / graph / async cells." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "zerocopy", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 1 (should be ~0 after the warm-up above)\n", - " chunk: 1120 frames/chunk build float - cap 3000 - 4 streams\n", - "=========================================================================================\n", - "GPU roofline (report 4): 16.3 us/frame ( 61,312 FPS) = 1 / max(kernel, H2D, D2H)\n", - "==> transport only: 16.5 us/frame ( 60,670 FPS) 99% of roofline\n", - "\n", - "find_clusters_batched: 32.4 us/frame ( 30,823 FPS) 50% of roofline (copies clusters, no reduction)\n", - " -> zero-copy transport is 1.97x\n" - ] - } - ], - "source": [ - "# Zero-copy collection vs the collect() cells above.\n", - "from aare import find_cluster_views_batched_iter\n", - "\n", - "# Set False to time the transport alone (no reduction, no histogram) — that is\n", - "# the GPU-pipeline number to compare against the nsys roofline.\n", - "WITH_ANALYSIS = False\n", - "\n", - "# Roofline = 1 / max(kernel, H2D, D2H), each term that engine's BUSY TIME per\n", - "# frame -- the union of its intervals, not a duration -- at n_streams=4, and\n", - "# taken as the LOWER of two estimates: the nsys probe, and the best rate the\n", - "# unprofiled pipeline sustained. Source: perf/results/2026-08-20_{f32,f64}_cap1700\n", - "# probes.csv via gpu_span.py; the table is section 4 of the report.\n", - "#\n", - "# arm size cap probe sustained PEAK binds\n", - "# double 3x3 3000 16.17 17.10 16.17 H2D\n", - "# float 3x3 3000 16.63 16.31 16.31 H2D\n", - "# double 9x9 1700 32.66 30.01 30.01 kernel\n", - "# float 9x9 1700 25.24 25.14 25.14 D2H (opt7 put the kernel under it)\n", - "#\n", - "# Neither estimate is exact and the two bracket the truth to ~2%, so a run that\n", - "# lands BETWEEN them (16.5 us on f32 3x3, say) is at the floor, not short of it.\n", - "PEAK_US = {('double', (3, 3)): 16.17, ('float', (3, 3)): 16.31,\n", - " ('double', (9, 9)): 30.01, ('float', (9, 9)): 25.14}\n", - "GPU_FLOOR_US = PEAK_US[(ARM, cluster_size)] # ARM comes from the config cell\n", - "\n", - "cf_zc = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP,\n", - " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", - "pd.seek(0)\n", - "for _ in range(n_frames_pd):\n", - " cf_zc.push_pedestal_frame(pd.read_frame().copy())\n", - "cf_zc.register_input_buffer(data)\n", - "\n", - "# Pre-pin the two output slots OUTSIDE the timing. This allocates only; it\n", - "# transfers nothing and launches nothing, so the pedestal is NOT advanced —\n", - "# unlike running frames through as a warm-up, which would leave cf_zc with a\n", - "# pedestal 8000 steps ahead of every other finder here.\n", - "CHUNK = cf_zc.chunk_size_for(N)\n", - "cf_zc.reserve_output_slots(CHUNK)\n", - "\n", - "hist_B = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", - "n_B = 0\n", - "t_sums = 0.0 # C++ reduction over the pinned buffer\n", - "t_hist = 0.0 # boost_histogram fill\n", - "\n", - "mf0, _ = _faults()\n", - "t0 = time.perf_counter()\n", - "for v in find_cluster_views_batched_iter(cf_zc, data, chunk=CHUNK):\n", - " if not WITH_ANALYSIS:\n", - " continue\n", - " _t = time.perf_counter(); s = v.sums(); t_sums += time.perf_counter() - _t\n", - " n_B += s.size\n", - " _t = time.perf_counter(); hist_B.fill(s); t_hist += time.perf_counter() - _t\n", - "t_B = time.perf_counter() - t0\n", - "f_B = _faults()[0] - mf0\n", - "cf_zc.unregister_input_buffer()\n", - "\n", - "us = lambda t: t * 1e6 / N\n", - "pc = lambda t: 100 * GPU_FLOOR_US / us(t)\n", - "t_bare = t_B - t_sums - t_hist\n", - "\n", - "print(f' minor faults: {f_B:,} (should be ~0 after the warm-up above)')\n", - "print(f' chunk: {cf_zc.chunk_size_for(N)} frames/chunk '\n", - " f'build {ARM} - cap {CAP} - {N_STREAMS} streams')\n", - "print(\"=========================================================================================\")\n", - "print(f'GPU roofline (report 4): {GPU_FLOOR_US:6.1f} us/frame ({1e6/GPU_FLOOR_US:8,.0f} FPS) '\n", - " f'= 1 / max(kernel, H2D, D2H)')\n", - "print(f'==> transport only: {us(t_bare):6.1f} us/frame ({N/t_bare:8,.0f} FPS) '\n", - " f'{pc(t_bare):3.0f}% of roofline')\n", - "if WITH_ANALYSIS:\n", - " print(f' + sums(): {us(t_sums):6.1f} us/frame')\n", - " print(f' + histogram: {us(t_hist):6.1f} us/frame')\n", - " print(f' = total: {us(t_B):6.1f} us/frame ({N/t_B:8,.0f} FPS) '\n", - " f'{pc(t_B):3.0f}% of roofline {n_B} clusters')\n", - "try:\n", - " print()\n", - " print(f'find_clusters_batched: {us(t_cuda):6.1f} us/frame ({N/t_cuda:8,.0f} FPS) '\n", - " f'{pc(t_cuda):3.0f}% of roofline (copies clusters, no reduction)')\n", - " print(f' -> zero-copy transport is {t_cuda/t_bare:.2f}x')\n", - "except NameError:\n", - " pass\n" - ] - }, - { - "cell_type": "markdown", - "id": "md-agree", - "metadata": {}, - "source": [ - "## Agreement sanity check\n", - "Counts should match to a hair. The residual comes from the CUDA finder updating the pedestal once per frame vs the CPU's per-pixel update (analysed in `ClusterFinderFrozen_vs_CUDA.ipynb`)." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "agree", - "metadata": {}, - "outputs": - [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " CPU 233,087,992 diff vs CPU 0 (0.0000%)\n", - " CUDA per-frame 233,094,769 diff vs CPU 6,777 (0.0029%)\n", - " CUDA batched 233,093,554 diff vs CPU 5,562 (0.0024%)\n", - " CUDA graph 233,093,554 diff vs CPU 5,562 (0.0024%)\n", - " CUDA async 233,093,554 diff vs CPU 5,562 (0.0024%)\n" - ] - } - ], - "source": [ - "rows = [('CPU', n_clusters_cpu), ('CUDA per-frame', n_clusters_cuda_v1),\n", - " ('CUDA batched', n_clusters_cuda), ('CUDA graph', n_clusters_graph),\n", - " ('CUDA async', n_clusters_async)]\n", - "if globals().get('n_B'): # 0 when WITH_ANALYSIS=False: nothing counted\n", - " rows.append(('zero-copy view', n_B))\n", - "\n", - "for name, n in rows:\n", - " d = abs(n - n_clusters_cpu)\n", - " print(f' {name:<18} {n:>12,} diff vs CPU {d:>6,} ({d/max(n_clusters_cpu,1):.4%})')\n" - ] - }, - { - "cell_type": "markdown", - "id": "md-plots", - "metadata": {}, - "source": [ - "## Spectrum: CPU vs CUDA variants" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "plots", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": - "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cDZt2jQ5e/asZd47tLBduHBBZs6cqZ5j+eTJk9X7MI0CBlnBoCvWo2b26dNH6tWrJ59//rkKFpcsWSJr165VUygQEREREREZnVeDvI4dO8qNGzdk5MiRajJ0zIG3fPlyKViwoHodyxD06QoXLqxeRyvdlClTVDPlxIkTLdMnAFrs5s6dK0OGDFETomMydMzH5+oceURERERERP7Mq0EeYDJz3ByZMWNGjGX169eX3bt3x7rN9u3bq5uRoDvpsGHDYnQrJea3EbB8M7+NjOWb+W1kLN/MbyML9uP6twmjr3g7EUREREREROQe5hkpiYiIiIiIyBAY5BERERERERkIgzwiIiIiIiIDYZBHRERERERkIAzyiIiIiIiIDIRBHhERERERkYEwyCMiIiIiIjIQBnlEREREREQGwiCPiIiIiIjIQBjkERERERERGQiDPCIiIiIiIgNhkEdERERERGQgDPKIiIiIiIgMhEEeERERERGRgTDIIyIiIiIiMhAGeURERERERAbCII+IiIiIiMhAfDrIGz16tFSrVk3Sp08vOXLkkDZt2sixY8fifN/69eulSpUqkipVKilSpIh88803SZJeIiIiIiIib/PpIA/BWs+ePWXbtm2yZs0aiYyMlKZNm8r9+/edvufMmTPSokULqVu3ruzZs0c+/PBD6d27tyxcuDBJ005EREREROQNJk3TNPET165dUy16CP7q1avncJ3//e9/8vvvv8uRI0csy3r06CH79u2TrVu3JmFqiYiIiIiIkp5Pt+TZCw0NVfdZsmRxug4CObT2WWvWrJns3LlTIiIiPJ5GIiIiIiIib0ohfgINjv3795c6depI2bJlna53+fJlyZkzp80yPEdXz+vXr0vu3LljvCcsLEzddNHR0XLz5k3JmjWrmEwmN38TIiIiIiKihMVEd+/elTx58khAQID/B3m9evWS/fv3y6ZNm+Jc1z4w03ukOgvYMMDLiBEj3JRSIiIiIiIizzl37pzky5fPv4O8d999V11nt2HDhli/DOTKlUu15lm7evWqpEiRQrXMOTJo0CDVSmjdLbRAgQLy33//SYYMGcQXoHURLZHZsmWLNWon5rc/YvlmfhsZyzfz28hYvpnfRhbtg/XvO3fuSMGCBdXsA7Hx6SAPLXAI8BYtWiR///23FC5cOM731KxZU5YuXWqzbPXq1VK1alUJ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ERHpG5M8IiLSFWkNUy6rtB/atWuX59dXrlxZtZgpCZ00aiLJk/QrJ5csGo057xbl0kfpHkFarJR7/uQySmvrmtKNgb3Ro0ervvUK0uCK1KxJAmZfC2d/yaUkjvYNsFjjITWT0mee3G8otYjSjYJ0om4lrYdKUio1gXJvobyPJHg7duxAjRo18r2cRERUfBm07G4oICIiogd69913VaubMTExWS63lMRRWtn09vbO9T2kTz7pzkEuxSxOpHZy7dq1qssIIiLSF9bkERER5dHChQvVfW1yiae0nCndKdjfcyddHsh9eLNmzVKXdz4owbN/X2nlU+6jK2rjxo1Ty0JERPrFmjwiIqI8+uMf/4hVq1ape/qka4Rhw4Zh2rRptm4O3nrrLVW7J10myOWSeUmW5F665ORk9VjeM6+JoatIVxN3795Vj+Uy0NwaoyEiouKJSR4REREREZEb4eWaREREREREboRJHhERERERkRthkkdERERERORGmOQRERERERG5ESZ5REREREREboRJHhERERERkRthkkdERERERORGmOQRERERERG5ESZ5REREREREcB//D8xFPxNmET69AAAAAElFTkSuQmCC", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": - [ - "fig, (ax_spec, ax_ratio) = plt.subplots(\n", - " 2, 1, figsize=(9, 6.5), sharex=True,\n", - " gridspec_kw={'height_ratios': [3, 1]})\n", - "\n", - "edges = hist_cpu.axes[0].edges\n", - "\n", - "# (label, histogram, cluster count, linestyle, colour). The result-path rows are\n", - "# appended only if the zero-copy cell has been run.\n", - "series = [\n", - " ('CPU', hist_cpu, n_clusters_cpu, '-', 'C0'),\n", - " ('CUDA per-frame', hist_cuda_v1, n_clusters_cuda_v1, '--', '0.55'),\n", - " ('CUDA batched', hist_cuda, n_clusters_cuda, '--', 'C1'),\n", - " ('CUDA async', hist_async, n_clusters_async, '-.', 'C2'),\n", - " ('CUDA graph', hist_graph, n_clusters_graph, ':', 'C3'),\n", - "]\n", - "if 'hist_B' in globals():\n", - " series.append(('zero-copy view', hist_B, n_B, (0, (1, 1)), 'C5'))\n", - "\n", - "for label, h, n, ls, col in series:\n", - " ax_spec.stairs(h.values(), edges, label=f'{label} ({n:,})',\n", - " linestyle=ls, color=col, linewidth=1.4)\n", - "\n", - "ax_spec.set_ylabel('Counts')\n", - "ax_spec.set_title('Cluster energy spectrum: CPU vs CUDA variants and result paths')\n", - "ax_spec.legend(fontsize=8, ncol=2)\n", - "ax_spec.grid(alpha=0.2)\n", - "\n", - "# Ratio panel: everything against the CPU reference. All curves should sit on 1;\n", - "# departures are the pedestal-update difference, not the result path.\n", - "cpu_vals = hist_cpu.values()\n", - "with np.errstate(divide='ignore', invalid='ignore'):\n", - " for label, h, n, ls, col in series[2:]: # skip CPU itself and v1\n", - " r = np.where(cpu_vals > 0, h.values() / cpu_vals, np.nan)\n", - " ax_ratio.stairs(r, edges, label=f'{label} / CPU',\n", - " linestyle=ls, color=col, linewidth=1.2)\n", - "\n", - "ax_ratio.axhline(1.0, color='gray', linewidth=0.5)\n", - "ax_ratio.set_ylabel('Variant / CPU')\n", - "ax_ratio.set_xlabel('Energy [ADU]')\n", - "ax_ratio.set_ylim(0.5, 2.0)\n", - "ax_ratio.legend(fontsize=7, ncol=2)\n", - "ax_ratio.grid(alpha=0.3)\n", - "\n", - "plt.tight_layout()\n", - "plt.show()\n" - ] - }, - { - "cell_type": "markdown", - "id": "5e4a3d4b", - "metadata": {}, - "source": [ - "## Optimization arc for the deck (opt1 → opt2 → opt3)\n", - "\n", - "Same pedestal and `data` as above, scored against the CPU baseline (`t_cpu`, `n_clusters_cpu`). Each cell is self-contained: it builds its finder, trains the pedestal, and runs.\n", - "\n", - "- **opt1** — first CUDA port: `ClusterFinderCUDAOpt2`, single stream, one launch per frame (pre-refactor pipeline, pageable H2D).\n", - "- **opt2** — multi-stream + batching: `ClusterFinderCUDAOpt2`, `n_streams=4`, `find_clusters_batched` (still pre-refactor, pageable H2D).\n", - "- **opt3** — current finder, batched but **without** input pinning: `ClusterFinderCUDA.find_clusters_batched` on pageable memory (no `register_input_buffer`). The pinned + Graph + async steps are the batched/graph cells above.\n", - "\n", - "Correctness is held constant across the arc: the Test3 local-max gate has been backported into the opt2 kernel, so opt1/opt2 counts match the CPU and current finders — only the pipeline changes from step to step." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "9c456e2e", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 0 (~0.00s est.) major: 0\n", - "=========================================================================================\n", - "opt1 per-frame: 6.317s (15831 FPS, 233094770 clusters, 2330.95/frame)\n", - " Kernel only: nan ms/frame\n", - " PCIe + overhead: nan ms/frame\n", - "Speedup (CPU/opt1): 2.30x\n" - ] - } - ], - "source": [ - "# opt1 — first port: ClusterFinderCUDAOpt2, single stream, one launch per frame\n", - "cf_opt1 = ClusterFinderCUDAOpt2(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP, n_streams=1)\n", - "pd.seek(0)\n", - "for _ in range(n_frames_pd):\n", - " cf_opt1.push_pedestal_frame(pd.read_frame().copy())\n", - "\n", - "cf_opt1.reset_timers()\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "n_clusters_opt1 = 0\n", - "for i, frame in enumerate(data):\n", - " cf_opt1.find_clusters(frame, frame_number=i)\n", - " n_clusters_opt1 += cf_opt1.steal_clusters(realloc_same_capacity=True).size\n", - "t_opt1 = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults()\n", - "kernel_ms = cf_opt1.avg_kernel_time_ms()\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'opt1 per-frame: {t_opt1:.3f}s ({N/t_opt1:.0f} FPS, '\n", - " f'{n_clusters_opt1} clusters, {n_clusters_opt1/N:.2f}/frame)')\n", - "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", - "print(f' PCIe + overhead: {t_opt1*1000/N - kernel_ms:.3f} ms/frame')\n", - "print(f'Speedup (CPU/opt1): {t_cpu / t_opt1:.2f}x')" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "f32b821f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 2,626,488 (~1.84s est.) major: 0\n", - "=========================================================================================\n", - "opt2 batched (no pin): 6.085s (16433 FPS, 233093553 clusters, 2330.94/frame)\n", - " Kernel only: nan ms/frame\n", - " PCIe + overhead: nan ms/frame\n", - "Speedup (CPU/opt2): 2.39x\n", - "Speedup (opt1/opt2): 1.04x\n" - ] - } - ], - "source": [ - "# opt2 — multi-stream + batching: ClusterFinderCUDAOpt2, pageable H2D (no pinning)\n", - "cf_opt2 = ClusterFinderCUDAOpt2(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP, n_streams=N_STREAMS)\n", - "pd.seek(0)\n", - "for _ in range(n_frames_pd):\n", - " cf_opt2.push_pedestal_frame(pd.read_frame().copy())\n", - "\n", - "cf_opt2.reset_timers()\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "clusters_opt2 = []\n", - "for start in range(0, N, BATCH_SIZE):\n", - " stop = min(start + BATCH_SIZE, N)\n", - " clusters_opt2.extend(cf_opt2.find_clusters_batched(data[start:stop], first_frame=start))\n", - "t_opt2 = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults()\n", - "kernel_ms = cf_opt2.avg_kernel_time_ms()\n", - "n_clusters_opt2 = sum(cv.size for cv in clusters_opt2)\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'opt2 batched (no pin): {t_opt2:.3f}s ({N/t_opt2:.0f} FPS, '\n", - " f'{n_clusters_opt2} clusters, {n_clusters_opt2/N:.2f}/frame)')\n", - "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", - "print(f' PCIe + overhead: {t_opt2*1000/N - kernel_ms:.3f} ms/frame')\n", - "print(f'Speedup (CPU/opt2): {t_cpu / t_opt2:.2f}x')\n", - "print(f'Speedup (opt1/opt2): {t_opt1 / t_opt2:.2f}x')" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "cf8e1f9b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " minor faults: 2,295,411 (~1.61s est.) major: 1\n", - "=========================================================================================\n", - "opt3 batched (no pin): 5.198s (19238 FPS, 233093554 clusters, 2330.94/frame)\n", - " Kernel only: nan ms/frame\n", - " PCIe + overhead: nan ms/frame\n", - "Speedup (CPU/opt3): 2.79x\n", - "Speedup (opt2/opt3): 1.17x\n" - ] - } - ], - "source": [ - "# opt3 — current finder, batched but WITHOUT input pinning (pageable H2D)\n", - "cf_opt3 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=CAP, n_streams=N_STREAMS,\n", - " time_kernels=TIME_KERNELS)\n", - "pd.seek(0)\n", - "for _ in range(n_frames_pd):\n", - " cf_opt3.push_pedestal_frame(pd.read_frame().copy())\n", - "\n", - "cf_opt3.reset_timers()\n", - "mf0, Mf0 = _faults()\n", - "t0 = time.perf_counter()\n", - "clusters_opt3 = []\n", - "for start in range(0, N, BATCH_SIZE):\n", - " stop = min(start + BATCH_SIZE, N)\n", - " clusters_opt3.extend(cf_opt3.find_clusters_batched(data[start:stop], first_frame=start))\n", - "t_opt3 = time.perf_counter() - t0\n", - "mf1, Mf1 = _faults()\n", - "kernel_ms = cf_opt3.avg_kernel_time_ms()\n", - "n_clusters_opt3 = sum(cv.size for cv in clusters_opt3)\n", - "\n", - "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", - "print(\"=========================================================================================\")\n", - "print(f'opt3 batched (no pin): {t_opt3:.3f}s ({N/t_opt3:.0f} FPS, '\n", - " f'{n_clusters_opt3} clusters, {n_clusters_opt3/N:.2f}/frame)')\n", - "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", - "print(f' PCIe + overhead: {t_opt3*1000/N - kernel_ms:.3f} ms/frame')\n", - "print(f'Speedup (CPU/opt3): {t_cpu / t_opt3:.2f}x')\n", - "print(f'Speedup (opt2/opt3): {t_opt2 / t_opt3:.2f}x')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "cbd03f58-0068-4ad6-aec6-51ed9c8f8f1e", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8457b726-b4ce-444f-a8af-8cd911e77f06", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.15" - } + "cells": [ + { + "cell_type": "markdown", + "id": "md-title", + "metadata": {}, + "source": [ + "# ClusterFinder — CPU vs CUDA performance\n", + "\n", + "Throughput comparison of the serial CPU finder against the CUDA variants:\n", + "per-frame, batched+pinned, CUDA-Graph, and the async double-buffered pipeline.\n", + "\n", + "CPU↔CUDA **correctness** (why the cluster counts differ) is analysed\n", + "separately in `ClusterFinderFrozen_vs_CUDA.ipynb`; here we only sanity-check that\n", + "the counts and spectra agree, and focus on timing." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "imports", + "metadata": {}, + "outputs": [], + "source": [ + "import sys; sys.path.append('/home/ferjao_k/aare/build')\n", + "\n", + "from pathlib import Path\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import boost_histogram as bh\n", + "import time\n", + "from tqdm import tqdm\n", + "\n", + "from aare import (File, ClusterFinder, ClusterFinderFrozen, ClusterFinderMT, ClusterCollector,\n", + " ClusterFinderCUDA, ClusterFinderCUDAGraph, ClusterFinderCUDAOpt2)\n", + "from helper import print_pinning_budget\n", + "\n", + "import resource\n", + "\n", + "def _faults():\n", + " r = resource.getrusage(resource.RUSAGE_SELF)\n", + " return r.ru_minflt, r.ru_majflt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "hist-helpers", + "metadata": {}, + "outputs": [], + "source": [ + "N_BINS = 200\n", + "\n", + "def make_hist(clusters):\n", + " h = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", + " h.fill(clusters.sum())\n", + " return h\n", + "\n", + "def make_hist_from_batch(result_list):\n", + " h = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", + " energies = [np.asarray(cv.sum()).ravel() for cv in result_list if cv.size > 0]\n", + " if energies:\n", + " h.fill(np.concatenate(energies))\n", + " return h" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "config", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Build: DEVICE_PED_TYPE = double\n", + "Image size: (400, 400)\n", + "Pedestal frames: 1000\n", + "Data frames: 20000\n", + "Total in file: 100000\n", + "Cluster cap: 1700 (per-frame output slot; D2H copies it whole)\n" + ] + } + ], + "source": [ + "base = Path('/mnt/sls_det_storage/moench_data/2603_MaxIVBeamtime/2026032408/process/xrf/')\n", + "f = File(base / 'Cu_factor_10_data_master_0.json')\n", + "pd = File(base / 'Cu_factor_10_pedestal_master_0.json')\n", + "\n", + "n_frames_pd = 1000\n", + "N = 20000\n", + "cluster_size = (9, 9)\n", + "rows, cols = f.rows, f.cols\n", + "image_size = (rows, cols)\n", + "capacity = 10000\n", + "BATCH_SIZE = 2000\n", + "\n", + "N_STREAMS = 4\n", + "N_SIGMA = 5\n", + "\n", + "# Cluster cap = the fixed-size per-frame output slot the kernel writes into and\n", + "# D2H copies WHOLE every frame, regardless of how full it is. MEASURED against\n", + "# the per-frame maximum, never guessed: 2 545 at 3x3 (100k frames), 1 633 at 9x9\n", + "# (20k). The earlier campaigns ran 9x9 at 1500, which is BELOW that maximum --\n", + "# the kernel guards only the write and the host clamps the count, so it silently\n", + "# dropped 2 715 clusters (0.0095%) and made a truncation artefact look like a\n", + "# CPU-vs-CUDA precision bug. Raising it is not free at 9x9: the slot grows\n", + "# 480.5 -> 544.5 KiB and D2H 22.8 -> 25.2 us/frame, which on the f32 build is\n", + "# the binding engine. See run_ladder.py CONFIGS and report section 8.\n", + "CAP = 1700 if cluster_size == (9, 9) else 3000\n", + "\n", + "# Per-frame CUDA-event kernel timing. Off by default: it adds 2 event records\n", + "# per frame to the streams + a host query per frame, and the number is only\n", + "# meaningful at n_streams=1. Flip to True to A/B what the instrumentation costs.\n", + "TIME_KERNELS = False\n", + "\n", + "# Build identity. DEVICE_PED_TYPE is a COMPILE-TIME axis (the opt6/opt7 arm), so\n", + "# it cannot be read back off a finder: device_pedestal() hands out an NDArray of\n", + "# the HOST pedestal type and upcasts, so its dtype is float64 on both builds.\n", + "# common.device_ped_type() parses the header instead, and assert_build_fresh()\n", + "# stops that from being a lie by refusing to run if any kernel header is newer\n", + "# than the compiled .so -- the exact failure that produced one quarantined\n", + "# probe set (results/2026-08-20_INVALID_stale_build).\n", + "sys.path.insert(0, '/home/ferjao_k/aare/python/tests/perf')\n", + "import common\n", + "common.assert_build_fresh()\n", + "ARM = common.device_ped_type() # 'float' | 'double'\n", + "\n", + "print(f'Build: DEVICE_PED_TYPE = {ARM}')\n", + "print(f'Image size: {image_size}')\n", + "print(f'Pedestal frames: {n_frames_pd}')\n", + "print(f'Data frames: {N}')\n", + "print(f'Total in file: {f.total_frames}')\n", + "print(f'Cluster cap: {CAP} (per-frame output slot; D2H copies it whole)')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "pinning", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "── System RAM ──────────────────────────────────────────\n", + " Total RAM : 125.1 GiB\n", + " Currently available : 62.3 GiB (free + reclaimable cache)\n", + " Reserved headroom : 4.0 GiB (OS + CUDA context)\n", + " Safe pinning budget : 58.3 GiB\n", + "\n", + "── Frame layout ────────────────────────────────────────\n", + " Frame size : 400 × 400 × 2 B = 312.5 kB\n", + "\n", + "── Pinning estimate ────────────────────────────────────\n", + " Max frames pinnable : 195,703 (58.3 GiB)\n", + "\n", + " Note: no swap on this machine — exceeding available RAM\n", + " will trigger the OOM killer. Stay within the budget.\n" + ] + } + ], + "source": [ + "print_pinning_budget(rows, cols)" + ] + }, + { + "cell_type": "markdown", + "id": "md-build", + "metadata": {}, + "source": [ + "## Build finders\n", + "\n", + "`SERIAL` picks the CPU baseline: the sequential `ClusterFinder` or the\n", + "multi-threaded `ClusterFinderMT`. All finders are trained on the same pedestal\n", + "frames below." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "build", + "metadata": {}, + "outputs": [], + "source": [ + "SERIAL = False\n", + "\n", + "if SERIAL:\n", + " # cf_cpu = ClusterFinder(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", + " cf_cpu = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", + "else:\n", + " # Thread count is per cluster size, measured (perf/cpu_threads.py): 24 is the\n", + " # 3x3 optimum, 32 the 9x9 one. Past 32 the ClusterCollector drain -- which is\n", + " # inside the timed region -- costs more than the extra workers buy, and 9x9\n", + " # clusters are 9x larger, so the turnover happens later.\n", + " cf_cpu = ClusterFinderMT(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " capacity=capacity,\n", + " n_threads=32 if cluster_size == (9, 9) else 24)\n", + " sink = ClusterCollector(cf_cpu)\n", + " \n", + "cf_cuda_v1 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP,\n", + " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", + "cf_cuda = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP,\n", + " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", + "cf_graph = ClusterFinderCUDAGraph(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP,\n", + " n_streams=N_STREAMS)" + ] + }, + { + "cell_type": "markdown", + "id": "md-ped", + "metadata": {}, + "source": [ + "## Pedestal (all finders trained on identical frames)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "train", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Pedestal (1000 frames): 8.249s\n" + ] + } + ], + "source": [ + "t0 = time.perf_counter()\n", + "for _ in range(n_frames_pd):\n", + " img = pd.read_frame()\n", + " cf_cpu.push_pedestal_frame(img.copy())\n", + " cf_cuda_v1.push_pedestal_frame(img.copy())\n", + " cf_cuda.push_pedestal_frame(img.copy())\n", + " # cf_async.push_pedestal_frame(img.copy())\n", + " cf_graph.push_pedestal_frame(img.copy())\n", + "print(f'Pedestal ({n_frames_pd} frames): {time.perf_counter() - t0:.3f}s')" + ] + }, + { + "cell_type": "markdown", + "id": "md-io", + "metadata": {}, + "source": [ + "## Read all data frames into memory (I/O out of the timing loop)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "io", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading 20000 frames: 11.106s (1801 FPS, 549.573 GB/s)\n" + ] + } + ], + "source": [ + "f.seek(0)\n", + "t0 = time.perf_counter()\n", + "data = f.read_n(N)\n", + "t_io = time.perf_counter() - t0\n", + "print(f'Reading {N} frames: {t_io:.3f}s ({N/t_io:.0f} FPS, '\n", + " f'{f.bytes_per_frame * N / 1024**2 / t_io:.3f} GB/s)')" + ] + }, + { + "cell_type": "markdown", + "id": "md-cpu", + "metadata": {}, + "source": [ + "## CPU clustering (baseline)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "cpu", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|███████████████████████████████████████████████████████████████████████████████████| 20000/20000 [00:11<00:00, 1674.96it/s]\n" + ] }, - "nbformat": 4, - "nbformat_minor": 5 + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: 2,010,077 (~1.41s est.) major: 2\n", + "=========================================================================================\n", + "CPU clustering: 11.944s (1674 FPS, 28438219 clusters, 1421.91/frame)\n" + ] + } + ], + "source": [ + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "for frame in tqdm(data):\n", + " cf_cpu.find_clusters(frame)\n", + "t_cpu = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults() # bracket the timed loop only; MT drain + hist below allocate too\n", + "\n", + "if SERIAL:\n", + " clusters_cpu = cf_cpu.steal_clusters(realloc_same_capacity=False)\n", + " n_clusters_cpu = clusters_cpu.size\n", + " hist_cpu = make_hist(clusters_cpu)\n", + "else:\n", + " cf_cpu.stop(); sink.stop()\n", + " clusters_cpu = sink.steal_clusters()\n", + " hist_cpu = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", + " n_clusters_cpu = 0\n", + " for cv in clusters_cpu:\n", + " hist_cpu.fill(cv.sum())\n", + " n_clusters_cpu += cv.size\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'CPU clustering: {t_cpu:.3f}s ({N/t_cpu:.0f} FPS, '\n", + " f'{n_clusters_cpu} clusters, {n_clusters_cpu/N:.2f}/frame)')" + ] + }, + { + "cell_type": "markdown", + "id": "md-v1", + "metadata": {}, + "source": [ + "## CUDA — per-frame (1 launch/frame, pageable memory)\n", + "Simplest path: no batching, no pinning. Isolates per-frame launch + PCIe overhead." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "v1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: 2,327 (~0.00s est.) major: 6\n", + "=========================================================================================\n", + "CUDA per-frame: 4.143s (4828 FPS, 28449389 clusters, 1422.47/frame)\n", + " Kernel only: nan ms/frame\n", + " PCIe + overhead: nan ms/frame\n", + "Speedup (CPU/CUDA): 2.88x\n" + ] + } + ], + "source": [ + "cf_cuda_v1.reset_timers()\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "\n", + "n_clusters_cuda_v1 = 0\n", + "hist_cuda_v1 = None\n", + "for frame in data:\n", + " cf_cuda_v1.find_clusters(frame)\n", + " clusters_frame = cf_cuda_v1.steal_clusters(realloc_same_capacity=True)\n", + " n_clusters_cuda_v1 += clusters_frame.size\n", + " h = make_hist(clusters_frame)\n", + " hist_cuda_v1 = h if hist_cuda_v1 is None else hist_cuda_v1 + h\n", + "\n", + "t_cuda_v1 = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults()\n", + "kernel_ms = cf_cuda_v1.avg_kernel_time_ms()\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'CUDA per-frame: {t_cuda_v1:.3f}s ({N/t_cuda_v1:.0f} FPS, '\n", + " f'{n_clusters_cuda_v1} clusters, {n_clusters_cuda_v1/N:.2f}/frame)')\n", + "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", + "print(f' PCIe + overhead: {t_cuda_v1*1000/N - kernel_ms:.3f} ms/frame')\n", + "print(f'Speedup (CPU/CUDA): {t_cpu / t_cuda_v1:.2f}x')" + ] + }, + { + "cell_type": "markdown", + "id": "md-batched", + "metadata": {}, + "source": [ + "## CUDA — batched + multi-streamed + pinned dataset\n", + "Pins the whole input once, then submits `BATCH_SIZE`-frame chunks across `N_STREAMS` streams so H2D / kernel / D2H overlap." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "batched", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: 165 (~0.00s est.) major: 0\n", + "=========================================================================================\n", + "CUDA batched: 1.388s total | 0.069 ms/frame (14405 FPS, 28452038 clusters, 1422.60/frame)\n", + " Kernel only: nan ms/frame\n", + " PCIe + overhead: nan ms/frame\n", + "Speedup (CPU/CUDA): 8.60x\n" + ] + } + ], + "source": [ + "cf_cuda.register_input_buffer(data) # pin the whole dataset once\n", + "clusters_cuda_per_frame = []\n", + "\n", + "cf_cuda.reset_timers()\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "for start in range(0, N, BATCH_SIZE):\n", + " stop = min(start + BATCH_SIZE, N)\n", + " clusters_cuda_per_frame.extend(\n", + " cf_cuda.find_clusters_batched(data[start:stop], first_frame=start))\n", + "t_cuda = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults() # before make_hist_from_batch, which allocates GBs itself\n", + "\n", + "cf_cuda.unregister_input_buffer()\n", + "kernel_ms = cf_cuda.avg_kernel_time_ms()\n", + "n_clusters_cuda = sum(cv.size for cv in clusters_cuda_per_frame)\n", + "hist_cuda = make_hist_from_batch(clusters_cuda_per_frame)\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'CUDA batched: {t_cuda:.3f}s total | {t_cuda*1000/N:.3f} ms/frame ({N/t_cuda:.0f} FPS, '\n", + " f'{n_clusters_cuda} clusters, {n_clusters_cuda/N:.2f}/frame)')\n", + "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", + "print(f' PCIe + overhead: {t_cuda*1000/N - kernel_ms:.3f} ms/frame')\n", + "print(f'Speedup (CPU/CUDA): {t_cpu / t_cuda:.2f}x')" + ] + }, + { + "cell_type": "markdown", + "id": "md-asyncpipe", + "metadata": {}, + "source": [ + "## Async pipeline — is the wall clock host-bound?\n", + "\n", + "Diagnostic for the \"next moves\" slide. Both loops submit **slices of the already-pinned\n", + "`data`**, so neither pays a staging memcpy (the two-buffer pattern in the cell below is\n", + "only needed when frames are streamed in, not when the whole dataset is pinned in RAM).\n", + "\n", + "- **serial** `submit(b); collect(b)` -> GPU + host, serialized\n", + "- **pipelined** `submit(b+1)` before `collect(b)` -> max(GPU, host)\n", + "\n", + "`serial - pipelined` = min(GPU, host), i.e. how much time is hideable. Compare\n", + "`pipelined` against the exclusive GPU floor from nsys (`nsys_kernel_probe.py`) to see\n", + "which of the two is the real limit. Re-run the cell until minor faults plateau." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "asyncpipe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: pipelined 2 (slots pre-pinned; the rest is result heap)\n", + "=========================================================================================\n", + "pipelined (max of both): 1.362s ( 14,685 FPS) 68.1 us/frame 28441991 clusters\n", + " vs find_clusters_batched: 1.02x (69.4 -> 68.1 us/frame)\n", + " kernel (event timer): nan us/frame (inflated under 4 streams — use nsys for the true value)\n", + "\n", + "Interpretation: if pipelined ~= the nsys GPU floor, the remaining cost was host-side\n", + "and is now hidden. If pipelined stays well above it, the host is the binding limit.\n" + ] + } + ], + "source": [ + "# Async pipeline vs serial — no staging memcpy, slices of the pinned dataset.\n", + "# Drop the previous run's results FIRST. Otherwise the old res_pipe (~9.3 GB at\n", + "# 9x9) is still alive while the serial loop allocates its own, so the heap has to\n", + "# grow and the fault count never plateaus. res_pipe = [] below is too late: it\n", + "# frees inside the timed section.\n", + "for _v in ('res_serial', 'res_pipe'):\n", + " globals().pop(_v, None)\n", + "\n", + "# The serial loop is a reference point, but it also doubles as an accidental\n", + "# warm-up: it leaves both the heap and the pinned slots hot for the pipelined\n", + "# loop below. Set False to time the pipelined loop on its own and check that the\n", + "# fault count really is zero rather than merely absorbed upstream.\n", + "RUN_SERIAL = False\n", + "\n", + "cf_async = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP,\n", + " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", + "pd.seek(0)\n", + "for _ in range(n_frames_pd):\n", + " cf_async.push_pedestal_frame(pd.read_frame().copy())\n", + "\n", + "cf_async.register_input_buffer(data) # pin once; both loops reuse it\n", + "bounds = [(s, min(s + BATCH_SIZE, N)) for s in range(0, N, BATCH_SIZE)]\n", + "\n", + "# Pre-pin both output slots OUTSIDE any timed region. submit_batch() honours the\n", + "# batch size it is handed — MAX_SLOT_BYTES caps only the *auto* chunk — so these\n", + "# slots are BATCH_SIZE frames each: 240 MB at 3x3, 984 MB at 9x9, times two.\n", + "# Allocated lazily that is ~120 ms / ~480 ms of page-locking landing inside\n", + "# whichever loop runs first. Allocates only: no transfer, no launch, and the\n", + "# pedestal is NOT advanced, so cf_async stays comparable with the other finders.\n", + "\n", + "cf_async.reserve_output_slots(BATCH_SIZE)\n", + "\n", + "# ---- 1. SERIAL: submit then immediately collect (no overlap) ----------------\n", + "if RUN_SERIAL:\n", + " cf_async.reset_timers()\n", + " mf0, Mf0 = _faults()\n", + " t0 = time.perf_counter()\n", + " res_serial = []\n", + " for a, b in bounds:\n", + " tok = cf_async.submit_batch(data[a:b], first_frame=a)\n", + " res_serial.extend(cf_async.collect(tok))\n", + " t_serial = time.perf_counter() - t0\n", + " mf1, Mf1 = _faults()\n", + " f_serial = mf1 - mf0\n", + " n_serial = sum(cv.size for cv in res_serial)\n", + " del res_serial # free before the next loop\n", + "\n", + "# ---- 2. PIPELINED: keep one batch in flight while collecting the previous ---\n", + "# Reset again: avg_kernel_time_ms() is total_kernel_ms / frames_processed, and\n", + "# both loops accumulate into the same counters. Without this the kernel time\n", + "# printed below is an average over 40 000 frames from two different regimes.\n", + "cf_async.reset_timers()\n", + "mf2, Mf2 = _faults()\n", + "t0 = time.perf_counter()\n", + "res_pipe = []\n", + "tok = cf_async.submit_batch(data[bounds[0][0]:bounds[0][1]], first_frame=bounds[0][0])\n", + "for a, b in bounds[1:]:\n", + " nxt = cf_async.submit_batch(data[a:b], first_frame=a) # GPU starts batch N+1\n", + " res_pipe.extend(cf_async.collect(tok)) # host materializes batch N\n", + " tok = nxt\n", + "res_pipe.extend(cf_async.collect(tok)) # drain the last one\n", + "t_pipe = time.perf_counter() - t0\n", + "mf3, Mf3 = _faults()\n", + "f_pipe = mf3 - mf2\n", + "n_clusters_async = sum(cv.size for cv in res_pipe)\n", + "hist_async = make_hist_from_batch(res_pipe)\n", + "\n", + "cf_async.unregister_input_buffer()\n", + "\n", + "us = lambda t: t * 1e6 / N\n", + "print(f' minor faults: ' + (f'serial {f_serial:,} ' if RUN_SERIAL else '')\n", + " + f'pipelined {f_pipe:,} (slots pre-pinned; the rest is result heap)')\n", + "print(\"=========================================================================================\")\n", + "if RUN_SERIAL:\n", + " print(f'serial (GPU + host): {t_serial:.3f}s ({N/t_serial:8,.0f} FPS) {us(t_serial):6.1f} us/frame '\n", + " f'{n_serial} clusters')\n", + "print(f'pipelined (max of both): {t_pipe:.3f}s ({N/t_pipe:8,.0f} FPS) {us(t_pipe):6.1f} us/frame '\n", + " f'{n_clusters_async} clusters')\n", + "if RUN_SERIAL:\n", + " print(f' hidden by overlap: {us(t_serial) - us(t_pipe):6.1f} us/frame = min(GPU, host)')\n", + " print(f' speedup pipelined/serial: {t_serial / t_pipe:.2f}x')\n", + "try:\n", + " print(f' vs find_clusters_batched: {t_cuda / t_pipe:.2f}x '\n", + " f'({us(t_cuda):.1f} -> {us(t_pipe):.1f} us/frame)')\n", + "except NameError:\n", + " pass\n", + "print(f' kernel (event timer): {cf_async.avg_kernel_time_ms()*1000:6.1f} us/frame '\n", + " f'(inflated under {N_STREAMS} streams — use nsys for the true value)')\n", + "print()\n", + "print('Interpretation: if pipelined ~= the nsys GPU floor, the remaining cost was host-side')\n", + "print('and is now hidden. If pipelined stays well above it, the host is the binding limit.')\n" + ] + }, + { + "cell_type": "markdown", + "id": "md-graph", + "metadata": {}, + "source": [ + "## CUDA — Graph (pinned dataset)\n", + "Pre-records the H2D->kernel->D2H pipeline as a CUDA Graph per stream, cutting per-frame CPU API overhead (~21 us vs ~60 us for the streamed version)." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "graph", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: 0 (~0.00s est.) major: 0\n", + "=========================================================================================\n", + "CUDA Graph: 1.550s (12901 FPS, 28452038 clusters, 1422.60/frame)\n", + " Kernel only: nan ms/frame\n", + " Kernel+PCIe+ovhd: 0.078 ms/frame (kernel not individually timed)\n", + "Speedup (vs batched): 0.90x\n", + "Speedup (CPU/Graph): 7.70x\n" + ] + } + ], + "source": [ + "cf_graph.register_input_buffer(data)\n", + "clusters_graph_per_frame = []\n", + "\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "for start in range(0, N, BATCH_SIZE):\n", + " stop = min(start + BATCH_SIZE, N)\n", + " clusters_graph_per_frame.extend(\n", + " cf_graph.find_clusters_batched(data[start:stop], first_frame=start))\n", + "t_graph = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults() # before make_hist_from_batch, which allocates GBs itself\n", + "\n", + "cf_graph.unregister_input_buffer()\n", + "n_clusters_graph = sum(cv.size for cv in clusters_graph_per_frame)\n", + "hist_graph = make_hist_from_batch(clusters_graph_per_frame)\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'CUDA Graph: {t_graph:.3f}s ({N/t_graph:.0f} FPS, '\n", + " f'{n_clusters_graph} clusters, {n_clusters_graph/N:.2f}/frame)')\n", + "print(f' Kernel only: {cf_graph.avg_kernel_time_ms():.3f} ms/frame')\n", + "print(f' Kernel+PCIe+ovhd: {t_graph*1000/N:.3f} ms/frame (kernel not individually timed)')\n", + "print(f'Speedup (vs batched): {t_cuda / t_graph:.2f}x')\n", + "print(f'Speedup (CPU/Graph): {t_cpu / t_graph:.2f}x')" + ] + }, + { + "cell_type": "markdown", + "id": "md-zerocopy", + "metadata": {}, + "source": [ + "## Zero-copy collection — `collect_view()`\n", + "\n", + "`find_clusters_batched` / `collect()` allocate one `ClusterVector` **per frame** and copy\n", + "into it. `collect_view()` copies nothing: the pinned D2H buffer already holds correctly\n", + "laid-out clusters at a fixed per-frame stride, so the view just exposes offsets into it.\n", + "\n", + "The copy it removes is **~8 us/frame at 3x3 and ~40 us/frame at 9x9** (bytes / memcpy\n", + "bandwidth). What that is *worth* end to end is `max(0, copy - GPU floor)`, so the two\n", + "sizes pay very differently: 19.8 -> 17.1 us/frame at 3x3 (x1.16, the copy mostly hid\n", + "under the GPU already) but 66.4 -> 30.0 at 9x9 (x2.21, where it could not hide at any\n", + "overlap). Both are `[f64]`, warm, 5 reps -- report section 8.\n", + "\n", + "The view borrows the finder's slot and is released at the end of each loop iteration,\n", + "so **anything you need afterwards must be copied out**. `sums()` returns an owned array\n", + "and is safe; `frame_data(i)` / `frame_xy(i)` are views and are not.\n", + "\n", + "`sums()` is timed separately below: `collect()` copies but does not reduce, so comparing\n", + "it against `collect_view()` + `sums()` compares different work. The bare line is the one\n", + "to put next to the batched / graph / async cells." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "zerocopy", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " minor faults: 0 (should be ~0 after the warm-up above)\n", + " chunk: 240 frames/chunk build double - cap 1700 - 4 streams\n", + "=========================================================================================\n", + "GPU roofline (report 4): 30.0 us/frame ( 33,322 FPS) = 1 / max(kernel, H2D, D2H)\n", + "==> transport only: 30.9 us/frame ( 32,355 FPS) 97% of roofline\n", + "\n", + "find_clusters_batched: 69.4 us/frame ( 14,405 FPS) 43% of roofline (copies clusters, no reduction)\n", + " -> zero-copy transport is 2.25x\n" + ] + } + ], + "source": [ + "# Zero-copy collection vs the collect() cells above.\n", + "from aare import find_cluster_views_batched_iter\n", + "\n", + "# Set False to time the transport alone (no reduction, no histogram) — that is\n", + "# the GPU-pipeline number to compare against the nsys roofline.\n", + "WITH_ANALYSIS = False\n", + "\n", + "# Roofline = 1 / max(kernel, H2D, D2H), each term that engine's BUSY TIME per\n", + "# frame -- the union of its intervals, not a duration -- at n_streams=4, and\n", + "# taken as the LOWER of two estimates: the nsys probe, and the best rate the\n", + "# unprofiled pipeline sustained. Source: perf/results/2026-08-20_{f32,f64}_cap1700\n", + "# probes.csv via gpu_span.py; the table is section 4 of the report.\n", + "#\n", + "# arm size cap probe sustained PEAK binds\n", + "# double 3x3 3000 16.17 17.10 16.17 H2D\n", + "# float 3x3 3000 16.63 16.31 16.31 H2D\n", + "# double 9x9 1700 32.66 30.01 30.01 kernel\n", + "# float 9x9 1700 25.24 25.14 25.14 D2H (opt7 put the kernel under it)\n", + "#\n", + "# Neither estimate is exact and the two bracket the truth to ~2%, so a run that\n", + "# lands BETWEEN them (16.5 us on f32 3x3, say) is at the floor, not short of it.\n", + "PEAK_US = {('double', (3, 3)): 16.17, ('float', (3, 3)): 16.31,\n", + " ('double', (9, 9)): 30.01, ('float', (9, 9)): 25.14}\n", + "GPU_FLOOR_US = PEAK_US[(ARM, cluster_size)] # ARM comes from the config cell\n", + "\n", + "cf_zc = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP,\n", + " n_streams=N_STREAMS, time_kernels=TIME_KERNELS)\n", + "pd.seek(0)\n", + "for _ in range(n_frames_pd):\n", + " cf_zc.push_pedestal_frame(pd.read_frame().copy())\n", + "cf_zc.register_input_buffer(data)\n", + "\n", + "# Pre-pin the two output slots OUTSIDE the timing. This allocates only; it\n", + "# transfers nothing and launches nothing, so the pedestal is NOT advanced —\n", + "# unlike running frames through as a warm-up, which would leave cf_zc with a\n", + "# pedestal 8000 steps ahead of every other finder here.\n", + "CHUNK = cf_zc.chunk_size_for(N)\n", + "cf_zc.reserve_output_slots(CHUNK)\n", + "\n", + "hist_B = bh.Histogram(bh.axis.Regular(N_BINS, -2, 4000))\n", + "n_B = 0\n", + "t_sums = 0.0 # C++ reduction over the pinned buffer\n", + "t_hist = 0.0 # boost_histogram fill\n", + "\n", + "mf0, _ = _faults()\n", + "t0 = time.perf_counter()\n", + "for v in find_cluster_views_batched_iter(cf_zc, data, chunk=CHUNK):\n", + " if not WITH_ANALYSIS:\n", + " continue\n", + " _t = time.perf_counter(); s = v.sums(); t_sums += time.perf_counter() - _t\n", + " n_B += s.size\n", + " _t = time.perf_counter(); hist_B.fill(s); t_hist += time.perf_counter() - _t\n", + "t_B = time.perf_counter() - t0\n", + "f_B = _faults()[0] - mf0\n", + "cf_zc.unregister_input_buffer()\n", + "\n", + "us = lambda t: t * 1e6 / N\n", + "pc = lambda t: 100 * GPU_FLOOR_US / us(t)\n", + "t_bare = t_B - t_sums - t_hist\n", + "\n", + "print(f' minor faults: {f_B:,} (should be ~0 after the warm-up above)')\n", + "print(f' chunk: {cf_zc.chunk_size_for(N)} frames/chunk '\n", + " f'build {ARM} - cap {CAP} - {N_STREAMS} streams')\n", + "print(\"=========================================================================================\")\n", + "print(f'GPU roofline (report 4): {GPU_FLOOR_US:6.1f} us/frame ({1e6/GPU_FLOOR_US:8,.0f} FPS) '\n", + " f'= 1 / max(kernel, H2D, D2H)')\n", + "print(f'==> transport only: {us(t_bare):6.1f} us/frame ({N/t_bare:8,.0f} FPS) '\n", + " f'{pc(t_bare):3.0f}% of roofline')\n", + "if WITH_ANALYSIS:\n", + " print(f' + sums(): {us(t_sums):6.1f} us/frame')\n", + " print(f' + histogram: {us(t_hist):6.1f} us/frame')\n", + " print(f' = total: {us(t_B):6.1f} us/frame ({N/t_B:8,.0f} FPS) '\n", + " f'{pc(t_B):3.0f}% of roofline {n_B} clusters')\n", + "try:\n", + " print()\n", + " print(f'find_clusters_batched: {us(t_cuda):6.1f} us/frame ({N/t_cuda:8,.0f} FPS) '\n", + " f'{pc(t_cuda):3.0f}% of roofline (copies clusters, no reduction)')\n", + " print(f' -> zero-copy transport is {t_cuda/t_bare:.2f}x')\n", + "except NameError:\n", + " pass\n" + ] + }, + { + "cell_type": "markdown", + "id": "md-agree", + "metadata": {}, + "source": [ + "## Agreement sanity check\n", + "Counts should match to a hair. The residual comes from the CUDA finder updating the pedestal once per frame vs the CPU's per-pixel update (analysed in `ClusterFinderFrozen_vs_CUDA.ipynb`)." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "agree", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " CPU 28,438,219 diff vs CPU 0 (0.0000%)\n", + " CUDA per-frame 28,449,389 diff vs CPU 11,170 (0.0393%)\n", + " CUDA batched 28,441,991 diff vs CPU 3,772 (0.0133%)\n", + " CUDA graph 28,441,991 diff vs CPU 3,772 (0.0133%)\n", + " CUDA async 28,441,991 diff vs CPU 3,772 (0.0133%)\n" + ] + } + ], + "source": [ + "rows = [('CPU', n_clusters_cpu), ('CUDA per-frame', n_clusters_cuda_v1),\n", + " ('CUDA batched', n_clusters_cuda), ('CUDA graph', n_clusters_graph),\n", + " ('CUDA async', n_clusters_async)]\n", + "if globals().get('n_B'): # 0 when WITH_ANALYSIS=False: nothing counted\n", + " rows.append(('zero-copy view', n_B))\n", + "\n", + "for name, n in rows:\n", + " d = abs(n - n_clusters_cpu)\n", + " print(f' {name:<18} {n:>12,} diff vs CPU {d:>6,} ({d/max(n_clusters_cpu,1):.4%})')\n" + ] + }, + { + "cell_type": "markdown", + "id": "md-plots", + "metadata": {}, + "source": [ + "## Spectrum: CPU vs CUDA variants" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "plots", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, (ax_spec, ax_ratio) = plt.subplots(\n", + " 2, 1, figsize=(9, 6.5), sharex=True,\n", + " gridspec_kw={'height_ratios': [3, 1]})\n", + "\n", + "edges = hist_cpu.axes[0].edges\n", + "\n", + "# (label, histogram, cluster count, linestyle, colour). The result-path rows are\n", + "# appended only if the zero-copy cell has been run.\n", + "series = [\n", + " ('CPU', hist_cpu, n_clusters_cpu, '-', 'C0'),\n", + " ('CUDA per-frame', hist_cuda_v1, n_clusters_cuda_v1, '--', '0.55'),\n", + " ('CUDA batched', hist_cuda, n_clusters_cuda, '--', 'C1'),\n", + " ('CUDA async', hist_async, n_clusters_async, '-.', 'C2'),\n", + " ('CUDA graph', hist_graph, n_clusters_graph, ':', 'C3'),\n", + "]\n", + "if 'hist_B' in globals():\n", + " series.append(('zero-copy view', hist_B, n_B, (0, (1, 1)), 'C5'))\n", + "\n", + "for label, h, n, ls, col in series:\n", + " ax_spec.stairs(h.values(), edges, label=f'{label} ({n:,})',\n", + " linestyle=ls, color=col, linewidth=1.4)\n", + "\n", + "ax_spec.set_ylabel('Counts')\n", + "ax_spec.set_title('Cluster energy spectrum: CPU vs CUDA variants and result paths')\n", + "ax_spec.legend(fontsize=8, ncol=2)\n", + "ax_spec.grid(alpha=0.2)\n", + "\n", + "# Ratio panel: everything against the CPU reference. All curves should sit on 1;\n", + "# departures are the pedestal-update difference, not the result path.\n", + "cpu_vals = hist_cpu.values()\n", + "with np.errstate(divide='ignore', invalid='ignore'):\n", + " for label, h, n, ls, col in series[2:]: # skip CPU itself and v1\n", + " r = np.where(cpu_vals > 0, h.values() / cpu_vals, np.nan)\n", + " ax_ratio.stairs(r, edges, label=f'{label} / CPU',\n", + " linestyle=ls, color=col, linewidth=1.2)\n", + "\n", + "ax_ratio.axhline(1.0, color='gray', linewidth=0.5)\n", + "ax_ratio.set_ylabel('Variant / CPU')\n", + "ax_ratio.set_xlabel('Energy [ADU]')\n", + "ax_ratio.set_ylim(0.5, 2.0)\n", + "ax_ratio.legend(fontsize=7, ncol=2)\n", + "ax_ratio.grid(alpha=0.3)\n", + "\n", + "plt.tight_layout()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "markdown", + "id": "5e4a3d4b", + "metadata": {}, + "source": [ + "## Optimization arc for the deck (opt1 → opt2 → opt3)\n", + "\n", + "Same pedestal and `data` as above, scored against the CPU baseline (`t_cpu`, `n_clusters_cpu`). Each cell is self-contained: it builds its finder, trains the pedestal, and runs.\n", + "\n", + "- **opt1** — first CUDA port: `ClusterFinderCUDAOpt2`, single stream, one launch per frame (pre-refactor pipeline, pageable H2D).\n", + "- **opt2** — multi-stream + batching: `ClusterFinderCUDAOpt2`, `n_streams=4`, `find_clusters_batched` (still pre-refactor, pageable H2D).\n", + "- **opt3** — current finder, batched but **without** input pinning: `ClusterFinderCUDA.find_clusters_batched` on pageable memory (no `register_input_buffer`). The pinned + Graph + async steps are the batched/graph cells above.\n", + "\n", + "Correctness is held constant across the arc: the Test3 local-max gate has been backported into the opt2 kernel, so opt1/opt2 counts match the CPU and current finders — only the pipeline changes from step to step." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "9c456e2e", + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Unsupported combination of type and cluster size: /(9, 9) when requesting ClusterFinderCUDAOpt2_Cluster9x9i", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/aare/build/aare/ClusterFinder.py:25\u001b[0m, in \u001b[0;36m_get_class\u001b[0;34m(name, cluster_size, dtype)\u001b[0m\n\u001b[1;32m 24\u001b[0m class_name \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_Cluster\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcluster_size[\u001b[38;5;241m0\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124mx\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcluster_size[\u001b[38;5;241m1\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00m_type_to_char(dtype)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m---> 25\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(_aare, class_name)\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m:\n", + "\u001b[0;31mAttributeError\u001b[0m: module 'aare._aare' has no attribute 'ClusterFinderCUDAOpt2_Cluster9x9i'", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[16], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# opt1 — first port: ClusterFinderCUDAOpt2, single stream, one launch per frame\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m cf_opt1 \u001b[38;5;241m=\u001b[39m \u001b[43mClusterFinderCUDAOpt2\u001b[49m\u001b[43m(\u001b[49m\u001b[43mimage_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcluster_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_sigma\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mN_SIGMA\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[43m \u001b[49m\u001b[43mmax_clusters_per_frame\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mCAP\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mn_streams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m pd\u001b[38;5;241m.\u001b[39mseek(\u001b[38;5;241m0\u001b[39m)\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m _ \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(n_frames_pd):\n", + "File \u001b[0;32m~/aare/build/aare/ClusterFinder.py:268\u001b[0m, in \u001b[0;36mClusterFinderCUDAOpt2\u001b[0;34m(image_size, cluster_size, n_sigma, dtype, max_clusters_per_frame, n_streams, time_kernels)\u001b[0m\n\u001b[1;32m 262\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m _cuda_available():\n\u001b[1;32m 263\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 264\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mClusterFinderCUDAOpt2 is not available in this build of aare. \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 265\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mRebuild with -DAARE_CUDA=ON (and -DAARE_PYTHON_BINDINGS=ON).\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 266\u001b[0m )\n\u001b[0;32m--> 268\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[43m_get_class\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mClusterFinderCUDAOpt2\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcluster_size\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 269\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m(image_size,\n\u001b[1;32m 270\u001b[0m n_sigma\u001b[38;5;241m=\u001b[39mn_sigma,\n\u001b[1;32m 271\u001b[0m max_clusters_per_frame\u001b[38;5;241m=\u001b[39mmax_clusters_per_frame,\n\u001b[1;32m 272\u001b[0m n_streams\u001b[38;5;241m=\u001b[39mn_streams,\n\u001b[1;32m 273\u001b[0m time_kernels\u001b[38;5;241m=\u001b[39mtime_kernels)\n", + "File \u001b[0;32m~/aare/build/aare/ClusterFinder.py:27\u001b[0m, in \u001b[0;36m_get_class\u001b[0;34m(name, cluster_size, dtype)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28mcls\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(_aare, class_name)\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m:\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mUnsupported combination of type and cluster size: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mdtype\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m/\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcluster_size\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m when requesting \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclass_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mcls\u001b[39m\n", + "\u001b[0;31mValueError\u001b[0m: Unsupported combination of type and cluster size: /(9, 9) when requesting ClusterFinderCUDAOpt2_Cluster9x9i" + ] + } + ], + "source": [ + "# opt1 — first port: ClusterFinderCUDAOpt2, single stream, one launch per frame\n", + "cf_opt1 = ClusterFinderCUDAOpt2(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP, n_streams=1)\n", + "pd.seek(0)\n", + "for _ in range(n_frames_pd):\n", + " cf_opt1.push_pedestal_frame(pd.read_frame().copy())\n", + "\n", + "cf_opt1.reset_timers()\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "n_clusters_opt1 = 0\n", + "for i, frame in enumerate(data):\n", + " cf_opt1.find_clusters(frame, frame_number=i)\n", + " n_clusters_opt1 += cf_opt1.steal_clusters(realloc_same_capacity=True).size\n", + "t_opt1 = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults()\n", + "kernel_ms = cf_opt1.avg_kernel_time_ms()\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'opt1 per-frame: {t_opt1:.3f}s ({N/t_opt1:.0f} FPS, '\n", + " f'{n_clusters_opt1} clusters, {n_clusters_opt1/N:.2f}/frame)')\n", + "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", + "print(f' PCIe + overhead: {t_opt1*1000/N - kernel_ms:.3f} ms/frame')\n", + "print(f'Speedup (CPU/opt1): {t_cpu / t_opt1:.2f}x')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f32b821f", + "metadata": {}, + "outputs": [], + "source": [ + "# opt2 — multi-stream + batching: ClusterFinderCUDAOpt2, pageable H2D (no pinning)\n", + "cf_opt2 = ClusterFinderCUDAOpt2(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP, n_streams=N_STREAMS)\n", + "pd.seek(0)\n", + "for _ in range(n_frames_pd):\n", + " cf_opt2.push_pedestal_frame(pd.read_frame().copy())\n", + "\n", + "cf_opt2.reset_timers()\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "clusters_opt2 = []\n", + "for start in range(0, N, BATCH_SIZE):\n", + " stop = min(start + BATCH_SIZE, N)\n", + " clusters_opt2.extend(cf_opt2.find_clusters_batched(data[start:stop], first_frame=start))\n", + "t_opt2 = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults()\n", + "kernel_ms = cf_opt2.avg_kernel_time_ms()\n", + "n_clusters_opt2 = sum(cv.size for cv in clusters_opt2)\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'opt2 batched (no pin): {t_opt2:.3f}s ({N/t_opt2:.0f} FPS, '\n", + " f'{n_clusters_opt2} clusters, {n_clusters_opt2/N:.2f}/frame)')\n", + "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", + "print(f' PCIe + overhead: {t_opt2*1000/N - kernel_ms:.3f} ms/frame')\n", + "print(f'Speedup (CPU/opt2): {t_cpu / t_opt2:.2f}x')\n", + "print(f'Speedup (opt1/opt2): {t_opt1 / t_opt2:.2f}x')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cf8e1f9b", + "metadata": {}, + "outputs": [], + "source": [ + "# opt3 — current finder, batched but WITHOUT input pinning (pageable H2D)\n", + "cf_opt3 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=CAP, n_streams=N_STREAMS,\n", + " time_kernels=TIME_KERNELS)\n", + "pd.seek(0)\n", + "for _ in range(n_frames_pd):\n", + " cf_opt3.push_pedestal_frame(pd.read_frame().copy())\n", + "\n", + "cf_opt3.reset_timers()\n", + "mf0, Mf0 = _faults()\n", + "t0 = time.perf_counter()\n", + "clusters_opt3 = []\n", + "for start in range(0, N, BATCH_SIZE):\n", + " stop = min(start + BATCH_SIZE, N)\n", + " clusters_opt3.extend(cf_opt3.find_clusters_batched(data[start:stop], first_frame=start))\n", + "t_opt3 = time.perf_counter() - t0\n", + "mf1, Mf1 = _faults()\n", + "kernel_ms = cf_opt3.avg_kernel_time_ms()\n", + "n_clusters_opt3 = sum(cv.size for cv in clusters_opt3)\n", + "\n", + "print(f' minor faults: {mf1-mf0:,} (~{(mf1-mf0)*0.7e-6:.2f}s est.) major: {Mf1-Mf0:,}')\n", + "print(\"=========================================================================================\")\n", + "print(f'opt3 batched (no pin): {t_opt3:.3f}s ({N/t_opt3:.0f} FPS, '\n", + " f'{n_clusters_opt3} clusters, {n_clusters_opt3/N:.2f}/frame)')\n", + "print(f' Kernel only: {kernel_ms:.3f} ms/frame')\n", + "print(f' PCIe + overhead: {t_opt3*1000/N - kernel_ms:.3f} ms/frame')\n", + "print(f'Speedup (CPU/opt3): {t_cpu / t_opt3:.2f}x')\n", + "print(f'Speedup (opt2/opt3): {t_opt2 / t_opt3:.2f}x')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "cbd03f58-0068-4ad6-aec6-51ed9c8f8f1e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8457b726-b4ce-444f-a8af-8cd911e77f06", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/python/tests/ClusterFinderFrozen_vs_CUDA.ipynb b/python/tests/ClusterFinderFrozen_vs_CUDA.ipynb index d968edf8..db01cf02 100644 --- a/python/tests/ClusterFinderFrozen_vs_CUDA.ipynb +++ b/python/tests/ClusterFinderFrozen_vs_CUDA.ipynb @@ -1,355 +1,266 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "md-intro", - "metadata": {}, - "source": [ - "# Frozen-CPU vs CUDA — isolating pedestal-update timing\n", - "\n", - "`ClusterFinderFrozen` is a diagnostic twin of the serial `ClusterFinder`: **identical**\n", - "decision logic (negative skip, Test1, Test3, `value == max` store gate, edge handling,\n", - "rounding), differing in **exactly one** respect — *when* the pedestal is updated.\n", - "\n", - "| finder | pedestal update |\n", - "|---|---|\n", - "| `ClusterFinder` | per-pixel, **during** the raster scan (scan-order dependent) |\n", - "| `ClusterFinderFrozen` | frozen snapshot for all decisions; **deferred** to frame end |\n", - "| `ClusterFinderCUDA` | frozen per frame; batch update at frame end |\n", - "\n", - "`Frozen` and `CUDA` share the same update *model*." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "imports", - "metadata": {}, - "outputs": [], - "source": [ - "import sys; sys.path.append('/home/ferjao_k/aare/build')\n", - "\n", - "from pathlib import Path\n", - "import numpy as np\n", - "import time\n", - "\n", - "from aare import File, ClusterFinder, ClusterFinderFrozen, ClusterFinderCUDA\n", - "from helper import (centers, only_sets, train_pedestal,\n", - " compare_finders, print_comparison, plot_spectra,\n", - " scan_mismatches, plot_masked_mismatch, walkthrough)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "config", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "image (400, 400) pedestal 1000 data 10000 streams 1\n" - ] - } - ], - "source": [ - "base = Path('/mnt/sls_det_storage/moench_data/2603_MaxIVBeamtime/2026032408/process/xrf/')\n", - "f = File(base / 'Cu_factor_10_data_master_0.json')\n", - "pd = File(base / 'Cu_factor_10_pedestal_master_0.json')\n", - "\n", - "n_frames_pd = 1000\n", - "N = 10000\n", - "cluster_size = (3, 3)\n", - "rows, cols = f.rows, f.cols\n", - "image_size = (rows, cols)\n", - "capacity = 50_000\n", - "\n", - "N_STREAMS = 1 # single device pedestal -> apples-to-apples with the CPU finders\n", - "N_SIGMA = 5\n", - "sx, sy = cluster_size\n", - "rx, ry = sx // 2, sy // 2\n", - "print(f'image {image_size} pedestal {n_frames_pd} data {N} streams {N_STREAMS}')" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "build", - "metadata": {}, - "outputs": [], - "source": [ - "cf_cpu = ClusterFinder(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", - "cf_frozen = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", - "cf_cuda = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=1700 if cluster_size == (9, 9) else 3000,\n", - " n_streams=N_STREAMS)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "train", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pedestal train: 0.77s\n", - "data: (10000, 400, 400) uint16\n" - ] - } - ], - "source": [ - "# Train ALL three on the SAME pedestal frames, then load the data block.\n", - "t0 = time.perf_counter()\n", - "for _ in range(n_frames_pd):\n", - " img = pd.read_frame().copy()\n", - " cf_cpu.push_pedestal_frame(img)\n", - " cf_frozen.push_pedestal_frame(img)\n", - " cf_cuda.push_pedestal_frame(img)\n", - "print(f'pedestal train: {time.perf_counter()-t0:.2f}s')\n", - "\n", - "f.seek(0)\n", - "data = f.read_n(N)\n", - "print('data:', data.shape, data.dtype)" - ] - }, - { - "cell_type": "markdown", - "id": "md-compare", - "metadata": {}, - "source": [ - "## The three-way comparison\n", - "- All three finders now carry the **same** trained pedestal. \n", - "- `compare_finders` runs each over the same sampled frames and reports exact (tol=0) pairwise centre mismatches." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "compare", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Scanned 10000 frames\n", - "\n", - "Total clusters per finder:\n", - " cpu 23,244,602\n", - " frozen 23,244,605\n", - " cuda 23,244,611\n", - "\n", - "Pairwise exact mismatches (tol=0):\n", - " pair A-only B-only total\n", - " cpu vs frozen 8 11 19 (0.0001%)\n", - " cpu vs cuda 8 17 25 (0.0001%)\n", - " frozen vs cuda 0 6 6 (0.0000%)\n" - ] - } - ], - "source": [ - "SCAN = 10000 # frames sampled across `data` (set to len(data) for the full block)\n", - "\n", - "totals, pairs, nscan, hists = compare_finders(\n", - " # {'frozen': cf_frozen, 'cuda': cf_cuda}, data, scan_count=SCAN)\n", - " {'cpu': cf_cpu, 'frozen': cf_frozen, 'cuda': cf_cuda}, data, scan_count=SCAN)\n", - "print_comparison(totals, pairs, nscan)" - ] - }, - { - "cell_type": "markdown", - "id": "md-read", - "metadata": {}, - "source": [ - "**Reading the table.** If `frozen vs cuda` collapses to ~0 while `cpu vs cuda` and\n", - "`frozen vs cpu` are comparable and non-trivial, pedestal-update *timing* is the proven\n", - "cause. A small non-zero `frozen vs cuda` residual would be a genuine surprise (FP corner,\n", - "edge pixel, or the multi-stream path) worth chasing — not expected background." - ] - }, - { - "cell_type": "markdown", - "id": "424e2976", - "metadata": {}, - "source": [ - "## Cluster-energy spectra\n", - "\n", - "The three finders' cluster-energy distributions, accumulated in the same compare pass\n", - "(no extra scan). They should overlap almost perfectly; the ratio panel (each vs `cpu`)\n", - "makes any per-bin divergence — e.g. the `frozen vs cuda` residual — visible." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "f057e296", - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": - "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ImpWZSV5CHY8qVIiotbujTfewG233QZ7+3NVMqnoy2PBggXYs2ePahn56aefMGXKFJPXyQ2G//Of/+DQoUPqxsHHjh3DNddcU+V+5B5g//77L5566imVfv311zh8+LCq6JuzaNEiVbmvqWIrAUptyPENHToUnTt3Vq0Eu3btUscigZHxMV5yySV44oknqtxOcXExrr32Wtxzzz1oyUpKar4hbHBwMEaPHo333nsPVkOjSrKysuSufSq1lPLyci0jI0OlxPxrSWXwpy2fad2XdVdpU77GGvBzzPxraWWwoKBA279/v0ptSVlZmfbiiy9q7dq105ydnbWoqCjtueeeU8+tX79e/eZLPul27Nihlp04cULlXUlJibZ06VL1Ojc3N+3KK6/UFixYoPn4+Bhec/ToUe3yyy/XgoODNQ8PD61fv37a2rVrqz2ulJQUzc7OTtu7d2+16/3nP/9Rxy3HUZXVq1erbRUXF9c6X/7++2/1Pk+dOmWyfOfOnVpkZKSWmJionl+1alWl165Zs0br3Lmztm/fPrWO5Jk5ev5NnDhRu/nmm2t1XObOSUUfffSRSf5Xp7CwUHv00UfVe5J8bN++vfbhhx+a3decOXO0Xr16mbx+4cKFWkxMjMnx9e/fX3N3d1fHMHjwYO3kyZPqmGRbxg9ZJjIzM7U777xTCwoK0ry8vLSRI0eqfNbp+12yZIkWGxurzqXk3VdffaV1795dc3V11fz9/bWLLrpIy83NNbxu2bJlqlw25We7LvVitlgQUbMKcwnCe0nJKq0tzcHZJCUiqotZs2bhpZdeUlfI9+/fr8YzhISE1Pr1f/31l2oxuPfee1WXH2kteO6550zWyc3Nxbhx47Bu3Trs2LEDY8aMwfjx4026+lS0efNm1aWnS5cu1e5fukFJ9yBHR/P3NZbuU5999pnqIuTk5FTr9yXblVYJ4y5F0mpwww034K233kJoaKjZ1509exZ33nknli9fro6/JuXl5fjhhx/QsWNHlS9ypX3AgAFVdrFqbNLl64svvlCtQ9IdS67we3p61mtbpaWluPLKKzFixAjs3r0bW7duxV133aXyceLEiXjkkUfQrVs3JCYmqocsk25ll156qerytmbNGmzfvh3nnXceLrroInXudEePHlWtUNICJeVM1pdzIS1a0nq1fv16XH311Wp7uvPPPx/x8fE4deoU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R85gS0RERETU2tSrxaJt27ZIS0urtLywsBAdO3ZsjOMiIiIiIqKWHlicPHkSZWVllZYXFRXh9OnTjXFcRERERERkQ+rUb+nbb781/P/nn3+Gj4+P4W8JNH799VfExsY27hESkU3y9u6IXsmx8O7XfK2Y5S7eJikRERFZaWAhd9cWdnZ2mDx5sslzTk5OaNOmDV599dXGPUIisklevh2wOe1uPO7bodn2WeoWbJISERGRlQYW+r0rpFXin3/+QWAg54onIvPyc0+jv/dK5OfKDfL+17rZlOzKikxSIiIiaj71msJJ7ldBRFSdjPRdOBjxj0qBbs2SWU458SYpERERNZ96zw0r4ynkkZycbGjJ0C1durQxjo2IbFgbt0hsPRmPhF6RzbbPEOcALDibgpDuAc22TyIiImpAYDFv3jw888wz6g7cYWFhaswFEZExBzt7eGqaSpuLp6MHeucX4KijB08GERGRLQQW7733HpYtW4ZJkyY1/hERUYtwpigZr4QE4aaiZLRvpn1mlmTjY28vdCvJbqY9EhERka5elxKLi4sxePBgNNSmTZswfvx4hIeHq1aPb775psbXbNy4EX379oWrq6u6UZ8EORWtXLkSXbt2hYuLi0pXrVrV4GMlorrJRzm2uLuptLlklObgHT8flRIREZENBBZ33HEHVqxY0eCd5+XloVevXnjrrbdqPWh83LhxGDZsGHbs2IEnnngCDz74oAokdFu3bsXEiRNVa8quXbtUet111+Gvv/5q8PESUe2VeEWbpM0hLOoSnD30skqJiIjIBrpCFRYWYvHixVi3bh169uyp7mFh7LXXXqvVdsaOHasetSWtE9HR0Vi0aJH6u0uXLti2bRsWLFiACRMmqGXy3KhRozBr1iz1t6TSyiHLP//88zq8SyIiIiIiatIWi927d6N3796wt7fH3r17VeuB/ti5cyeairRGjB492mTZmDFjVHBRUlJS7TpbtmxpsuMiosqcM4+ZpM0h+cx6dGn3mEqJiIjIBlos1q+3zI92UlISQkJCTJbJ36WlpUhNTVUzVFW1jiyvSlFRkXrosrPPDfzUNE09LEHft6X2b+uYf5bPQ3mdHeyatRwXl+Qjwdlepdbw2WE5ZP5ZGssg89DSWAZtPw/rst9638fCUipObau/WePl5tapbkrc+fPnqyl0K8rKyrLoSczNzVX/53S+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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = plot_spectra(hists, totals,\n", - " title=f'Cluster energy spectra — cluster_size={cluster_size}, n_streams={N_STREAMS}')" - ] - }, - { - "cell_type": "markdown", - "id": "md-resid", - "metadata": {}, - "source": [ - "## Eyeball any residual `frozen vs cuda` mismatches\n", - "\n", - "Fresh finders, retrained identically, then the masked side-by-side view of the worst\n", - "residual frames. If the table showed 0, this should find nothing to plot." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "resid", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "frozen-only: 0 cuda-only: 6 frames shown: 6\n" - ] - }, - { - "data": { - "image/png": - "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HIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASSIAAAAAAAwBFIggAAAAAAAEcgCQIAAAAAAByBJAgAAAAAAHAEkiAAAAAAAMARSIIAAAAAAABHIAkCAAAAAAAcgSQIAAAAAABwBJIgAAAAAADAEUiCAAAAAAAARyAJAgAAAAAAHIEkCAAAAAAAcASS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AAAAANwCRRAAAAAAAOAWKIIAAAAAAAC3QBEEAAAAAAC4BYogAAAAAADALVAEAQAAAAAAboEiCAAAAAAAcAsUQQAAAAAAgFugCAIAAAAAANwCRRAAAAAAAOAWKIIAAAAAAAC3QBEEAAAAAAC4BYogAAAAAADALVAEQZbkdDrVu3dv5c6dWx4eHvrjjz/Su0vATWU+54sWLWItA8B1kA+Aa2vatKkGDBjAKkKWRxEEWdLKlSv14YcfatmyZTpx4oQqV66szODkyZPq3r27ChYsqOzZs6tGjRr66quvLntO27ZtVaxYMfn6+qpQoULW848fP570uHnf5g/iq32dPn3aes66det0//33W68336d69er65JNPbul7/f3339WxY0cVKFDAei/lypXTE088od27d1uPHzx48LK+58qVS40bN9b69etvuLM2xQDzmpT4+uuv1aJFC+XLl0+BgYGqV6+evv3228ue895776lRo0ZWX8xX8+bN9dNPP132nDFjxvzfejfb80o7duywtmVQUJACAgJUt25dHT58WBmB+XyYfp8/fz69uwIALkU+yPz54Hr7KNNfsx9OVKJEiaT36OfnZ93v1KmT1qxZc9XvHR0dbe3fzUE0czul/vzzT3Xu3FlFixa1vl+FChX0+uuvX/ac5KzjxPd45dfOnTsvy0BXe859992njIIDNMioKIIgS9q3b5+1c6lfv771B6iXl9f/PSc2NlYZjSlo7Nq1S0uWLNHff/+tdu3a6aGHHrICQaI777xTX375pfW8BQsWWO+1Q4cOSY+b55vCz6VfrVq1UpMmTZQ/f37rOZs3b1bVqlWt1//111/q1auXHnnkES1duvSWvE9TnDJ/9MfExFg7flMQ+Pjjj62CwKhRoy577nfffWe9B1P8MMWJe++9VwcOHHB5nzZs2GAVQVasWKFff/3VWs9t2rS5bN2bUGLCzdq1a7VlyxarGNWyZUsdO3bssrYqVap02fo32/JSZps1bNhQt912m9WmCU3mfZuwl9WOuMbHx6d3NwAgCfkg6+SD5HrppZes92py09y5c5UzZ07rIMa4ceP+77nmfZsDZxUrVrQOjqSUyQ/mYMq8efO0fft2vfDCC3r++ef15ptvJj0nJevY9PnS7VW2bNmkx0z/Ln1s27ZtstlsVgEpq4mLi0vvLiCrcQJZzKOPPuo0H+3Er+LF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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "cf_frozen2 = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", - "cf_cuda2 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", - " max_clusters_per_frame=1700 if cluster_size == (9, 9) else 3000,\n", - " n_streams=N_STREAMS)\n", - "train_pedestal([cf_frozen2, cf_cuda2], pd, n_frames_pd, seek=0)\n", - "\n", - "# scan_mismatches(a, b, ...) snapshots a.pedestal/noise (host) and b.device_*(0).\n", - "show, res = scan_mismatches(cf_frozen2, cf_cuda2, data, rx, ry,\n", - " scan_count=SCAN, n_show=8, tol=0)\n", - "print('frozen-only:', res['cpu_only'], ' cuda-only:', res['cu_only'], ' frames shown:', len(show))\n", - "if show:\n", - " plot_masked_mismatch(show, data, rx, ry, rows, cols, zoom=25, show_vals=True)" - ] - }, - { - "cell_type": "markdown", - "id": "d470cd40", - "metadata": {}, - "source": [ - "## Walkthrough of the surviving mismatch\n", - "\n", - "Manual Test1/Test3 recompute of the strongest residual cluster in `show`, under each\n", - "finder's decision-time snapshot pedestal." - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "c27d894d-64b2-45b2-aaa8-bfddc754b3f9", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "frame 147 centre (x=202, y=8) accepted only by cuda\n", - "raw window (ADU):\n", - "[[4646 5282 4703]\n", - " [4857 5318 4950]\n", - " [4763 4640 4858]]\n", - "\n", - "--- frozen ---\n", - " subtracted window:\n", - " [[ 45.3 638.4 -12.1]\n", - " [ 43.7 638.4 -7.5]\n", - " [ 1.1 70.7 136.4]]\n", - " centre value = 638.38 (local max? False)\n", - " max = 638.38 total = 1554.37\n", - " rms(centre) = 19.109\n", - " Test1: max > 5*rms = 95.54 -> True\n", - " Test3: total > 3*5*rms = 286.63 -> True\n", - " ACCEPT = False\n", - "\n", - "--- cuda ---\n", - " subtracted window:\n", - " [[ 45.3 638.4 -12.1]\n", - " [ 43.7 638.4 -7.5]\n", - " [ 1.1 70.7 136.4]]\n", - " centre value = 638.38 (local max? True)\n", - " max = 638.38 total = 1554.37\n", - " rms(centre) = 19.109\n", - " Test1: max > 5*rms = 95.54 -> True\n", - " Test3: total > 3*5*rms = 286.63 -> True\n", - " ACCEPT = True\n", - "\n", - "RESULT: frozen = reject , cuda = ACCEPT\n", - "pedestal mean gap @centre = 0.0000 ADU; rms gap = 0.0000\n" - ] - } - ], - "source": [ - "# Dissect the surviving frozen-vs-cuda residual.\n", - "# Recomputes Test1/Test3 under each finder's decision-time snapshot pedestal, so the\n", - "# lone mismatched cluster is fully explained (which test flips, and the pedestal gap).\n", - "walkthrough(show, data, rx, ry, rows, cols, N_SIGMA, pick=0, labels=('frozen', 'cuda'))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e2f86c8d-5d44-40ad-9fa7-80997aa260e6", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.15" - } - }, - "nbformat": 4, - "nbformat_minor": 5 + "cells": [ + { + "cell_type": "markdown", + "id": "md-intro", + "metadata": {}, + "source": [ + "# Frozen-CPU vs CUDA — isolating pedestal-update timing\n", + "\n", + "`ClusterFinderFrozen` is a diagnostic twin of the serial `ClusterFinder`: **identical**\n", + "decision logic (negative skip, Test1, Test3, `value == max` store gate, edge handling,\n", + "rounding), differing in **exactly one** respect — *when* the pedestal is updated.\n", + "\n", + "| finder | pedestal update |\n", + "|---|---|\n", + "| `ClusterFinder` | per-pixel, **during** the raster scan (scan-order dependent) |\n", + "| `ClusterFinderFrozen` | frozen snapshot for all decisions; **deferred** to frame end |\n", + "| `ClusterFinderCUDA` | frozen per frame; batch update at frame end |\n", + "\n", + "`Frozen` and `CUDA` share the same update *model*." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "imports", + "metadata": {}, + "outputs": [], + "source": [ + "import sys; sys.path.append('/home/ferjao_k/aare/build')\n", + "\n", + "from pathlib import Path\n", + "import numpy as np\n", + "import time\n", + "\n", + "from aare import File, ClusterFinder, ClusterFinderFrozen, ClusterFinderCUDA\n", + "from helper import (centers, only_sets, train_pedestal,\n", + " compare_finders, print_comparison, plot_spectra,\n", + " scan_mismatches, plot_masked_mismatch, walkthrough)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "config", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "image (400, 400) pedestal 1000 data 10000 streams 1\n" + ] + } + ], + "source": [ + "base = Path('/mnt/sls_det_storage/moench_data/2603_MaxIVBeamtime/2026032408/process/xrf/')\n", + "f = File(base / 'Cu_factor_10_data_master_0.json')\n", + "pd = File(base / 'Cu_factor_10_pedestal_master_0.json')\n", + "\n", + "n_frames_pd = 1000\n", + "N = 10000\n", + "cluster_size = (3, 3)\n", + "rows, cols = f.rows, f.cols\n", + "image_size = (rows, cols)\n", + "capacity = 50_000\n", + "\n", + "N_STREAMS = 1 # single device pedestal -> apples-to-apples with the CPU finders\n", + "N_SIGMA = 5\n", + "sx, sy = cluster_size\n", + "rx, ry = sx // 2, sy // 2\n", + "print(f'image {image_size} pedestal {n_frames_pd} data {N} streams {N_STREAMS}')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "build", + "metadata": {}, + "outputs": [], + "source": [ + "cf_cpu = ClusterFinder(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", + "cf_frozen = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", + "cf_cuda = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=1700 if cluster_size == (9, 9) else 3000,\n", + " n_streams=N_STREAMS)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "train", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pedestal train: 0.78s\n", + "data: (10000, 400, 400) uint16\n" + ] + } + ], + "source": [ + "# Train ALL three on the SAME pedestal frames, then load the data block.\n", + "t0 = time.perf_counter()\n", + "for _ in range(n_frames_pd):\n", + " img = pd.read_frame().copy()\n", + " cf_cpu.push_pedestal_frame(img)\n", + " cf_frozen.push_pedestal_frame(img)\n", + " cf_cuda.push_pedestal_frame(img)\n", + "print(f'pedestal train: {time.perf_counter()-t0:.2f}s')\n", + "\n", + "f.seek(0)\n", + "data = f.read_n(N)\n", + "print('data:', data.shape, data.dtype)" + ] + }, + { + "cell_type": "markdown", + "id": "md-compare", + "metadata": {}, + "source": [ + "## The three-way comparison\n", + "- All three finders now carry the **same** trained pedestal. \n", + "- `compare_finders` runs each over the same sampled frames and reports exact (tol=0) pairwise centre mismatches." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "compare", + "metadata": {}, + "outputs": [], + "source": [ + "SCAN = 10000 # frames sampled across `data` (set to len(data) for the full block)\n", + "\n", + "totals, pairs, nscan, hists = compare_finders(\n", + " # {'frozen': cf_frozen, 'cuda': cf_cuda}, data, scan_count=SCAN)\n", + " {'cpu': cf_cpu, 'frozen': cf_frozen, 'cuda': cf_cuda}, data, scan_count=SCAN)\n", + "print_comparison(totals, pairs, nscan)" + ] + }, + { + "cell_type": "markdown", + "id": "md-read", + "metadata": {}, + "source": [ + "**Reading the table.** If `frozen vs cuda` collapses to ~0 while `cpu vs cuda` and\n", + "`frozen vs cpu` are comparable and non-trivial, pedestal-update *timing* is the proven\n", + "cause. A small non-zero `frozen vs cuda` residual would be a genuine surprise (FP corner,\n", + "edge pixel, or the multi-stream path) worth chasing — not expected background." + ] + }, + { + "cell_type": "markdown", + "id": "424e2976", + "metadata": {}, + "source": [ + "## Cluster-energy spectra\n", + "\n", + "The three finders' cluster-energy distributions, accumulated in the same compare pass\n", + "(no extra scan). They should overlap almost perfectly; the ratio panel (each vs `cpu`)\n", + "makes any per-bin divergence — e.g. the `frozen vs cuda` residual — visible." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f057e296", + "metadata": {}, + "outputs": [], + "source": [ + "fig = plot_spectra(hists, totals,\n", + " title=f'Cluster energy spectra — cluster_size={cluster_size}, n_streams={N_STREAMS}')" + ] + }, + { + "cell_type": "markdown", + "id": "md-resid", + "metadata": {}, + "source": [ + "## Eyeball any residual `frozen vs cuda` mismatches\n", + "\n", + "Fresh finders, retrained identically, then the masked side-by-side view of the worst\n", + "residual frames. If the table showed 0, this should find nothing to plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "resid", + "metadata": {}, + "outputs": [], + "source": [ + "cf_frozen2 = ClusterFinderFrozen(image_size, cluster_size, n_sigma=N_SIGMA, capacity=capacity)\n", + "cf_cuda2 = ClusterFinderCUDA(image_size, cluster_size, n_sigma=N_SIGMA,\n", + " max_clusters_per_frame=1700 if cluster_size == (9, 9) else 3000,\n", + " n_streams=N_STREAMS)\n", + "train_pedestal([cf_frozen2, cf_cuda2], pd, n_frames_pd, seek=0)\n", + "\n", + "# scan_mismatches(a, b, ...) snapshots a.pedestal/noise (host) and b.device_*(0).\n", + "show, res = scan_mismatches(cf_frozen2, cf_cuda2, data, rx, ry,\n", + " scan_count=SCAN, n_show=8, tol=0)\n", + "print('frozen-only:', res['cpu_only'], ' cuda-only:', res['cu_only'], ' frames shown:', len(show))\n", + "if show:\n", + " plot_masked_mismatch(show, data, rx, ry, rows, cols, zoom=25, show_vals=True)" + ] + }, + { + "cell_type": "markdown", + "id": "d470cd40", + "metadata": {}, + "source": [ + "## Walkthrough of the surviving mismatch\n", + "\n", + "Manual Test1/Test3 recompute of the strongest residual cluster in `show`, under each\n", + "finder's decision-time snapshot pedestal." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c27d894d-64b2-45b2-aaa8-bfddc754b3f9", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Dissect the surviving frozen-vs-cuda residual.\n", + "# Recomputes Test1/Test3 under each finder's decision-time snapshot pedestal, so the\n", + "# lone mismatched cluster is fully explained (which test flips, and the pedestal gap).\n", + "walkthrough(show, data, rx, ry, rows, cols, N_SIGMA, pick=0, labels=('frozen', 'cuda'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2f86c8d-5d44-40ad-9fa7-80997aa260e6", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.15" + } + }, + "nbformat": 4, + "nbformat_minor": 5 } diff --git a/python/tests/perf/kernel_resources.py b/python/tests/perf/kernel_resources.py index 480c8022..a6dcf954 100755 --- a/python/tests/perf/kernel_resources.py +++ b/python/tests/perf/kernel_resources.py @@ -6,7 +6,7 @@ Reads the *compiled* extension — no rebuild and no source parsing: cuobjdump -res-usage then applies the sm_89 occupancy arithmetic. Reproduces the figures on slides 7 -and 8 of docs/cf_cuda_fused.pptx, and cross-checks against +and 8 of docs/cf_cuda_performance.pptx, and cross-checks against cudaOccupancyMaxActiveBlocksPerMultiprocessor (same blocks/SM). python kernel_resources.py # shipping build, 16x16 blocks