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 2015/11/25 18:51:27 UTC
[4/4] incubator-systemml git commit: Fix parfor rewrite 'inject rdd
repartitioning' (awareness of transpose)
Fix parfor rewrite 'inject rdd repartitioning' (awareness of transpose)
Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/52ec04af
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/52ec04af
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/52ec04af
Branch: refs/heads/master
Commit: 52ec04aff0a841265b50302ee24e0a5af713d9d2
Parents: d16968e
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Tue Nov 24 22:25:53 2015 -0800
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Tue Nov 24 22:25:53 2015 -0800
----------------------------------------------------------------------
.../parfor/opt/OptimizerRuleBased.java | 21 +++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/52ec04af/src/main/java/com/ibm/bi/dml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
----------------------------------------------------------------------
diff --git a/src/main/java/com/ibm/bi/dml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java b/src/main/java/com/ibm/bi/dml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
index b1d2622..ae581e6 100644
--- a/src/main/java/com/ibm/bi/dml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
+++ b/src/main/java/com/ibm/bi/dml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java
@@ -2242,15 +2242,22 @@ public class OptimizerRuleBased extends Optimizer
private void rCollectZipmmPartitioningCandidates( OptNode n, HashSet<String> cand )
{
//collect zipmm inputs
- if( n.getNodeType()==NodeType.HOP ) {
+ if( n.getNodeType()==NodeType.HOP )
+ {
Hop h = OptTreeConverter.getAbstractPlanMapping().getMappedHop(n.getID());
if( h instanceof AggBinaryOp && (((AggBinaryOp)h).getMMultMethod()==MMultMethod.ZIPMM
- ||((AggBinaryOp)h).getMMultMethod()==MMultMethod.CPMM) ){
-
- if( h.getInput().get(0) instanceof DataOp )
- cand.add( h.getInput().get(0).getName() );
- if( h.getInput().get(1) instanceof DataOp )
- cand.add( h.getInput().get(1).getName() );
+ ||((AggBinaryOp)h).getMMultMethod()==MMultMethod.CPMM) )
+ {
+ //found zipmm or cpmm (unknowns) which might turn into zipmm
+ //check for dataop or dataops under transpose on both sides
+ for( Hop in : h.getInput() ) {
+ if( in instanceof DataOp )
+ cand.add( in.getName() );
+ else if( in instanceof ReorgOp
+ && ((ReorgOp)in).getOp()==ReOrgOp.TRANSPOSE
+ && in.getInput().get(0) instanceof DataOp )
+ cand.add( in.getInput().get(0).getName() );
+ }
}
}