274d42a2e775a6351215dfa4e9e6541f14a3bcb9
- |Fcalc + solvent| is taken once per fit instead of at every step: the solvent pair is fixed for the whole of a fit. - The per-step anisotropic factor and the derivatives are computed per point in float, and summed in double as before. Double arithmetic was most of the cost on a card with little double throughput. The final R of the grid stays in gemmi's double arithmetic. - Each mode reduces only the slots it fills; 48 blocks per fit instead of 128. - The first upload of a batch no longer adds a stream synchronisation. FitSolvent per zone at 3.5 A (RTX 5080, real zone hkl sets, synthetic amplitudes): 3.2 ms at 3.3k points, 9.2 ms at 72k and 21.6 ms at 213k, against 9.7 / 29.6 / 62.9 ms before. Fit() is 0.25-0.66 ms. Against gemmi, k_overall and b* agree to 1e-9 - 1.4e-5 relative, and the grid winner is the same. New test ModelScaleGPU_MatchesGemmiOnAModelsPoints: the rigid body's own points (the ClusterPdb fixture with anisotropic atoms, its own amplitudes, a displaced placement, the rigid body's Fcalc and mask), five groups at 6 and 3.5 A. The R tolerance of the synthetic cases is now 1e-5. That is the resolution of gemmi's own fit: its Levenberg-Marquardt stops at a WSSR change of 1e-5, and perturbing gemmi's own Fcalc by 1e-5 moves its answer by up to 1.2e-4 of <Fobs>. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D1G8gJVAy6gp1K5Dz3NE5C
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++
78.1%
HTML
6%
C
4.8%
TypeScript
3.5%
Cuda
2.7%
Other
4.8%