jungfrauandClaude Opus 5 f8b449a944 Score the first-pass validation frames together
Two-pass rotation indexing picks between candidate lattices by forcing each one
and counting how many of 60 validation frames it indexes. That count was a
serial loop, and it is the single largest serial stretch outside scale/merge:
57% of the 4.9 s first-pass phase, a few Ceres solves per frame on one core
while the other 47 and all four GPUs sit idle.

The frames are scored together now. Each one's verdict is its own - the score is
only how many index - and this is the same call the main image loop already
makes from every one of its workers on this same IndexAndRefine, which writes
nothing but unit_cells[] under its own mutex. With the candidate forced,
GetLattice() returns it and the branch that would advance the indexer's own
state is never reached. The offline solver stops on an iteration count rather
than a clock, so a loaded machine cannot change a frame's verdict.

The spot cache had to be filled first: it is a plain map filled on demand, and a
lookup racing an insert is not something a map survives. Filling it stays serial
and in frame order, so its contents do not depend on scheduling.

First-pass scheme gaps on the heaviest crystal 4.93 s -> 2.06 s, with both
schemes returning the same 60/60 they did before. Battery 9m23s -> 9m01s, space
group 21/24, no failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 09:28:21 -04:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-07-11 07:19:11 +02:00
2026-07-19 09:39:28 +02:00
2026-08-15 17:13:53 -04:00
2025-12-04 11:56:14 +01:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-07-13 13:54:03 +02:00
2026-07-12 19:42:29 +02:00
2026-08-13 17:03:10 +02:00
2026-03-26 20:50:33 +01:00
2026-06-23 20:29:49 +02:00
2026-08-13 17:03:10 +02:00
2026-07-19 09:39:28 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-07-19 09:39:28 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-06-13 21:27:41 +02:00
2026-06-23 20:29:49 +02:00
2026-08-13 17:03:10 +02:00
2024-11-22 21:25:20 +01:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2024-12-02 21:17:14 +01:00
2026-08-13 17:03:10 +02:00
2025-10-25 22:05:47 +02:00
2026-07-03 19:18:56 +02:00
2026-06-23 20:29:49 +02:00
2026-08-13 17:03:10 +02:00
2024-12-02 21:17:14 +01:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00

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.

S
Description
Jungfraujoch Data Acquisition System
Readme GPL-3.0
3 GiB
Languages
C++ 74.7%
HTML 8%
C 6.4%
TypeScript 4.4%
Tcl 2.3%
Other 4.1%