c3cefebe8fc15be58f54e748d9add17f377ace37
The peak search gave each of the 16384 directions to one thread, a chain of dependent FP64 additions over 1572 bins - latency-bound on a card that holds far more threads. Each direction's spectrum is now split into four consecutive runs of bins, one thread each, and the runs' first-best peaks are combined in order with the same strict comparison, so the first bin of highest prominence is still the one returned. A run after the first sums its starting window afresh rather than carrying the running sum in. The double sums of float magnitudes are exact unless a magnitude is below ~1e-9 of its window sum, so the background is the same double: 0 of 491520 directions differ in a synthetic still/rotation harness, and the hkl of 3000 stills frames (-X fft) is byte-identical. Kernel (isolated, RTX 5080): 0.87 -> 0.65 ms per call. The stills de-novo loop gains ~4% (128 -> 133 frames/s, ABAB, load ~10): the FFT chain as a whole is bound by GPU memory bandwidth under the indexer pool's concurrency, so even a background in float (6x faster kernel, not adopted) gives only ~9%. Rotation first pass: FFT kernels are ~3% of the indexing step. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Jungfraujoch
Application to receive and analyse data from the PSI JUNGFRAU and EIGER detectors, together with
rugnux, its program for processing stored diffraction data - rotation and serial, macromolecular
and small-molecule - from images to merged reflections.
All documentation is now placed in docs/ subdirectory and for the current version hosted on Jungfraujoch Read The Docs page.
Languages
C++
77.9%
HTML
6%
C
4.7%
TypeScript
3.4%
Cuda
3%
Other
4.9%