Experiments · E66

Does running the atomistic model in single precision change any results?

No. Forces agree to 0.02 meV/Å and relaxations take identical steps, while running 1.5 times faster.

In the log: Single precision costs nothing here, and was being paid for anyway

confirmedDate not stated in the log; it was written between the commit of 2026-09-13 08:16 and the first commit that contains it, 2026-09-16 02:04unclassified0 predictions · 0 result paragraphsEXPERIMENTS.md lines 3603–3638
exp E66 diagram
What E66 did and how it came out, drawn from this record and the files it names (book/assets/diagrams/exp/E66.svg).

Results

No result paragraph for this entry was found in the log.

The full record

EXPERIMENTS.md · lines 3603–3638

E66 — Single precision costs nothing here, and was being paid for anyway

Every MACE call in this project ran at float64 because that is what the documentation suggests for geometry optimisation. The energy penalty for single precision had been measured at 0.06 meV/atom on one fixed geometry, which is the easy case: a relaxation follows forces down a surface for tens of steps, and a force error compounds into a different final structure rather than a slightly different number.

Predicted before running - forces within 10 meV/A, energies within 2 meV/atom, volumes within 0.2 per cent. Measured across three compositions, including HfNbTaTiZr, the largest atomic size misfit in the design space:

forces (meV/A) relaxed energy (meV/atom) relaxed volume steps speed
MoNbTaW 0.02 -0.00 0.000% 30 / 30 1.51x
Ta.40 Mo.26 Nb.25 W.09 0.02 -0.00 0.000% 33 / 33 1.50x
HfNbTaTiZr 0.01 0.00 -0.000% 46 / 46 1.52x

Every prediction held by a factor of five hundred. The relaxations do not merely agree at the end - they take the identical number of steps, so they follow the same path down the same surface.

The result was checked before it was believed. Agreement that good is what a broken comparison looks like, and the obvious failure would be both calculators sharing one model that the second construction had converted in place. They do not: the two hold separate models at torch.float64 and torch.float32, and building the second leaves the first alone.

And the existing record survives the change. The off-lattice hull was built at float64, so everything resting on it would need rebuilding if the two disagreed. Rebuilding four of its phases at the new default - an element in bcc, one in hcp, and two Laves compounds - reproduces the stored energies to 0.04 meV/atom at worst. Nothing needs redoing.

float32 is now the default in forager/compute.py, with FORAGER_DTYPE=float64 to restore the old behaviour. Against a screening rung carrying 18 meV/atom and candidates separated by 25, a hundredth of a meV is not a consideration, and the 1.5x is free.

Built with PRISMWebsite and visualizations made using Claude