fd274d5bda666cb74677b6cd3ea3bd13815390be
The previous commit freed the host Obs array once the device held every field; this one stops building it. With the GPU pipeline resident (and no observation dump) the build lays down a forty-byte record - hkl, frame, rocking position, resolution, zeta, delta_phi, partiality, and the rocking-event usability bit - holding exactly what the host still touches between the build and the release: the geometry smoothing and the partiality recompute, the corr snapshot, and the rocking-event median. Every immutable per-obs field is staged to the device straight from the source reflections, in frame-aligned bounded slices, and the recomputed partiality follows after the smoothing. The smoothing loops and the rocking-event walk run on either record through the same code (templated on the record type), so the arithmetic is exactly the one the full record ran; the CPU and dump paths keep the full Obs as before. On a rotation crystal with a ~640 A axis and 95.7 M first-pass partials the full record was 7.7 GB, built and held beside the 8.4 GB of source reflections it copied from; the narrow one is 3.8 GB and is handed back at the end of Ingest. Measured there, on top of the previous commit's release: peak RSS 20.3-22.3 GB -> 18.3 GB, and the phases that used to carry the peak drop far more - the second pass's post-refine probe and space-group search run at 13-15 GB where they ran at 18-20, and the first pass's post-Ingest plateau at 12-16 where it ran at 20-21. What remains on top is no longer the scale/merge: the new peak is the first-pass ingest sitting on the image loop's own high-water mark (~17 GB), which this code never touches. Byte-identical output on that crystal and on two ordinary rotation sentinels: merged, P1 and unmerged MTZ data blocks, .hkl, .cif, per-image table, and the report modulo date/git/command line/wall time. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Jungfraujoch
Application to receive data from the PSI JUNGFRAU and EIGER detectors.
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.7%
C
5.2%
TypeScript
3.7%
Cuda
2.2%
Other
4.2%