Summary
The GPU backend produces non-zero energies at long separations where the reference backend correctly returns near-zero values. This occurs when the topology contains atom types with small σ values (e.g. σ=2 Å for coarse-grained titratable site beads alongside backbone beads with σ=4.5–6.78 Å).
Reproduction
# Generate coarse-grained topology (cif2top produces σ=2 titratable sites)
cif2top 4lzt.cif convert -o t.xyz --top topology.yaml
# GPU backend — energy does NOT decay to zero at long separations
duello scan --mol1 t.xyz --mol2 t.xyz --top topology.yaml \
--rmin 24 --rmax 40 --dr 1.0 -r 1.0 --backend gpu
# Reference backend — correct behavior (smooth decay to zero)
duello scan --mol1 t.xyz --mol2 t.xyz --top topology.yaml \
--rmin 24 --rmax 40 --dr 1.0 -r 1.0 --backend reference
Root cause
Tracked upstream in mlund/interatomic#7. The f32 spline coefficients lose precision for atom pairs with small σ, where the spline grid spans a wide range (r_min = σ×0.6 = 1.2 Å to cutoff = 20–50 Å) and coefficients near the steep LJ wall have large magnitudes.
Workaround
Use --backend reference for topologies with large σ mismatches between atom types.
Increasing grid size (--grid size=4000) or using --grid type=inversersq may also help but has not been verified.
Environment
- duello (latest git)
- interatomic 0.5.0
- macOS (Apple Silicon)
- Default grid settings (2000 points, PowerLaw2)
Summary
The GPU backend produces non-zero energies at long separations where the reference backend correctly returns near-zero values. This occurs when the topology contains atom types with small σ values (e.g. σ=2 Å for coarse-grained titratable site beads alongside backbone beads with σ=4.5–6.78 Å).
Reproduction
Root cause
Tracked upstream in mlund/interatomic#7. The f32 spline coefficients lose precision for atom pairs with small σ, where the spline grid spans a wide range (r_min = σ×0.6 = 1.2 Å to cutoff = 20–50 Å) and coefficients near the steep LJ wall have large magnitudes.
Workaround
Use
--backend referencefor topologies with large σ mismatches between atom types.Increasing grid size (
--grid size=4000) or using--grid type=inversersqmay also help but has not been verified.Environment