[WIP] Speed up python calculator - #90
Conversation
…x() calls and replacing pair_forces asarray with fromiter
|
@wcwitt do you think there's enough test coverage that if I were to have broken something and messed up the output numbers it would be detected? |
|
Main remaining places for plausible speedup are conversion of The neighbor lists we can do with skin, but I'm a bit worried about the implementations linked to above: could whatever agent you used to find the issue with the lammps nn list write a good test? The logic that the D3 implementations are using are different enough from lammps that I'm not sure they're getting that right I'm less sure about |
|
I think I've convinced myself that the neighbor list skin heuristics in https://github.com/vicvaleeva/FourierD3, at least with the fixes in vicvaleeva/FourierD3#9, are correct, and could probably be easily incorporated into Symmetrix |
|
I have a version of the neighbor list skin recalculation heuristic. It's not a dramatic savings, but it's not negligible. With my 2000 atom system, after the speedups in this branch the neighbor lists are about 1/2 the remaining time. The skin heuristics drop the actual neighbor list construction down by a factor of 10 or so, but unfortunately just using the stored info to construct the current |
Avoid needlessly slow operations
list.index()calls fornode_typesandneigh_typeswith pure numpy array syntaxpair_forcesnp.asarraywith fasternp.fromiter(..., dtype=...)[maybe not faster?]TODO
closes #92