Merge pull request #1329 from RosettaCommons/vmullig/peppredict_blugene
Modifying the simple_cycpep_predict application to play nicely on Blue Gene.
I need to do this to allow it to be run on large-scale clusters while BOINC is tied up during CASP. This will also be my test-bed for writing a multi-level job distribution and collection hierarchy (and, ulitimately, adding multi-threading to it). It does NOT replace jd3 in any way; on the contrary, it's a convenient place to test features that we might want in jd3.
Tasks:
- Add -cyclic_peptide:MPI_processes_by_level flag to let the user specify how many processes will be devoted to each level of the hierarchical communications scheme.
- Add option to control size of batches being distributed at each level.
- Modify the simple_cycpep_predict app to set up MPI options.
- Add a SimpleCycpepPredictApplication_MPI class to the protocols level that handles the multi-level communications.
- Revise the job buffer size to a list of job buffer sizes, and remove the requirement that the job buffer size be at least the number of slaves per first-level master.
- Add hooks to SimpleCycpepPredictApplication to let it be set up by SimpleCycpepPredictApplication_MPI, and to suppress its disk I/O.
- Finish implementing all of the functions marked //TODO WRITE ME in SimpleCycpepPredictApplication_MPI.cc.
- Have this class actually distribute jobs down the hierarchy.
- Have the slave nodes call the SimpleCycpepPredictApplication class for sampling.
- Option to return only the top n% of jobs. (Job return is two-step: first, send list of scores up the hierarchy to the emperor; have emperor determine and request top n%; second, send only top poses up the hierarchy.)
- Send results summaries UP the hierarchy.
- Sort sent results as they propagate up the hierarchy.
- Unit tests for sort functions.
- Send requests for poses DOWN the hierarchy based on sorted results.
- Have the SimpleCycpepPredictApplication_MPI class collect results UP the hierarchy.
- Write out silent structures from the emperor node.
- Add integration test to MPI test suite.
- Documentation.
- Test on jojo.
- Test on Blue Gene.