Performance of fix atom/swap – LAMMPS Development

Has anyone benchmarked the performance of “fix atom/swap”? I’m using it a lot, probably in a mode that’s different from what it’s intended for, because I’m doing pure MC, so there aren’t large numbers of MD steps between swap steps. I have a couple of other custom MC fixes (for positions and cell DOFs), and that code runs fine, but when I start spending about 20% of my moves on atom swaps, it slows down incredibly (factor of about 10, even though only 20% of my moves are swap moves). The other thing that’s odd is that it seems to get slower with iteration.

I’m going to investigate further, but has anyone ever checked the performance of atom/swap?

In a somewhat related question, can anyone explain why fix_atom_swap.cpp calls the full sequence of x2lamda, pbc, exchange, borders, lamda2x, pre_neighbor, and neighbor-build when it detects unequal cutoffs? Since it doesn’t move atoms, why all the calls to functions that have to do with assignments of atoms to processors? I would have thought that at most it would need a neighbor list rebuild, if those lists are dependent on specific atom-pair cutoffs.

Read more here: Source link