-
Notifications
You must be signed in to change notification settings - Fork 64
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
Speed and functionality improvements for 'hbond' command #485
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
nointramol
is specified. Bridging interactions can now be tracked by solute atom, which allows better resolution when determining solute-solvent bridges; this is activated by the newbridgebyatom
keyword (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,
uuseries
anduvseries
should now work properly in parallel. More detailed timing info can be turned on with the TIMER compiler define.This PR also introduces the
sort
keyword 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.