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

Revisions №57293

branch: master 「№57293」
Commited by: Andrew Leaver-Fay
GitHub commit link: 「af243571354122c3」
Difference from previous tested commit:  code diff
Commit date: 2014-09-18 10:03:47

First pass implementation of a MultiThreadedJobDistributor. For now, the only application that is even remotely safe to use with the MTJD is rosetta_scripts, and even here the incredible prevalence of global data that people seem unable to ween themselves from makes many many rosetta_scripts not safe for use with the MTJD. To activate the MTJD, use extras=cxx11thread and a compiler that supports C++11. Random number generation is now threadsafe. RandomGenerators should no longer be constructed in individual .cc files, but instead should use the single, global RandomGenerator accessible through the function numeric::random::rg(). I'll email out the python script I used to replace RandomGenerators so that it's easier for people to fix their code following this change. Tracers are now threadsafe. Tracers must now be declared "thread_local" in addition to "static". There's currently nothing enforcing this, unfortunately, so you'll just have to be super mindful for now. Modest refactoring of the JobDistributor's go_main() function, which was a mess and is now just a little bit less of a mess. Changing the access pattern for the JobOutputterObservers so that they now attach themselves to the JobDistribotor::current_job() instead of to the JobOutputter (which is not threadsafe). It looks like the PoseEvaluators will also need to be revamped in a similar fashion.

...