a8ea35ab971c7dc84d4624f0325dbcd30962716e
On a canonical pass the post-refinement only measures: nothing in ScaleMergeAndSymmetry reads result.post_refine or prepass_detector_geometry_ - RunAllPasses does, after RunPipeline returns. So the pass now gathers the observations where it did (beside the guard's merge and the engine's host ingest - the gather reads the outcomes, which the merge chain later re-indexes in place) and runs the fit on a thread of its own, beside the merges. RunPipeline joins it when ScaleMergeAndSymmetry returns and replays its log lines and notes there. The speculative geometry probe the fit may start is started from that thread, on a copy of the run taken on the main thread before the fit, because the merge chain goes on to change the run's members. The probe-only pass keeps the sequential path. 8a1a, GPU build, two interleaved warm runs each: the window after the image pass loses the fit (post-refinement 7.6 s -> 2.4 s gather on the main thread), but the quality guard's merge of the pre-pass frames (7.8 s) is what that window waits for, so nothing moves: tail 30.57 -> 30.59 s, whole run 55.78 -> 55.79 s; 8qaw 104.08 -> 104.06 s (guard 13.8-14.1 s); myob/cytc within noise. Peak RSS on 8qaw 24.07 -> 24.35 GB. The gain needs the guard off the critical path as well. p.mtz byte-identical on myob, cytc, thau, kdp, 8a1a and 8qaw, GPU and CPU builds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SVmAWnzCmRKAXVUCdc4iNi
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%