The search was CPU-bound: on a 54-chain partial complex ~80% of all CPU samples were the score's
FitModelScale grid (and libm's exp under it), with the GPU busy 13 of 37 s.
- score_placement fits its scale on the GPU where its structure factors are made there
(ModelScaleGPU's FitSolvent / Fit, as the rigid body already does); equal to rounding, the CPU
build unchanged.
- A model whose expected log-likelihood gain (sum sigma_A^4 / 2, McCoy et al. 2017; sigma_A^2 the
part of the scattering one copy is by Matthews, times Luzzati's D^2) is below 10 is not searched
for. Over the 193-set survey the lowest eLLG of a placed model is 26; every PAE domain below 24
placed nowhere, so no decision changes.
- The likelihood setups made where first needed, one serving both where the reflections are the same.
- After a candidate fails its null, the other placed candidates' nulls side by side.
- The first copy's placements refined side by side on an engine each; the groups' translation
functions side by side; CopyFactors and KnownStructureFactors over threads; the further copies'
CopyFactors and gains for the peaks walked all at once; the known-structure TF setup made while the
first copy is refined. All exact.
Survey replay (193 sets): no decision changes; two R values differ in the 3rd decimal (GPU scale).
Alternating runs, MODEL_PRIOR_SECONDS base -> new: 54-chain complex 38.3 -> 14.7, 4mtk 18.3 -> 9.7,
9v16 13.7 -> 8.3 (shared machine, indicative).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EizBKhTqrAYago9KJG3dA3