leonarski_fandClaude Opus 5 9f26c5e8b1 Keep the per-observation corrections on the card that computed them
Run downloaded the correction factor for every partial, scattered it into an
eight-and-a-half-million element array of eighty-byte records, kept a copy of it,
filtered it twice on the host, gathered it back and uploaded it again. Five passes
over six hundred and eighty megabytes, on the path where the data was already
resident on the card.

A comment above it warned that three host readers needed the scattered copy, and an
earlier attempt read that as a reason to leave the whole thing alone. Taken one at a
time the readers fall: both pass filters test quantities the card already holds -
zeta and the frame index - so they become kernels over the correction array in
place; the saved copy is now the download itself, thirty-four megabytes rather than
a gather of the whole record; and the combine, the only genuine host reader, gets
its own scatter immediately before it, which matters solely when observations are
dumped. Zeta is compared in double on the device so the promotion matches the host's
comparison exactly, and the drop count is an atomic add.

The merge's own sweeps had the same shape: they walked the eighty-byte record to
reach twenty bytes of it. They now build those twenty bytes once per merge, on all
threads, and stream them. The reject median's first walk over every full goes
entirely - the counts it was accumulating are the ones the error-model pass has
already produced. The group histogram is one flat uninitialised buffer whose rows
are cleared by the threads that use them, in place of a vector of vectors cleared
twice, and the ingest no longer zeroes four hundred and fifty megabytes of staging
that the following line overwrites.

Faster on seventeen of seventeen matched pairs across two alternating sessions;
eight to ten per cent of whole-run wall clock on the datasets where the tail
dominates. The reflection files are byte-identical, including with a frame
correlation cut and with an observation dump, which are what exercise the two
filters and the host combine.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016NNnL26LAvruQ9eLUUWvrJ
2026-08-24 21:19:39 +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
2025-12-04 11:56:14 +01:00
2026-08-22 18:35:47 +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-06-13 21:27:41 +02:00
2026-06-23 20:29:49 +02:00
2024-11-22 21:25:20 +01: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-22 18:35:47 +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++ 75.4%
HTML 7.5%
C 6%
TypeScript 4.2%
Cuda 2.2%
Other 4.6%