itapmd/imd — pull request #4 by CBegau (2014-06-04 12:23:47+00:00)
Title: Added adaptive loadbalancing feature to IMD / Improved performance if postprocessing is used

Major changes:

An adaptive loadbalancing algorithm has been added to the IMD code that can improve performance of simulation with inhomogeneous particle distribution. This is enabled by compile with the option "_LOADBALANCE". The loadbalancer uses a different communication pattern, but this is completely transparent to all functions that do not use custom build exchange of information and rely on "send_cells", "send_forces" or "fix_cells".

A performance bottleneck is solved using postprocessing routines like CNA, ADA or NYE. Previously these routines caused an exchange of atom positions with all neighbors every time step, whereas it is enough to exchange with half of them to compute interactions. The issue is solved by adding a second communication routine "sync_cells(...)" that can be called explicitly to send information to the buffer cells of all neighbors. The "send_cells" method work than as originally indented no matter if a post-processing routine is enabled or not.

Minor changes:

Bugfixes in extpot, where an uninitialized variable was used and a pointer to a pointer was passed to an MPI_allreduce.