Neighbor list problem when using EAM on GPU

Dear LAMMPS users and developers,

I have a strange issue when using eam/alloy/gpu. It seems that when I use “package gpu force/neigh” the potential energy is always exactly zero, while with “package gpu force” everything works fine. Unsurprisingly, the problem seems to be related to the neighbor list. When the list is built on the GPU no neighbors are created, there is zero interaction, and thus no potential energy.

Certainly I am doing something wrong. Could someone please take a look at my input script below, and tell me if I forgot an important statement perhaps?

Thank you for your help,

Erik Lascaris


units metal
dimension 3
boundary p p p
newton off
atom_style atomic

#package gpu force 0 0 1 # no problem
package gpu force/neigh 0 0 1 # potential energy = 0

lattice fcc 3.52
region BOX_REG block 0 10 0 10 0 10 units lattice
create_box 2 BOX_REG
create_atoms 1 region BOX_REG units lattice

pair_style eam/alloy/gpu
pair_coeff * * NiAlH_jea.eam.alloy Ni Al
mass 1 58.710
mass 2 26.982

timestep 0.001

neighbor 1.0 bin
neigh_modify every 1 delay 2 check yes

velocity all create 1000 87289 rot yes dist gaussian
fix 1 all npt temp 1000 1000 0.1 iso 0.0 0.0 1.0

thermo 1
thermo_style custom time temp press vol pe ke etotal enthalpy density
thermo_modify norm no flush yes

run 100

Hi Erik,

what version of LAMMPS you are using? I cannot reproduce the issue you reported using your input script with 15Aug14 and 30Sep14 versions.

FYI, with “package gpu force” the neighbor list is built on the CPU and copied to the GPU, and you have neighbor list statistics reported at the end of the run. With “package gpu force/neigh”, the neighbor list is built on the GPU, and the neighbor statistics on the CPU shown at the end of the run is irrelevant, but energy and force are supposed to be computed correctly. Also, the syntax for package gpu has been changed recently; have a look at the documentation if you want to try the latest version.


log.force (13.3 KB)

log.neigh (13.2 KB)