Skip to content

GPU backend gives incorrect energies at long range with small-σ atom types #28

@mlund

Description

@mlund

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions