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

Revisions №61313

branch: master 「№61313」
Commited by: Rocco Moretti
GitHub commit link: 「a94262c3892228e2」 「№4774」
Difference from previous tested commit:  code diff
Commit date: 2020-06-11 16:06:16

Merge pull request #4774 from RosettaCommons/roccomoretti/sf_weighted_sum Don't spend time multiplying by zero with linmem_ig. Performance analysis of a fixbb run of 1qys with the -linmem_ig flag indicates we were spending ~20% of the time doing EMapVector::dot() calls to multiply the edge scores by the weights. Given that most of the weights are typically zero, we can improve runtime by only multiplying through by the nonzero terms. This requires us to pre-calculate and store the non-zero terms for the ScoreFunction, but that turns out to be relatively straightforward. This PR adds a ScoreFunction::weighted_sum() method, which does the dot product between an EMap and the weights of the ScoreFunction, but only iterates over the non-zero terms. I then use that for the "hot" function in the OnTheFlyInteractionGraph.

...