You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/07/15 04:15:33 UTC
[07/23] systemml git commit: simplifyDotProductSum shall not
interfere with tak+*
simplifyDotProductSum shall not interfere with tak+*
Added conditions to the dynamic algebraic rewrite simplifyDotProductSum
that do not apply the optimization for (A^2)*B or B*(A^2),
since TernaryAggregate handles these.
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/a5846bbb
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/a5846bbb
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/a5846bbb
Branch: refs/heads/master
Commit: a5846bbb383c655189963bffefed1c0db4ffcc89
Parents: edbac3b
Author: Dylan Hutchison <dh...@cs.washington.edu>
Authored: Fri Jun 9 23:58:16 2017 -0700
Committer: Dylan Hutchison <dh...@cs.washington.edu>
Committed: Sun Jun 18 17:43:30 2017 -0700
----------------------------------------------------------------------
.../hops/rewrite/RewriteAlgebraicSimplificationDynamic.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/a5846bbb/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
index ad80c05..166af2f 100644
--- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
+++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java
@@ -2050,7 +2050,14 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule
else if( HopRewriteUtils.isBinary(hi2, OpOp2.MULT, 1) //no other consumer than sum
&& hi2.getInput().get(0).getDim2()==1 && hi2.getInput().get(1).getDim2()==1
&& !HopRewriteUtils.isBinary(hi2.getInput().get(0), OpOp2.MULT)
- && !HopRewriteUtils.isBinary(hi2.getInput().get(1), OpOp2.MULT) )
+ && !HopRewriteUtils.isBinary(hi2.getInput().get(1), OpOp2.MULT)
+ && !(HopRewriteUtils.isBinary(hi2.getInput().get(0), OpOp2.POW) // do not rewrite (A^2)*B
+ && hi2.getInput().get(0).getInput().get(1) instanceof LiteralOp // let tak+* handle it
+ && ((LiteralOp)hi2.getInput().get(0).getInput().get(1)).getLongValue() == 2)
+ && !(HopRewriteUtils.isBinary(hi2.getInput().get(1), OpOp2.POW) // do not rewrite B*(A^2)
+ && hi2.getInput().get(1).getInput().get(1) instanceof LiteralOp // let tak+* handle it
+ && ((LiteralOp)hi2.getInput().get(1).getInput().get(1)).getLongValue() == 2)
+ )
{
baLeft = hi2.getInput().get(0);
baRight = hi2.getInput().get(1);