「view this page in B3 βῆτα server」

Revisions №61120

branch: master 「№61120」
Commited by: Vikram K. Mulligan
GitHub commit link: 「b7d5f79c34f3f657」 「№4462」
Difference from previous tested commit:  code diff
Commit date: 2020-01-30 13:49:29

Merge pull request #4462 from RosettaCommons/vmullig/multithreaded_scoring_incremental_merge3 Incremental merge 3 for multithreaded scoring The multithreaded scoring branch identified a major thread-safety issue with the hydrogen bonding code, in which data that were needed down a long series of function calls were cached in mutable storage in the energy method, then accessed down the chain. This is fundamentally non-threadsafe: if different threads are trying to score different parts of the pose at the same time, one could overwrite the data that the other cached. The proper solution is simply to pass these data down the chain of function calls. Unfortunately, due to the complexity of the etable template classes, this means modifying a _lot_ of functions. I've done the work for this, now, and want to make it a separate pull request to ensure that it only improves performance and has no effect on accuracy. Note that I've tried to do this in a way that involves a subclassed container class, so that we can add additional data in the future if we so wish _without_ having to refactor all of these dozens of template functions, simply by adding new subclasses of the container class. Note also that this might fix rare thread safety issues with multithreaded packing, so it benefits multi-threading even before we enable multithreaded scoring. - [x] Pull request #4460 must be merged before this one.

...