-
Notifications
You must be signed in to change notification settings - Fork 68
Speed and functionality improvements for 'hbond' command #485
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…site to avoid doubled calculation and hopefully make parallelization simpler.
…to be decent speedup so far but requires much more testing.
…sing donor H atom - acceptor atom indices as key.
…about 3.4x so far.
…r mask not explicitly specified.
…ttle since it introduces an if statement in some inner loops but is still faster than original.
…rison between series data of the old and new versions of the hbond code since the order in which hbonds are searched for is slightly different
…inish off time series in parallel.
…operly added to file if specified during MPI
…~40% at 4 threads).
…hread under openmp; can calculate numHB from the thread arrays
…made consistent for parallel runs
…m AmberTools release.
…esults in noticable speedup for UU hbond calc
…/atoms when # frames equal.
|
Travis seems slow today... |
|
@drroe: Because of this: https://travis-ci.org/Amber-MD/ambertools-ci May be I will change to every 6 hours. |
|
Done. only run nightly build for now since we just release AT. |
|
Cool, thanks for the info Hai. Everything is passed now so no worries. |
This PR improves the single-threaded speed of
hbond(particularly for solute-solvent hydrogen bonds), adds OpenMP support, fixes some minor bugs, and introduces several new options. This largely (maybe even completely) addresses #392.The solute-solute hydrogen bond calculation speed has been improved by ~1.3x, and the solute-solvent calculation speed improved by > 3x. The single-threaded speed enhancement comes largely from refactoring the donor/acceptor loops. Previously there were a lot of duplicated distance calculations, particularly when it came to solute-solvent hydrogen bonds. Hints are now properly used in all maps which improves the find/insertion speed. OpenMP allows for even further speedup (have gotten 7.3x for 4 threads in a real-world test).
Solute-solvent bridges within the same molecule are now properly ignored when
nointramolis specified. Bridging interactions can now be tracked by solute atom, which allows better resolution when determining solute-solvent bridges; this is activated by the newbridgebyatomkeyword (a test has been added for this). The sorting of bridges has also been made more stable. The code has been re-written to make it easy to add bridge time series data in the future.Results will now be consistent for solute-solute hydrogen bonds in parallel (MPI and OpenMP) due to the more robust way solute-solute indices are calculated (no longer dependent on loop order). Also,
uuseriesanduvseriesshould now work properly in parallel. More detailed timing info can be turned on with the TIMER compiler define.This PR also introduces the
sortkeyword for writing data files; this will ensure that data sets are sorted before being written out which allows consistent results between parallel and non-parallel versions of the code.Version numbers have been incremented. We are now different from the official AT17 release.