52f94d29538be7dc880e863ff4e87f30c3511f3b
IndexerThreadPool_FFTIndexerWaitsForGPUWorkBeside filled only the test thread's card, but an indexer worker takes its card round-robin (pin_gpu: a process-wide counter modulo the device count). On the CI runner, a container given all of the host's GPUs, the probe's worker could land on a card nobody had filled, build its indexer and fail "CHECK(probe.Run(x, recip).error != nullptr)"; the two checks that expect a wait passed there for the same wrong reason. On a one-card workstation the worker is always on device 0, so it never showed. Every card is now filled, each under its own device, and released the same way, and the fill is topped up right before each Run so memory given back in between by anything else does not let the indexer fit. The pools are trimmed on every card at the end. What the test checks is unchanged. Run 20x alone and with the [CUDAMemHelpers],[AdaptiveSpotFinderGPU] group, also with another process holding 4 GB of the card: all pass. 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%