…and here is another suggestion for a workaround. When LAMMPS suggests to increase the size reserved for a single neighbor list, it just gives a suggestion for the most common case of the kind of error happening. But those errors are common for dense systems while yours is sparse. That make a much less common scenario possible: the size of the neighbor list bins is too small. This is set by default to half of the cutoff, but due to the sparsity of your system, this is not as efficient (or required to avoid overflows and inefficiencies).
If I run your input with the flags
-pk gpu 0 binsize 12.0 appended, the errors seem to be going away (at least the immediate ones).
Here is a quick summary of what has transpired during this discussion:
- having a sparse system makes it more difficult to get good GPU acceleration, especially when you have only a single GPU and many CPU cores.
- in such a scenario, it is usually much more efficient to not use GPU acceleration for pppm but only on the pair style (which is much more efficient) and then run pppm completely on the CPU and in parallel. you can append “-pk gpu 0 pair/only on” to select that mode.
- you can use the balance command to optimize the subdomain division and also minimize the risk of having subdomains without atoms (we have added a bugfix to a pending pull request for this scenario)
- you can improve on load balancing for sparse systems by switching to “tiled” communication (instead of the default and more efficient “brick” scheme) and then use “balance 1.0 rcb” to create subdomains with recursive bisectioning. this method guarantees to have a similar number of atoms per subdomain. this is particularly important and beneficial when running on the CPU.
- if increasing the neighbor list “one” parameter doesn’t make a difference, you can try to increase the “binsize” parameter for the GPU neighbor lists instead. it defaults to half the largest pair style cutoff.
- sometimes switching between OpenCL and CUDA can make a difference
- if you cannot work around a GPU neighbor list issue, you can try using the CPU generated neighbor lists by appending “neighbor no” to the “-pk gpu” flag.