Repository: systemml
Updated Branches:
  refs/heads/master f2fbd99e7 -> 53175c00e


[SYSTEMML-2161] Fix codegen optimizer cost vector memoization

Due to a recent change from 1- to 0-based ID Sequences in SystemML,
there occurred special cases where collisions of memoized cost vectors
led to suboptimal codegen plans. For ALS-CG on the ultra-sparse amazon
dataset, this affected end-to-end performance by more than 2x because it
turned led to a sparse-unsafe fused operator.
 

Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/53175c00
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/53175c00
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/53175c00

Branch: refs/heads/master
Commit: 53175c00ec4738138985630b888d9b337d7a2ed4
Parents: f2fbd99
Author: Matthias Boehm <mboe...@gmail.com>
Authored: Fri Feb 23 14:05:02 2018 -0800
Committer: Matthias Boehm <mboe...@gmail.com>
Committed: Fri Feb 23 14:05:02 2018 -0800

----------------------------------------------------------------------
 .../sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/53175c00/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
 
b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
index 6f34497..e334d8d 100644
--- 
a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
+++ 
b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBasedV2.java
@@ -902,7 +902,7 @@ public class PlanSelectionFuseCostBasedV2 extends 
PlanSelection
                //computation without double counting materialized results or 
compute
                //costs of complex operation DAGs within a single fused operator
                if( !visited.add(new VisitMarkCost(currentHopId, 
-                       (costsCurrent==null || 
currentType==TemplateType.MAGG)?0:costsCurrent.ID)) )
+                       (costsCurrent==null || 
currentType==TemplateType.MAGG)?-1:costsCurrent.ID)) )
                        return 0; //already existing 
                
                //open template if necessary, including memoization

Reply via email to