For the cache-footprint experiments: --range-scale widens the bins
without changing n_bins, and --center subtracts each pixel's median so
neighbouring pixels share bins, while u16 frames keep their H2D size.
perf/hist/ mirrors perf/cf/: a driver that runs each config under nsys,
the traced process, settings and a README. The fill (H2D + fill_bin_major
per frame) and the readout (bin_to_pixel_major + one D2H per values())
are reported separately. Only one chunk of frames is held in host memory
and re-queued until the requested frame count.
gpu_span.analyze() takes an optional engines subset, so the one-off
readout D2H doesn't count towards the fill window or roofline. Default
output is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
throughput.py measures wall-clock FPS without nsys, for the copy-out
(find_clusters_batched) and zero-copy (BatchView) paths, at 3x3 to 9x9
and 1 and 4 streams. On the A100, zero-copy with 4 streams reaches
94-102 % of the bound predicted by the nsys probes.
- common.nsys_profile_flags(): shared nsys profile flags, adding
--cuda-event-trace=false on nsys 2025.1+ (on by default there, it widens
the host gaps between steps; kernel times are unchanged). nsys 2024.5
rejects the flag, so it is detected from the help text.
- cf/run_probes.py: 3x3, 5x5, 7x7, 9x9 at 1, 4 and 8 streams.
- cf/results/A100/: Merlin7 A100 runs, f32 and f64 with lround, and f32
with round (104e284) at 20k/2000 and 50k/3000. README lists them.
Make room for probes of other CUDA classes. common.py and gpu_span.py
stay in perf/ and become shared; the cluster-finder driver, traced
process, README and results move to perf/cf/.
- common.py: assert_build_fresh() takes the header list, capture_env()
takes extra fields, results_dir() takes the probe folder.
- cf/cf_common.py: pedestal frames, n_sigma, rebuild-guard headers,
DEVICE_PED_TYPE and the <date>_<f32|f64> results naming.
- gpu_span.py: optional kernel-name filter; tolerates an engine with no
ops. Output without a filter is unchanged.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>