- BeamCenterFFTGPU's point surfaces: each spectrum product goes in the place
of a spectrum that is finished with (a.a where m's spectrum goes before it
is there, a.m and m.m and a^2.m in a's), so the third spectrum buffer goes,
and the forward and inverse plans share one work area - they never run at
once. The same transforms and products in the same order, so the surfaces
are unchanged. 2.6 -> 2.05 GB on a 16 Mpx detector, the largest single
holder at the first pass's peak; DeviceMemoryNeeded counts it so.
- Rugnux::FirstPassIndexerThreads: a probe pass beside the main line on a card
below the take-turns size (gpu_takes_turns(), 12 GB on the first card's
total) builds one FFT indexer for its pools instead of two, and indexes its
two schemes one after the other. Which indexer indexes a frame does not
change what it finds.
Measured with the RTX 5080's total read as 8.55 GB: first-pass peak 6.50 ->
5.92 GB (8qaw), 5.76 -> 4.84 GB (4nwv) together with the batched FFT indexer;
the speculative probe after the output 6.30 -> 4.35 GB (8qaw). Output
unchanged: p.hkl byte-identical on cytc_x10sa, myob_x10sa, 4nwv and 8qaw on
this card and on the 8.55 GB simulation; run times unchanged within noise.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>