CPU and GPU give different results

Dear LAMMPS users,

I am implementing LAMMPS to calculate the dipole-dipole correlation function of SiC with vashishta potential. I test both GPU version and CPU one. They give different results. The version is LAMMPS (22 Aug 2018).

The .in files SiC_CPU.in and SiC_GPU.in are checked by "diff" command, they are absolutely the same, except that I set "newton on" in the CPU version.

I compared the energy, pressure, volume and RDF, both the CPU results and GPU results are the same. However, the data obtained from "variable atom" and "compute reduce" commands are inconsistent.

The GPU one is much larger than that of CPU, please see the "output_***.txt" files, which contains the data.

Best wishes,

Wei

SiC_CPU.in (1.57 KB)

SiC_GPU.in (1.57 KB)

SiC.vashishta (1.54 KB)

system.data (50.2 KB)

log_CPU.lammps (22.8 KB)

output_CPU.txt (57.9 KB)

log_GPU.lammps (22.2 KB)

output_GPU.txt (59 KB)

Dear LAMMPS users,

It is me again.

As for the vashishta potential, it is said in the manual “”

However, when I performed the simulation in GPU, it is said: ERROR: Pair style vashishta/gpu requires newton pair off (…/pair_vashishta_gpu.cpp:152).

The GPU version could work with “newton off”, but it gives different result as I mentioned in my previous email.

Best wishes,

Wei

That is just inaccurate manual. Newton on/off should not affect results, but performance. The gpu package expects newton off.

I don’t understand why the results are different, but one thing I noticed is the different average number of neighbors. Can you try to disable neighbor list building on the gpu?

Anders

Thanks for your suggestions!

I just increase the neighbor cutoff distance, both CPU and GPU give the almost same results.

It seems that the energy, pressure, volume and RDF rather than the dipole-dipole correlation function are insensitive to the neighbor cutoff distance.

Best wishes,

Wei