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

Revisions №60180

branch: master 「№60180」
Commited by: Vikram K. Mulligan
GitHub commit link: 「7b5a45ef2f62fa12」 「№3149」
Difference from previous tested commit:  code diff
Commit date: 2018-04-26 21:01:34

Merge pull request #3149 from RosettaCommons/vmullig/buried_unsat_score_incremental_merge_5 Incremental merge 5: Another couple of small improvements to buried_unsatisfied_penalty efficiency Reducing the amount of unnecessary copying of data during the packer run. Also, when packer trajectories alter multiple residues (_e.g._ when jumping back to a low-energy state), node substitutions are now automatically accepted to minimize the number of nodes that have to be updated with each packer step. Tasks: - [x] Eliminate direct storage of data in edges, and add an edge data class (pointers to which can be swapped out). - [x] Benchmark. - Packaging edge data in a special object and only swapping out the const smart pointer to the object results in about a 21% speedup. Not bad, but still not the dominant inefficiency. - The speedup from updating nodes more efficiently is inconsistent from benchmark replicate to replicate, and probably negligible. So still not the dominant inefficiency. - Final cost of `buried_unsatisfied_penalty`: 4.36x increase in packing time, for much better results, with these optimizations. Scaling is linear with pose size (with or without `buried_unsatisfied_penalty`, but intercept is negative (in both cases) -- so for small poses, the relationship is different and the cost might be more negligible. - [x] Beauty.