http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java index f67604d..d01ffe2 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java +++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseCostBased.java @@ -114,7 +114,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection private static void createAndAddMultiAggPlans(CPlanMemoTable memo, HashSet<Long> partition, HashSet<Long> R) { //create index of plans that reference full aggregates to avoid circular dependencies - HashSet<Long> refHops = new HashSet<Long>(); + HashSet<Long> refHops = new HashSet<>(); for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() ) if( !e.getValue().isEmpty() ) { Hop hop = memo.getHopRefs().get(e.getKey()); @@ -124,7 +124,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection //find all full aggregations (the fact that they are in the same partition guarantees //that they also have common subexpressions, also full aggregations are by def root nodes) - ArrayList<Long> fullAggs = new ArrayList<Long>(); + ArrayList<Long> fullAggs = new ArrayList<>(); for( Long hopID : R ) { Hop root = memo.getHopRefs().get(hopID); if( !refHops.contains(hopID) && isMultiAggregateRoot(root) ) @@ -159,7 +159,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection private void createAndAddMultiAggPlans(CPlanMemoTable memo, ArrayList<Hop> roots) { //collect full aggregations as initial set of candidates - HashSet<Long> fullAggs = new HashSet<Long>(); + HashSet<Long> fullAggs = new HashSet<>(); Hop.resetVisitStatus(roots); for( Hop hop : roots ) rCollectFullAggregates(hop, fullAggs); @@ -179,7 +179,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection //collect information for all candidates //(subsumed aggregations, and inputs to fused operators) - List<AggregateInfo> aggInfos = new ArrayList<AggregateInfo>(); + List<AggregateInfo> aggInfos = new ArrayList<>(); for( Long hopID : fullAggs ) { Hop aggHop = memo.getHopRefs().get(hopID); AggregateInfo tmp = new AggregateInfo(aggHop); @@ -272,7 +272,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection //they to not have potentially transitive parent child references for( int i=0; ret && i<3; i++ ) if( me.isPlanRef(i) ) { - HashSet<Long> probe = new HashSet<Long>(); + HashSet<Long> probe = new HashSet<>(); for( int j=0; j<3; j++ ) if( i != j ) probe.add(me.input(j)); @@ -331,7 +331,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection if( me.type == TemplateType.ROW && memo.contains(hopID, TemplateType.CELL) && isRowTemplateWithoutAgg(memo, memo.getHopRefs().get(hopID), new HashSet<Long>())) { List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW); - memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist)); + memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist)); if( LOG.isTraceEnabled() ) { LOG.trace("Removed row memo table entries w/o aggregation: " + Arrays.toString(blacklist.toArray(new MemoTableEntry[0]))); @@ -368,7 +368,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection //via skip ahead in below enumeration algorithm //obtain hop compute costs per cell once - HashMap<Long, Double> computeCosts = new HashMap<Long, Double>(); + HashMap<Long, Double> computeCosts = new HashMap<>(); for( Long hopID : R ) rGetComputeCosts(memo.getHopRefs().get(hopID), partition, computeCosts); @@ -401,11 +401,11 @@ public class PlanSelectionFuseCostBased extends PlanSelection } //prune memo table wrt best plan and select plans - HashSet<Long> visited = new HashSet<Long>(); + HashSet<Long> visited = new HashSet<>(); for( Long hopID : R ) rPruneSuboptimalPlans(memo, memo.getHopRefs().get(hopID), visited, partition, M, bestPlan); - HashSet<Long> visited2 = new HashSet<Long>(); + HashSet<Long> visited2 = new HashSet<>(); for( Long hopID : R ) rPruneInvalidPlans(memo, memo.getHopRefs().get(hopID), visited2, partition, M, bestPlan); @@ -532,7 +532,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection //READ costs by the input sizes, and COMPUTE by operation specific FLOP //counts times number of cells of main input, disregarding sparsity for now. - HashSet<Pair<Long,Long>> visited = new HashSet<Pair<Long,Long>>(); + HashSet<Pair<Long,Long>> visited = new HashSet<>(); double costs = 0; for( Long hopID : R ) costs += rGetPlanCosts(memo, memo.getHopRefs().get(hopID), @@ -788,7 +788,7 @@ public class PlanSelectionFuseCostBased extends PlanSelection public final long ID; public final double outSize; public double computeCosts = 0; - public final HashMap<Long, Double> inSizes = new HashMap<Long, Double>(); + public final HashMap<Long, Double> inSizes = new HashMap<>(); public CostVector(double outputSize) { ID = COST_ID.getNextID(); @@ -816,10 +816,10 @@ public class PlanSelectionFuseCostBased extends PlanSelection private static class AggregateInfo { public final HashMap<Long,Hop> _aggregates; - public final HashSet<Long> _inputAggs = new HashSet<Long>(); - public final HashSet<Long> _fusedInputs = new HashSet<Long>(); + public final HashSet<Long> _inputAggs = new HashSet<>(); + public final HashSet<Long> _fusedInputs = new HashSet<>(); public AggregateInfo(Hop aggregate) { - _aggregates = new HashMap<Long, Hop>(); + _aggregates = new HashMap<>(); _aggregates.put(aggregate.getHopID(), aggregate); } public void addInputAggregate(long hopID) {
http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/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 31e8427..4b214d0 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 @@ -141,7 +141,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection } else { //obtain hop compute costs per cell once - HashMap<Long, Double> computeCosts = new HashMap<Long, Double>(); + HashMap<Long, Double> computeCosts = new HashMap<>(); for( Long hopID : part.getPartition() ) getComputeCosts(memo.getHopRefs().get(hopID), computeCosts); @@ -160,11 +160,11 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection part.getMatPointsExt(), 0, Double.MAX_VALUE); //prune memo table wrt best plan and select plans - HashSet<Long> visited = new HashSet<Long>(); + HashSet<Long> visited = new HashSet<>(); for( Long hopID : part.getRoots() ) rPruneSuboptimalPlans(memo, memo.getHopRefs().get(hopID), visited, part, part.getMatPointsExt(), bestPlan); - HashSet<Long> visited2 = new HashSet<Long>(); + HashSet<Long> visited2 = new HashSet<>(); for( Long hopID : part.getRoots() ) rPruneInvalidPlans(memo, memo.getHopRefs().get(hopID), visited2, part, bestPlan); @@ -358,7 +358,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection private static void createAndAddMultiAggPlans(CPlanMemoTable memo, HashSet<Long> partition, HashSet<Long> R) { //create index of plans that reference full aggregates to avoid circular dependencies - HashSet<Long> refHops = new HashSet<Long>(); + HashSet<Long> refHops = new HashSet<>(); for( Entry<Long, List<MemoTableEntry>> e : memo.getPlans().entrySet() ) if( !e.getValue().isEmpty() ) { Hop hop = memo.getHopRefs().get(e.getKey()); @@ -368,7 +368,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection //find all full aggregations (the fact that they are in the same partition guarantees //that they also have common subexpressions, also full aggregations are by def root nodes) - ArrayList<Long> fullAggs = new ArrayList<Long>(); + ArrayList<Long> fullAggs = new ArrayList<>(); for( Long hopID : R ) { Hop root = memo.getHopRefs().get(hopID); if( !refHops.contains(hopID) && isMultiAggregateRoot(root) ) @@ -403,7 +403,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection private void createAndAddMultiAggPlans(CPlanMemoTable memo, ArrayList<Hop> roots) { //collect full aggregations as initial set of candidates - HashSet<Long> fullAggs = new HashSet<Long>(); + HashSet<Long> fullAggs = new HashSet<>(); Hop.resetVisitStatus(roots); for( Hop hop : roots ) rCollectFullAggregates(hop, fullAggs); @@ -423,7 +423,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection //collect information for all candidates //(subsumed aggregations, and inputs to fused operators) - List<AggregateInfo> aggInfos = new ArrayList<AggregateInfo>(); + List<AggregateInfo> aggInfos = new ArrayList<>(); for( Long hopID : fullAggs ) { Hop aggHop = memo.getHopRefs().get(hopID); AggregateInfo tmp = new AggregateInfo(aggHop); @@ -516,7 +516,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection //they to not have potentially transitive parent child references for( int i=0; ret && i<3; i++ ) if( me.isPlanRef(i) ) { - HashSet<Long> probe = new HashSet<Long>(); + HashSet<Long> probe = new HashSet<>(); for( int j=0; j<3; j++ ) if( i != j ) probe.add(me.input(j)); @@ -613,7 +613,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection && HopRewriteUtils.isTransposeOperation(in)); if( isSpark && !validNcol ) { List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW); - memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist)); + memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist)); if( !memo.contains(hopID) ) memo.removeAllRefTo(hopID); if( LOG.isTraceEnabled() ) { @@ -630,7 +630,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection if( me != null && me.type == TemplateType.ROW && memo.contains(hopID, TemplateType.CELL) && isRowTemplateWithoutAggOrVects(memo, memo.getHopRefs().get(hopID), new HashSet<Long>())) { List<MemoTableEntry> blacklist = memo.get(hopID, TemplateType.ROW); - memo.remove(memo.getHopRefs().get(hopID), new HashSet<MemoTableEntry>(blacklist)); + memo.remove(memo.getHopRefs().get(hopID), new HashSet<>(blacklist)); if( LOG.isTraceEnabled() ) { LOG.trace("Removed row memo table entries w/o aggregation: " + Arrays.toString(blacklist.toArray(new MemoTableEntry[0]))); @@ -1015,7 +1015,7 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection public final long ID; public final double outSize; public double computeCosts = 0; - public final HashMap<Long, Double> inSizes = new HashMap<Long, Double>(); + public final HashMap<Long, Double> inSizes = new HashMap<>(); public CostVector(double outputSize) { ID = COST_ID.getNextID(); @@ -1066,10 +1066,10 @@ public class PlanSelectionFuseCostBasedV2 extends PlanSelection private static class AggregateInfo { public final HashMap<Long,Hop> _aggregates; - public final HashSet<Long> _inputAggs = new HashSet<Long>(); - public final HashSet<Long> _fusedInputs = new HashSet<Long>(); + public final HashSet<Long> _inputAggs = new HashSet<>(); + public final HashSet<Long> _fusedInputs = new HashSet<>(); public AggregateInfo(Hop aggregate) { - _aggregates = new HashMap<Long, Hop>(); + _aggregates = new HashMap<>(); _aggregates.put(aggregate.getHopID(), aggregate); } public void addInputAggregate(long hopID) { http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java index 759a903..2fc90d7 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java +++ b/src/main/java/org/apache/sysml/hops/codegen/opt/PlanSelectionFuseNoRedundancy.java @@ -60,7 +60,7 @@ public class PlanSelectionFuseNoRedundancy extends PlanSelection //step 0: remove plans that refer to a common partial plan if( memo.contains(current.getHopID()) ) { - HashSet<MemoTableEntry> rmSet = new HashSet<MemoTableEntry>(); + HashSet<MemoTableEntry> rmSet = new HashSet<>(); List<MemoTableEntry> hopP = memo.get(current.getHopID()); for( MemoTableEntry e1 : hopP ) for( int i=0; i<3; i++ ) @@ -71,7 +71,7 @@ public class PlanSelectionFuseNoRedundancy extends PlanSelection //step 1: prune subsumed plans of same type if( memo.contains(current.getHopID()) ) { - HashSet<MemoTableEntry> rmSet = new HashSet<MemoTableEntry>(); + HashSet<MemoTableEntry> rmSet = new HashSet<>(); List<MemoTableEntry> hopP = memo.get(current.getHopID()); for( MemoTableEntry e1 : hopP ) for( MemoTableEntry e2 : hopP ) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java b/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java index fb7840b..90079a3 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java +++ b/src/main/java/org/apache/sysml/hops/codegen/opt/ReachabilityGraph.java @@ -333,6 +333,15 @@ public class ReachabilityGraph } @Override + public int hashCode() { + return Arrays.hashCode(new int[]{ + _inputs.hashCode(), + Long.hashCode(_ID), + _p.hashCode() + }); + } + + @Override public boolean equals(Object o) { if( !(o instanceof NodeLink) ) return false; http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java index 9916c0f..3d12cfe 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanCSERewriter.java @@ -48,7 +48,7 @@ public class CPlanCSERewriter rSetStrictDataNodeComparision(out, true); //step 2: perform common subexpression elimination - HashMap<CNode,CNode> cseSet = new HashMap<CNode,CNode>(); + HashMap<CNode,CNode> cseSet = new HashMap<>(); tpl.resetVisitStatusOutputs(); for( CNode out : outputs ) rEliminateCommonSubexpression(out, cseSet); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java index 6de3ec6..30672f3 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/CPlanMemoTable.java @@ -51,9 +51,9 @@ public class CPlanMemoTable protected HashSet<Long> _plansBlacklist; public CPlanMemoTable() { - _plans = new HashMap<Long, List<MemoTableEntry>>(); - _hopRefs = new HashMap<Long, Hop>(); - _plansBlacklist = new HashSet<Long>(); + _plans = new HashMap<>(); + _hopRefs = new HashMap<>(); + _plansBlacklist = new HashSet<>(); } public HashMap<Long, List<MemoTableEntry>> getPlans() { @@ -182,7 +182,7 @@ public class CPlanMemoTable //if single consumer of input; however this only applies to fusion //heuristic that only consider materialization points) if( pruneDominated ) { - HashSet<MemoTableEntry> rmList = new HashSet<MemoTableEntry>(); + HashSet<MemoTableEntry> rmList = new HashSet<>(); List<MemoTableEntry> list = _plans.get(hopID); Hop hop = _hopRefs.get(hopID); for( MemoTableEntry e1 : list ) @@ -210,7 +210,7 @@ public class CPlanMemoTable LOG.trace("#1: Memo before plan selection ("+size()+" plans)\n"+this); //build index of referenced entries - HashSet<Long> ix = new HashSet<Long>(); + HashSet<Long> ix = new HashSet<>(); for( Entry<Long, List<MemoTableEntry>> e : _plans.entrySet() ) for( MemoTableEntry me : e.getValue() ) { ix.add(me.input1); @@ -433,7 +433,7 @@ public class CPlanMemoTable public static class MemoTableEntrySet { - public ArrayList<MemoTableEntry> plans = new ArrayList<MemoTableEntry>(); + public ArrayList<MemoTableEntry> plans = new ArrayList<>(); public MemoTableEntrySet(Hop hop, Hop c, TemplateBase tpl) { int pos = (c != null) ? hop.getInput().indexOf(c) : -1; @@ -445,7 +445,7 @@ public class CPlanMemoTable public void crossProduct(int pos, Long... refs) { if( refs.length==1 && refs[0] == -1 ) return; //unmodified plan set - ArrayList<MemoTableEntry> tmp = new ArrayList<MemoTableEntry>(); + ArrayList<MemoTableEntry> tmp = new ArrayList<>(); for( MemoTableEntry me : plans ) for( Long ref : refs ) tmp.add(new MemoTableEntry(me.type, (pos==0)?ref:me.input1, http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java index b075c58..2b29ce2 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java @@ -115,8 +115,8 @@ public class TemplateCell extends TemplateBase public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) { //recursively process required cplan output - HashSet<Hop> inHops = new HashSet<Hop>(); - HashMap<Long, CNode> tmp = new HashMap<Long, CNode>(); + HashSet<Hop> inHops = new HashSet<>(); + HashMap<Long, CNode> tmp = new HashMap<>(); hop.resetVisitStatus(); rConstructCplan(hop, memo, tmp, inHops, compileLiterals); hop.resetVisitStatus(); @@ -129,7 +129,7 @@ public class TemplateCell extends TemplateBase .sorted(new HopInputComparator()).toArray(Hop[]::new); //construct template node - ArrayList<CNode> inputs = new ArrayList<CNode>(); + ArrayList<CNode> inputs = new ArrayList<>(); for( Hop in : sinHops ) inputs.add(tmp.get(in.getHopID())); CNode output = tmp.get(hop.getHopID()); @@ -142,7 +142,7 @@ public class TemplateCell extends TemplateBase tpl.setBeginLine(hop.getBeginLine()); // return cplan instance - return new Pair<Hop[],CNodeTpl>(sinHops, tpl); + return new Pair<>(sinHops, tpl); } protected void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, boolean compileLiterals) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java index e9f4cd2..9b114b0 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateMultiAgg.java @@ -75,15 +75,15 @@ public class TemplateMultiAgg extends TemplateCell { //get all root nodes for multi aggregation MemoTableEntry multiAgg = memo.getBest(hop.getHopID(), TemplateType.MAGG); - ArrayList<Hop> roots = new ArrayList<Hop>(); + ArrayList<Hop> roots = new ArrayList<>(); for( int i=0; i<3; i++ ) if( multiAgg.isPlanRef(i) ) roots.add(memo._hopRefs.get(multiAgg.input(i))); Hop.resetVisitStatus(roots); //recursively process required cplan outputs - HashSet<Hop> inHops = new HashSet<Hop>(); - HashMap<Long, CNode> tmp = new HashMap<Long, CNode>(); + HashSet<Hop> inHops = new HashSet<>(); + HashMap<Long, CNode> tmp = new HashMap<>(); for( Hop root : roots ) //use celltpl cplan construction super.rConstructCplan(root, memo, tmp, inHops, compileLiterals); Hop.resetVisitStatus(roots); @@ -97,11 +97,11 @@ public class TemplateMultiAgg extends TemplateCell .sorted(new HopInputComparator(shared)).toArray(Hop[]::new); //construct template node - ArrayList<CNode> inputs = new ArrayList<CNode>(); + ArrayList<CNode> inputs = new ArrayList<>(); for( Hop in : sinHops ) inputs.add(tmp.get(in.getHopID())); - ArrayList<CNode> outputs = new ArrayList<CNode>(); - ArrayList<AggOp> aggOps = new ArrayList<AggOp>(); + ArrayList<CNode> outputs = new ArrayList<>(); + ArrayList<AggOp> aggOps = new ArrayList<>(); for( Hop root : roots ) { CNode node = tmp.get(root.getHopID()); if( node instanceof CNodeData //add indexing ops for sideways data inputs @@ -119,7 +119,7 @@ public class TemplateMultiAgg extends TemplateCell tpl.setBeginLine(hop.getBeginLine()); // return cplan instance - return new Pair<Hop[],CNodeTpl>(sinHops, tpl); + return new Pair<>(sinHops, tpl); } private Hop getSparseSafeSharedInput(ArrayList<Hop> roots, HashSet<Hop> inHops) { http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java index 3756447..cac9f9b 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateOuterProduct.java @@ -106,9 +106,9 @@ public class TemplateOuterProduct extends TemplateBase { public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) { //recursively process required cplan output - HashSet<Hop> inHops = new HashSet<Hop>(); - HashMap<String,Hop> inHops2 = new HashMap<String, Hop>(); - HashMap<Long, CNode> tmp = new HashMap<Long, CNode>(); + HashSet<Hop> inHops = new HashSet<>(); + HashMap<String,Hop> inHops2 = new HashMap<>(); + HashMap<Long, CNode> tmp = new HashMap<>(); hop.resetVisitStatus(); rConstructCplan(hop, memo, tmp, inHops, inHops2, compileLiterals); hop.resetVisitStatus(); @@ -117,13 +117,13 @@ public class TemplateOuterProduct extends TemplateBase { Hop X = inHops2.get("_X"); Hop U = inHops2.get("_U"); Hop V = inHops2.get("_V"); - LinkedList<Hop> sinHops = new LinkedList<Hop>(inHops); + LinkedList<Hop> sinHops = new LinkedList<>(inHops); sinHops.remove(V); sinHops.addFirst(V); sinHops.remove(U); sinHops.addFirst(U); sinHops.remove(X); sinHops.addFirst(X); //construct template node - ArrayList<CNode> inputs = new ArrayList<CNode>(); + ArrayList<CNode> inputs = new ArrayList<>(); for( Hop in : sinHops ) if( in != null ) inputs.add(tmp.get(in.getHopID())); @@ -135,8 +135,7 @@ public class TemplateOuterProduct extends TemplateBase { && tpl.getOutProdType()==OutProdType.LEFT_OUTER_PRODUCT); tpl.setBeginLine(hop.getBeginLine()); - - return new Pair<Hop[],CNodeTpl>(sinHops.toArray(new Hop[0]), tpl); + return new Pair<>(sinHops.toArray(new Hop[0]), tpl); } private void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, HashMap<String, Hop> inHops2, boolean compileLiterals) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java index 1aaa84f..5f14d6b 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java +++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateRow.java @@ -175,9 +175,9 @@ public class TemplateRow extends TemplateBase @Override public Pair<Hop[], CNodeTpl> constructCplan(Hop hop, CPlanMemoTable memo, boolean compileLiterals) { //recursively process required cplan output - HashSet<Hop> inHops = new HashSet<Hop>(); - HashMap<String, Hop> inHops2 = new HashMap<String,Hop>(); - HashMap<Long, CNode> tmp = new HashMap<Long, CNode>(); + HashSet<Hop> inHops = new HashSet<>(); + HashMap<String, Hop> inHops2 = new HashMap<>(); + HashMap<Long, CNode> tmp = new HashMap<>(); hop.resetVisitStatus(); rConstructCplan(hop, memo, tmp, inHops, inHops2, compileLiterals); hop.resetVisitStatus(); @@ -189,7 +189,7 @@ public class TemplateRow extends TemplateBase inHops2.putIfAbsent("X", sinHops[0]); //robustness special cases //construct template node - ArrayList<CNode> inputs = new ArrayList<CNode>(); + ArrayList<CNode> inputs = new ArrayList<>(); for( Hop in : sinHops ) inputs.add(tmp.get(in.getHopID())); CNode output = tmp.get(hop.getHopID()); @@ -205,7 +205,7 @@ public class TemplateRow extends TemplateBase tpl.setBeginLine(hop.getBeginLine()); // return cplan instance - return new Pair<Hop[],CNodeTpl>(sinHops, tpl); + return new Pair<>(sinHops, tpl); } private void rConstructCplan(Hop hop, CPlanMemoTable memo, HashMap<Long, CNode> tmp, HashSet<Hop> inHops, HashMap<String, Hop> inHops2, boolean compileLiterals) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java index 52a966e..a87221f 100644 --- a/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java +++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimationWrapper.java @@ -38,7 +38,7 @@ public class CostEstimationWrapper public enum CostType { NUM_MRJOBS, //based on number of MR jobs, [number MR jobs] STATIC // based on FLOPS, read/write, etc, [time in sec] - }; + } private static final boolean LDEBUG = false; //internal local debug level private static final Log LOG = LogFactory.getLog(CostEstimationWrapper.class.getName()); @@ -72,7 +72,7 @@ public class CostEstimationWrapper { Timing time = new Timing(true); - HashMap<String,VarStats> stats = new HashMap<String, VarStats>(); + HashMap<String,VarStats> stats = new HashMap<>(); LocalVariableMap vars = (ec!=null)? ec.getVariables() : new LocalVariableMap(); double costs = _costEstim.getTimeEstimate(rtprog, vars, stats); @@ -85,7 +85,7 @@ public class CostEstimationWrapper { Timing time = new Timing(true); - HashMap<String,VarStats> stats = new HashMap<String, VarStats>(); + HashMap<String,VarStats> stats = new HashMap<>(); LocalVariableMap vars = (ec!=null)? ec.getVariables() : new LocalVariableMap(); double costs = _costEstim.getTimeEstimate(pb, vars, stats, recursive); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java index 6eff99b..9f46eb0 100644 --- a/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java +++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimator.java @@ -351,7 +351,7 @@ public abstract class CostEstimator } //compute intermediate result indices - HashMap<Byte,MatrixCharacteristics> dims = new HashMap<Byte, MatrixCharacteristics>(); + HashMap<Byte,MatrixCharacteristics> dims = new HashMap<>(); //populate input indices for( Entry<String,VarStats> e : stats.entrySet() ) { http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java b/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java index 7cdde47..ef89600 100644 --- a/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java +++ b/src/main/java/org/apache/sysml/hops/cost/CostEstimatorStaticRuntime.java @@ -480,7 +480,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator //note: this is a simplified version of MRJobConfiguration.setUpOutputIndexesForMapper //map indices - HashSet<Byte> ixMap = new HashSet<Byte>(); + HashSet<Byte> ixMap = new HashSet<>(); for( byte ix : inIx ) ixMap.add(ix); @@ -501,7 +501,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator } //reduce indices - HashSet<Byte> ixRed = new HashSet<Byte>(); + HashSet<Byte> ixRed = new HashSet<>(); for( byte ix : retIx ) ixRed.add(ix); @@ -601,7 +601,7 @@ public class CostEstimatorStaticRuntime extends CostEstimator private int getDistcacheIndex(String inst) throws DMLRuntimeException { - ArrayList<Byte> indexes = new ArrayList<Byte>(); + ArrayList<Byte> indexes = new ArrayList<>(); if( InstructionUtils.isDistributedCacheUsed(inst) ) { MRInstruction mrinst = MRInstructionParser.parseSingleInstruction(inst); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java index 7e043be..73762ce 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java @@ -122,7 +122,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer //Step 2: dynamic programming plan generation //(finally, pick optimal root plans over all interesting property sets) - ArrayList<Plan> rootPlans = new ArrayList<Plan>(); + ArrayList<Plan> rootPlans = new ArrayList<>(); for( GDFNode node : roots ) { PlanSet ps = enumOpt(node, _memo, initCosts); Plan optPlan = ps.getPlanWithMinCosts(); @@ -131,7 +131,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer long enumPlanMismatch = getPlanMismatches(); //check for final containment of independent roots and pick optimal - HashMap<Long, Plan> memo = new HashMap<Long,Plan>(); + HashMap<Long, Plan> memo = new HashMap<>(); resetPlanMismatches(); for( Plan p : rootPlans ) rSetRuntimePlanConfig(p, memo); @@ -208,7 +208,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer private static PlanSet enumNodePlans( GDFNode node, MemoStructure memo, double maxCosts ) throws DMLRuntimeException { - ArrayList<Plan> plans = new ArrayList<Plan>(); + ArrayList<Plan> plans = new ArrayList<>(); ExecType CLUSTER = OptimizerUtils.isSparkExecutionMode() ? ExecType.SPARK : ExecType.MR; //ENUMERATE HOP PLANS @@ -331,7 +331,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer private static void pruneInvalidPlans( PlanSet plans ) { - ArrayList<Plan> valid = new ArrayList<Plan>(); + ArrayList<Plan> valid = new ArrayList<>(); //check each plan in planset for validity for( Plan plan : plans.getPlans() ) @@ -381,7 +381,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer } //build and probe for optimal plans (hash-groupby on IPC, min costs) - HashMap<InterestingProperties, Plan> probeMap = new HashMap<InterestingProperties, Plan>(); + HashMap<InterestingProperties, Plan> probeMap = new HashMap<>(); for( Plan p : plans.getPlans() ) { //max cost pruning filter (branch-and-bound) @@ -407,7 +407,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer } //copy over plans per IPC into one plan set - ArrayList<Plan> optimal = new ArrayList<Plan>(probeMap.values()); + ArrayList<Plan> optimal = new ArrayList<>(probeMap.values()); int sizeBefore = plans.size(); int sizeAfter = optimal.size(); @@ -451,7 +451,7 @@ public class GDFEnumOptimizer extends GlobalOptimizer ArrayList<Hop> oldRoots = pb.getStatementBlock().get_hops(); Hop tmpHop = null; if( !(currentHop instanceof DataOp && ((DataOp)currentHop).isWrite()) ){ - ArrayList<Hop> newRoots = new ArrayList<Hop>(); + ArrayList<Hop> newRoots = new ArrayList<>(); tmpHop = new DataOp("_tmp", currentHop.getDataType(), currentHop.getValueType(), currentHop, DataOpTypes.TRANSIENTWRITE, "tmp"); tmpHop.setVisited(); //ensure recursive visitstatus reset on recompile newRoots.add(tmpHop); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java b/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java index 5ee5b16..056db69 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/MemoStructure.java @@ -47,8 +47,8 @@ public class MemoStructure public MemoStructure() { - _entries = new HashMap<Long, PlanSet>(); - _nodeIDs = new HashMap<Long, Long>(); + _entries = new HashMap<>(); + _nodeIDs = new HashMap<>(); } /////////////////////////////////////////////////// http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/Plan.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/Plan.java b/src/main/java/org/apache/sysml/hops/globalopt/Plan.java index f8f06dc..d62c0fc 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/Plan.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/Plan.java @@ -53,7 +53,7 @@ public class Plan if( childs != null && !childs.isEmpty() ) _childs = childs; else - _childs = new ArrayList<Plan>(); + _childs = new ArrayList<>(); } public Plan( Plan p ) @@ -65,9 +65,9 @@ public class Plan _costs = p._costs; if( p._childs != null && !p._childs.isEmpty() ) - _childs = new ArrayList<Plan>(p._childs); + _childs = new ArrayList<>(p._childs); else - _childs = new ArrayList<Plan>(); + _childs = new ArrayList<>(); } public GDFNode getNode() http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java b/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java index a6487e6..41ee5f9 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/PlanSet.java @@ -27,12 +27,10 @@ import org.apache.sysml.hops.globalopt.gdfgraph.GDFNode.NodeType; public class PlanSet { - private ArrayList<Plan> _plans = null; - public PlanSet() - { - _plans = new ArrayList<Plan>(); + public PlanSet() { + _plans = new ArrayList<>(); } public PlanSet(ArrayList<Plan> plans) @@ -78,7 +76,7 @@ public class PlanSet return pc; } - ArrayList<Plan> Pnew = new ArrayList<Plan>(); + ArrayList<Plan> Pnew = new ArrayList<>(); // create cross product of plansets between partial and child plans for( Plan p : _plans ) @@ -97,7 +95,7 @@ public class PlanSet String varname = (node.getNodeType()==NodeType.HOP_NODE) ? node.getHop().getName() : ((GDFCrossBlockNode)node).getName(); - ArrayList<Plan> Pnew = new ArrayList<Plan>(); + ArrayList<Plan> Pnew = new ArrayList<>(); for( Plan p : _plans ) if( p.getNode().getHop()!=null &&p.getNode().getHop().getName().equals(varname) ) @@ -110,7 +108,7 @@ public class PlanSet public PlanSet union( PlanSet ps ) { - ArrayList<Plan> Pnew = new ArrayList<Plan>(_plans); + ArrayList<Plan> Pnew = new ArrayList<>(_plans); for( Plan p : ps._plans ) Pnew.add( p ); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java index b4767f9..52d988d 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFCrossBlockNode.java @@ -52,7 +52,7 @@ public class GDFCrossBlockNode extends GDFNode { super(hop, pb, null); _type = NodeType.CROSS_BLOCK_NODE; - _inputs = new ArrayList<GDFNode>(); + _inputs = new ArrayList<>(); _inputs.add( input ); _cbtype = CrossBlockNodeType.PLAIN; @@ -72,7 +72,7 @@ public class GDFCrossBlockNode extends GDFNode { super(hop, pb, null); _type = NodeType.CROSS_BLOCK_NODE; - _inputs = new ArrayList<GDFNode>(); + _inputs = new ArrayList<>(); _inputs.add( input1 ); _inputs.add( input2 ); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java index fb4a9af..010ca1d 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GDFLoopNode.java @@ -33,7 +33,7 @@ public class GDFLoopNode extends GDFNode public GDFLoopNode( ProgramBlock pb, GDFNode predicate, HashMap<String, GDFNode> inputs, HashMap<String,GDFNode> outputs ) { - super(null, pb, new ArrayList<GDFNode>(inputs.values())); + super(null, pb, new ArrayList<>(inputs.values())); _type = NodeType.LOOP_NODE; _predicate = predicate; _linputs = inputs; http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java index 8d52cc2..e768854 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/gdfgraph/GraphBuilder.java @@ -67,12 +67,12 @@ public class GraphBuilder { Timing time = new Timing(true); - HashMap<String, GDFNode> roots = new HashMap<String, GDFNode>(); + HashMap<String, GDFNode> roots = new HashMap<>(); for( ProgramBlock pb : prog.getProgramBlocks() ) constructGDFGraph( pb, roots ); //create GDF graph root nodes - ArrayList<GDFNode> ret = new ArrayList<GDFNode>(); + ArrayList<GDFNode> ret = new ArrayList<>(); for( GDFNode root : roots.values() ) if( !(root instanceof GDFCrossBlockNode) ) ret.add(root); @@ -80,7 +80,7 @@ public class GraphBuilder //create GDF graph GDFGraph graph = new GDFGraph(prog, ret); - summary.setTimeGDFGraph(time.stop()); + summary.setTimeGDFGraph(time.stop()); return graph; } @@ -151,7 +151,7 @@ public class GraphBuilder if( hops != null ) { //create new local memo structure for local dag - HashMap<Long, GDFNode> lmemo = new HashMap<Long, GDFNode>(); + HashMap<Long, GDFNode> lmemo = new HashMap<>(); for( Hop hop : hops ) { //recursively construct GDF graph for hop dag root @@ -177,7 +177,7 @@ public class GraphBuilder return lmemo.get(hop.getHopID()); //process childs recursively first - ArrayList<GDFNode> inputs = new ArrayList<GDFNode>(); + ArrayList<GDFNode> inputs = new ArrayList<>(); for( Hop c : hop.getInput() ) inputs.add( constructGDFGraph(c, pb, lmemo, roots) ); @@ -206,11 +206,11 @@ public class GraphBuilder private static GDFNode constructForPredicateNode(ForProgramBlock fpb, ForStatementBlock fsb, HashMap<String, GDFNode> roots) { - HashMap<Long, GDFNode> memo = new HashMap<Long, GDFNode>(); + HashMap<Long, GDFNode> memo = new HashMap<>(); GDFNode from = (fsb.getFromHops()!=null)? constructGDFGraph(fsb.getFromHops(), fpb, memo, roots) : null; GDFNode to = (fsb.getToHops()!=null)? constructGDFGraph(fsb.getToHops(), fpb, memo, roots) : null; GDFNode incr = (fsb.getIncrementHops()!=null)? constructGDFGraph(fsb.getIncrementHops(), fpb, memo, roots) : null; - ArrayList<GDFNode> inputs = new ArrayList<GDFNode>(); + ArrayList<GDFNode> inputs = new ArrayList<>(); inputs.add(from); inputs.add(to); inputs.add(incr); @@ -223,7 +223,7 @@ public class GraphBuilder private static HashMap<String, GDFNode> constructLoopInputNodes( ProgramBlock fpb, StatementBlock fsb, HashMap<String, GDFNode> roots ) throws DMLRuntimeException { - HashMap<String, GDFNode> ret = new HashMap<String, GDFNode>(); + HashMap<String, GDFNode> ret = new HashMap<>(); Set<String> invars = fsb.variablesRead().getVariableNames(); for( String var : invars ) { if( fsb.liveIn().containsVariable(var) ) { @@ -240,7 +240,7 @@ public class GraphBuilder private static HashMap<String, GDFNode> constructLoopOutputNodes( StatementBlock fsb, HashMap<String, GDFNode> roots ) throws HopsException { - HashMap<String, GDFNode> ret = new HashMap<String, GDFNode>(); + HashMap<String, GDFNode> ret = new HashMap<>(); Set<String> outvars = fsb.variablesUpdated().getVariableNames(); for( String var : outvars ) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java index c6c3016..d719da7 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java +++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java @@ -66,9 +66,9 @@ public class FunctionCallGraph * @param prog dml program of given script */ public FunctionCallGraph(DMLProgram prog) { - _fGraph = new HashMap<String, HashSet<String>>(); - _fCalls = new HashMap<String, ArrayList<FunctionOp>>(); - _fRecursive = new HashSet<String>(); + _fGraph = new HashMap<>(); + _fCalls = new HashMap<>(); + _fRecursive = new HashSet<>(); constructFunctionCallGraph(prog); } @@ -80,9 +80,9 @@ public class FunctionCallGraph * @param sb statement block (potentially hierarchical) */ public FunctionCallGraph(StatementBlock sb) { - _fGraph = new HashMap<String, HashSet<String>>(); - _fCalls = new HashMap<String, ArrayList<FunctionOp>>(); - _fRecursive = new HashSet<String>(); + _fGraph = new HashMap<>(); + _fCalls = new HashMap<>(); + _fRecursive = new HashSet<>(); constructFunctionCallGraph(sb); } @@ -96,7 +96,7 @@ public class FunctionCallGraph */ public Set<String> getCalledFunctions(String fnamespace, String fname) { return getCalledFunctions( - DMLProgram.constructFunctionKey(fnamespace, fname)); + DMLProgram.constructFunctionKey(fnamespace, fname)); } /** @@ -205,8 +205,8 @@ public class FunctionCallGraph return; //early abort if prog without functions try { - Stack<String> fstack = new Stack<String>(); - HashSet<String> lfset = new HashSet<String>(); + Stack<String> fstack = new Stack<>(); + HashSet<String> lfset = new HashSet<>(); _fGraph.put(MAIN_FUNCTION_KEY, new HashSet<String>()); for( StatementBlock sblk : prog.getStatementBlocks() ) rConstructFunctionCallGraph(MAIN_FUNCTION_KEY, sblk, fstack, lfset); @@ -221,8 +221,8 @@ public class FunctionCallGraph return; //early abort if prog without functions try { - Stack<String> fstack = new Stack<String>(); - HashSet<String> lfset = new HashSet<String>(); + Stack<String> fstack = new Stack<>(); + HashSet<String> lfset = new HashSet<>(); _fGraph.put(MAIN_FUNCTION_KEY, new HashSet<String>()); rConstructFunctionCallGraph(MAIN_FUNCTION_KEY, sb, fstack, lfset); } http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java index cea16e5..337f7da 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java +++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallSizeInfo.java @@ -88,10 +88,10 @@ public class FunctionCallSizeInfo throws HopsException { _fgraph = fgraph; - _fcand = new HashSet<String>(); - _fcandUnary = new HashSet<String>(); - _fcandSafeNNZ = new HashMap<String, Set<Integer>>(); - _fSafeLiterals = new HashMap<String, Set<Integer>>(); + _fcand = new HashSet<>(); + _fcandUnary = new HashSet<>(); + _fcandSafeNNZ = new HashMap<>(); + _fSafeLiterals = new HashMap<>(); constructFunctionCallSizeInfo(); } @@ -254,7 +254,7 @@ public class FunctionCallSizeInfo //(considered for valid functions only) for( String fkey : _fcand ) { FunctionOp first = _fgraph.getFunctionCalls(fkey).get(0); - HashSet<Integer> tmp = new HashSet<Integer>(); + HashSet<Integer> tmp = new HashSet<>(); for( int j=0; j<first.getInput().size(); j++ ) { //if nnz known it is safe to propagate those nnz because for multiple calls //we checked of equivalence and hence all calls have the same nnz @@ -271,7 +271,7 @@ public class FunctionCallSizeInfo List<FunctionOp> flist = _fgraph.getFunctionCalls(fkey); FunctionOp first = flist.get(0); //initialize w/ all literals of first call - HashSet<Integer> tmp = new HashSet<Integer>(); + HashSet<Integer> tmp = new HashSet<>(); for( int j=0; j<first.getInput().size(); j++ ) if( first.getInput().get(j) instanceof LiteralOp ) tmp.add(j); @@ -292,6 +292,17 @@ public class FunctionCallSizeInfo } @Override + public int hashCode() { + return Arrays.hashCode(new int[] { + _fgraph.hashCode(), + _fcand.hashCode(), + _fcandUnary.hashCode(), + _fcandSafeNNZ.hashCode(), + _fSafeLiterals.hashCode() + }); + } + + @Override public boolean equals(Object o) { if( o instanceof FunctionCallSizeInfo ) return false; http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java index 1a433a3..6b110c8 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java @@ -61,8 +61,8 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass throws HopsException { //approach: scan over top-level program (guaranteed to be unconditional), - //collect ones=matrix(1,...); remove b(*)ones if not outer operation - HashMap<String, Hop> mOnes = new HashMap<String, Hop>(); + //collect ones=matrix(1,...); remove b(*)ones if not outer operation + HashMap<String, Hop> mOnes = new HashMap<>(); for( StatementBlock sb : prog.getStatementBlocks() ) { http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java index 664ec2a..1c2c6b9 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java @@ -76,12 +76,12 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass //collect checkpoints; determine if used before update; remove first checkpoint //on second checkpoint if update in between and not used before update - HashMap<String, Hop> chkpointCand = new HashMap<String, Hop>(); + HashMap<String, Hop> chkpointCand = new HashMap<>(); for( StatementBlock sb : dmlp.getStatementBlocks() ) { //prune candidates (used before updated) - Set<String> cands = new HashSet<String>(chkpointCand.keySet()); + Set<String> cands = new HashSet<>(chkpointCand.keySet()); for( String cand : cands ) if( sb.variablesRead().containsVariable(cand) && !sb.variablesUpdated().containsVariable(cand) ) @@ -101,7 +101,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass } //prune candidates (updated in conditional control flow) - Set<String> cands2 = new HashSet<String>(chkpointCand.keySet()); + Set<String> cands2 = new HashSet<>(chkpointCand.keySet()); if( sb instanceof IfStatementBlock || sb instanceof WhileStatementBlock || sb instanceof ForStatementBlock ) { @@ -129,7 +129,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops()); for( Hop chkpoint : tmp ) { if( chkpointCand.containsKey(chkpoint.getName()) ) { - chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false); + chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false); } chkpointCand.put(chkpoint.getName(), chkpoint); } @@ -145,12 +145,12 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass //after update if not used before update (best effort move which often avoids //the second checkpoint on loops even though used in between) - HashMap<String, Hop> chkpointCand = new HashMap<String, Hop>(); + HashMap<String, Hop> chkpointCand = new HashMap<>(); for( StatementBlock sb : dmlp.getStatementBlocks() ) { //prune candidates (used before updated) - Set<String> cands = new HashSet<String>(chkpointCand.keySet()); + Set<String> cands = new HashSet<>(chkpointCand.keySet()); for( String cand : cands ) if( sb.variablesRead().containsVariable(cand) && !sb.variablesUpdated().containsVariable(cand) ) @@ -170,7 +170,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass } //prune candidates (updated in conditional control flow) - Set<String> cands2 = new HashSet<String>(chkpointCand.keySet()); + Set<String> cands2 = new HashSet<>(chkpointCand.keySet()); if( sb instanceof IfStatementBlock || sb instanceof WhileStatementBlock || sb instanceof ForStatementBlock ) { @@ -228,7 +228,7 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass private static ArrayList<Hop> collectCheckpoints(ArrayList<Hop> roots) { - ArrayList<Hop> ret = new ArrayList<Hop>(); + ArrayList<Hop> ret = new ArrayList<>(); if( roots != null ) { Hop.resetVisitStatus(roots); for( Hop root : roots ) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java index 024b456..1aafe0b 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java +++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java @@ -129,7 +129,7 @@ public class InterProceduralAnalysis _fgraph = new FunctionCallGraph(dmlp); //create order list of IPA passes - _passes = new ArrayList<IPAPass>(); + _passes = new ArrayList<>(); _passes.add(new IPAPassRemoveUnusedFunctions()); _passes.add(new IPAPassFlagFunctionsRecompileOnce()); _passes.add(new IPAPassRemoveUnnecessaryCheckpoints()); @@ -145,7 +145,7 @@ public class InterProceduralAnalysis _fgraph = new FunctionCallGraph(sb); //create order list of IPA passes - _passes = new ArrayList<IPAPass>(); + _passes = new ArrayList<>(); } /** @@ -251,7 +251,7 @@ public class InterProceduralAnalysis //check size-preserving characteristic if( ret ) { FunctionCallSizeInfo fcallSizes = new FunctionCallSizeInfo(_fgraph, false); - HashSet<String> fnStack = new HashSet<String>(); + HashSet<String> fnStack = new HashSet<>(); LocalVariableMap callVars = new LocalVariableMap(); //populate input http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java index d7b97e9..f0c8955 100644 --- a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java +++ b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java @@ -82,7 +82,7 @@ public class LiteralReplacement //because hop c marked as visited, and (2) repeated evaluation of uagg ops if( c.getParent().size() > 1 ) { //multiple parents - ArrayList<Hop> parents = new ArrayList<Hop>(c.getParent()); + ArrayList<Hop> parents = new ArrayList<>(c.getParent()); for( Hop p : parents ) { int pos = HopRewriteUtils.getChildReferencePos(p, c); HopRewriteUtils.removeChildReferenceByPos(p, c, pos); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java b/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java index c16244f..f40422b 100644 --- a/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java +++ b/src/main/java/org/apache/sysml/hops/recompile/RecompileStatus.java @@ -33,7 +33,7 @@ public class RecompileStatus } public RecompileStatus(boolean initialCodegen) { - _lastTWrites = new HashMap<String,MatrixCharacteristics>(); + _lastTWrites = new HashMap<>(); _initialCodegen = initialCodegen; } http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java index df6746b..463e41b 100644 --- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java +++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java @@ -237,7 +237,7 @@ public class Recompiler } // construct lops - Dag<Lop> dag = new Dag<Lop>(); + Dag<Lop> dag = new Dag<>(); for( Hop hopRoot : hops ){ Lop lops = hopRoot.constructLops(); lops.addToDag(dag); @@ -352,7 +352,7 @@ public class Recompiler } // construct lops - Dag<Lop> dag = new Dag<Lop>(); + Dag<Lop> dag = new Dag<>(); Lop lops = hops.constructLops(); lops.addToDag(dag); @@ -413,14 +413,14 @@ public class Recompiler Hop.resetVisitStatus(hops); // construct lops - Dag<Lop> dag = new Dag<Lop>(); + Dag<Lop> dag = new Dag<>(); for( Hop hopRoot : hops ){ Lop lops = hopRoot.constructLops(); lops.addToDag(dag); } // generate runtime instructions (incl piggybacking) - newInst = dag.getJobs(sb, ConfigurationManager.getDMLConfig()); + newInst = dag.getJobs(sb, ConfigurationManager.getDMLConfig()); } // replace thread ids in new instructions @@ -465,10 +465,10 @@ public class Recompiler rSetExecType( hops, et ); hops.resetVisitStatus(); - // construct lops - Dag<Lop> dag = new Dag<Lop>(); + // construct lops + Dag<Lop> dag = new Dag<>(); Lop lops = hops.constructLops(); - lops.addToDag(dag); + lops.addToDag(dag); // generate runtime instructions (incl piggybacking) newInst = dag.getJobs(null, ConfigurationManager.getDMLConfig()); @@ -498,8 +498,8 @@ public class Recompiler for( Hop hopRoot : hops ) rClearLops( hopRoot ); - // construct lops - Dag<Lop> dag = new Dag<Lop>(); + // construct lops + Dag<Lop> dag = new Dag<>(); for( Hop hopRoot : hops ){ Lop lops = hopRoot.constructLops(); lops.addToDag(dag); @@ -537,10 +537,10 @@ public class Recompiler hops.resetVisitStatus(); rClearLops( hops ); - // construct lops - Dag<Lop> dag = new Dag<Lop>(); + // construct lops + Dag<Lop> dag = new Dag<>(); Lop lops = hops.constructLops(); - lops.addToDag(dag); + lops.addToDag(dag); // generate runtime instructions (incl piggybacking) newInst = dag.getJobs(null, ConfigurationManager.getDMLConfig()); @@ -702,12 +702,12 @@ public class Recompiler public static ArrayList<Hop> deepCopyHopsDag( ArrayList<Hop> hops ) throws HopsException { - ArrayList<Hop> ret = new ArrayList<Hop>(); + ArrayList<Hop> ret = new ArrayList<>(); try { //note: need memo table over all independent DAGs in order to //account for shared transient reads (otherwise more instructions generated) - HashMap<Long, Hop> memo = new HashMap<Long, Hop>(); //orig ID, new clone + HashMap<Long, Hop> memo = new HashMap<>(); //orig ID, new clone for( Hop hopRoot : hops ) ret.add(rDeepCopyHopsDag(hopRoot, memo)); } @@ -732,7 +732,7 @@ public class Recompiler Hop ret = null; try { - HashMap<Long, Hop> memo = new HashMap<Long, Hop>(); //orig ID, new clone + HashMap<Long, Hop> memo = new HashMap<>(); //orig ID, new clone ret = rDeepCopyHopsDag(hops, memo); } catch(Exception ex) @@ -752,7 +752,7 @@ public class Recompiler if( ret == null ) { ret = (Hop) hops.clone(); - ArrayList<Hop> tmp = new ArrayList<Hop>(); + ArrayList<Hop> tmp = new ArrayList<>(); //create new childs for( Hop in : hops.getInput() ) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java index 2d58f4c..d96d1e4 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/HopRewriteUtils.java @@ -303,7 +303,7 @@ public class HopRewriteUtils new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, OpOp1.NCOL, input); Hop val = new LiteralOp(value); - HashMap<String, Hop> params = new HashMap<String, Hop>(); + HashMap<String, Hop> params = new HashMap<>(); params.put(DataExpression.RAND_ROWS, rows); params.put(DataExpression.RAND_COLS, cols); params.put(DataExpression.RAND_MIN, val); @@ -359,14 +359,14 @@ public class HopRewriteUtils Hop sminHop = new LiteralOp(smin); Hop smaxHop = new LiteralOp(smax); - HashMap<String, Hop> params2 = new HashMap<String, Hop>(); + HashMap<String, Hop> params2 = new HashMap<>(); params2.put(DataExpression.RAND_ROWS, rows); params2.put(DataExpression.RAND_COLS, cols); params2.put(DataExpression.RAND_MIN, sminHop); params2.put(DataExpression.RAND_MAX, smaxHop); params2.put(DataExpression.RAND_PDF, pdf); params2.put(DataExpression.RAND_LAMBDA, mean); - params2.put(DataExpression.RAND_SPARSITY, sparsity); + params2.put(DataExpression.RAND_SPARSITY, sparsity); params2.put(DataExpression.RAND_SEED, seed ); //note internal refresh size information @@ -389,7 +389,7 @@ public class HopRewriteUtils new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, OpOp1.NCOL, colInput); Hop val = new LiteralOp(value); - HashMap<String, Hop> params = new HashMap<String, Hop>(); + HashMap<String, Hop> params = new HashMap<>(); params.put(DataExpression.RAND_ROWS, rows); params.put(DataExpression.RAND_COLS, cols); params.put(DataExpression.RAND_MIN, val); @@ -422,7 +422,7 @@ public class HopRewriteUtils new UnaryOp("tmpcols", DataType.SCALAR, ValueType.INT, tColInput?OpOp1.NROW:OpOp1.NCOL, colInput); Hop val = new LiteralOp(value); - HashMap<String, Hop> params = new HashMap<String, Hop>(); + HashMap<String, Hop> params = new HashMap<>(); params.put(DataExpression.RAND_ROWS, rows); params.put(DataExpression.RAND_COLS, cols); params.put(DataExpression.RAND_MIN, val); @@ -448,7 +448,7 @@ public class HopRewriteUtils { Hop val = new LiteralOp(value); - HashMap<String, Hop> params = new HashMap<String, Hop>(); + HashMap<String, Hop> params = new HashMap<>(); params.put(DataExpression.RAND_ROWS, rowInput); params.put(DataExpression.RAND_COLS, colInput); params.put(DataExpression.RAND_MIN, val); @@ -622,7 +622,7 @@ public class HopRewriteUtils Hop to = (input.getDim1()>0) ? new LiteralOp(input.getDim1()) : new UnaryOp("tmprows", DataType.SCALAR, ValueType.INT, OpOp1.NROW, input); - HashMap<String, Hop> params = new HashMap<String, Hop>(); + HashMap<String, Hop> params = new HashMap<>(); if( asc ) { params.put(Statement.SEQ_FROM, new LiteralOp(1)); params.put(Statement.SEQ_TO, to); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java index 737e5e8..c56b2ed 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java @@ -74,10 +74,10 @@ public class ProgramRewriter public ProgramRewriter( boolean staticRewrites, boolean dynamicRewrites ) { //initialize HOP DAG rewrite ruleSet (with fixed rewrite order) - _dagRuleSet = new ArrayList<HopRewriteRule>(); + _dagRuleSet = new ArrayList<>(); //initialize StatementBlock rewrite ruleSet (with fixed rewrite order) - _sbRuleSet = new ArrayList<StatementBlockRewriteRule>(); + _sbRuleSet = new ArrayList<>(); //STATIC REWRITES (which do not rely on size information) @@ -145,11 +145,11 @@ public class ProgramRewriter */ public ProgramRewriter( HopRewriteRule... rewrites ) { //initialize HOP DAG rewrite ruleSet (with fixed rewrite order) - _dagRuleSet = new ArrayList<HopRewriteRule>(); + _dagRuleSet = new ArrayList<>(); for( HopRewriteRule rewrite : rewrites ) - _dagRuleSet.add( rewrite ); + _dagRuleSet.add( rewrite ); - _sbRuleSet = new ArrayList<StatementBlockRewriteRule>(); + _sbRuleSet = new ArrayList<>(); } /** @@ -159,9 +159,9 @@ public class ProgramRewriter */ public ProgramRewriter( StatementBlockRewriteRule... rewrites ) { //initialize HOP DAG rewrite ruleSet (with fixed rewrite order) - _dagRuleSet = new ArrayList<HopRewriteRule>(); + _dagRuleSet = new ArrayList<>(); - _sbRuleSet = new ArrayList<StatementBlockRewriteRule>(); + _sbRuleSet = new ArrayList<>(); for( StatementBlockRewriteRule rewrite : rewrites ) _sbRuleSet.add( rewrite ); } @@ -174,10 +174,10 @@ public class ProgramRewriter */ public ProgramRewriter(ArrayList<HopRewriteRule> hRewrites, ArrayList<StatementBlockRewriteRule> sbRewrites) { //initialize HOP DAG rewrite ruleSet (with fixed rewrite order) - _dagRuleSet = new ArrayList<HopRewriteRule>(); + _dagRuleSet = new ArrayList<>(); _dagRuleSet.addAll( hRewrites ); - _sbRuleSet = new ArrayList<StatementBlockRewriteRule>(); + _sbRuleSet = new ArrayList<>(); _sbRuleSet.addAll( sbRewrites ); } @@ -300,7 +300,7 @@ public class ProgramRewriter tmp = r.rewriteStatementBlocks(tmp, status); //recursively rewrite statement blocks (with potential expansion) - List<StatementBlock> tmp2 = new ArrayList<StatementBlock>(); + List<StatementBlock> tmp2 = new ArrayList<>(); for( StatementBlock sb : tmp ) tmp2.addAll( rRewriteStatementBlock(sb, status) ); @@ -317,7 +317,7 @@ public class ProgramRewriter public ArrayList<StatementBlock> rRewriteStatementBlock( StatementBlock sb, ProgramRewriteStatus status ) throws HopsException { - ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>(); + ArrayList<StatementBlock> ret = new ArrayList<>(); ret.add(sb); //recursive invocation @@ -356,7 +356,7 @@ public class ProgramRewriter //apply rewrite rules to individual statement blocks for( StatementBlockRewriteRule r : _sbRuleSet ) { - ArrayList<StatementBlock> tmp = new ArrayList<StatementBlock>(); + ArrayList<StatementBlock> tmp = new ArrayList<>(); for( StatementBlock sbc : ret ) tmp.addAll( r.rewriteStatementBlock(sbc, status) ); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/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 8513d27..dcb729e 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationDynamic.java @@ -1092,7 +1092,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule //remove all parent links to binary op (since we want to reorder //we cannot just look at the current parent) ArrayList<Hop> parents = (ArrayList<Hop>) hi.getParent().clone(); - ArrayList<Integer> parentspos = new ArrayList<Integer>(); + ArrayList<Integer> parentspos = new ArrayList<>(); for(Hop lparent : parents) { int lpos = HopRewriteUtils.getChildReferencePos(lparent, hi); HopRewriteUtils.removeChildReferenceByPos(lparent, hi, lpos); @@ -2559,7 +2559,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule && HopRewriteUtils.isLiteralOfValue(hi.getInput().get(3), second.getDim1()) ) { //setup input parameter hops - HashMap<String,Hop> args = new HashMap<String,Hop>(); + HashMap<String,Hop> args = new HashMap<>(); args.put("target", second); args.put("max", hi.getInput().get(4)); args.put("dir", new LiteralOp("cols")); @@ -2580,7 +2580,7 @@ public class RewriteAlgebraicSimplificationDynamic extends HopRewriteRule && HopRewriteUtils.isLiteralOfValue(hi.getInput().get(4), first.getDim1()) ) { //setup input parameter hops - HashMap<String,Hop> args = new HashMap<String,Hop>(); + HashMap<String,Hop> args = new HashMap<>(); args.put("target", first); args.put("max", hi.getInput().get(3)); args.put("dir", new LiteralOp("rows")); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java index d100989..4e5f3fb 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteAlgebraicSimplificationStatic.java @@ -383,7 +383,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule } //rewire all parents (avoid anomalies with replicated datagen) - List<Hop> parents = new ArrayList<Hop>(bop.getParent()); + List<Hop> parents = new ArrayList<>(bop.getParent()); for( Hop p : parents ) HopRewriteUtils.replaceChildReference(p, bop, gen); @@ -415,7 +415,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule } //rewire all parents (avoid anomalies with replicated datagen) - List<Hop> parents = new ArrayList<Hop>(bop.getParent()); + List<Hop> parents = new ArrayList<>(bop.getParent()); for( Hop p : parents ) HopRewriteUtils.replaceChildReference(p, bop, gen); @@ -465,12 +465,12 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule HopRewriteUtils.addChildReference(inputGen, newMax, ixMax); //rewire all parents (avoid anomalies with replicated datagen) - List<Hop> parents = new ArrayList<Hop>(bop.getParent()); + List<Hop> parents = new ArrayList<>(bop.getParent()); for( Hop p : parents ) HopRewriteUtils.replaceChildReference(p, bop, inputGen); hi = inputGen; - LOG.debug("Applied fuseDatagenAndMinusOperation (line "+bop.getBeginLine()+")."); + LOG.debug("Applied fuseDatagenAndMinusOperation (line "+bop.getBeginLine()+")."); } } } @@ -553,7 +553,7 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule private Hop canonicalizeMatrixMultScalarAdd( Hop hi ) throws HopsException { - //pattern: binary operation (+ or -) of matrix mult and scalar + //pattern: binary operation (+ or -) of matrix mult and scalar if( hi instanceof BinaryOp ) { BinaryOp bop = (BinaryOp)hi; @@ -1641,11 +1641,11 @@ public class RewriteAlgebraicSimplificationStatic extends HopRewriteRule HopRewriteUtils.createTranspose(hi.getInput().get(1)) ) : //create v via t(v') hi.getInput().get(0); //get v directly Hop seq = isPatternB ? - hi.getInput().get(0) : hi.getInput().get(1).getInput().get(0); + hi.getInput().get(0) : hi.getInput().get(1).getInput().get(0); String direction = HopRewriteUtils.isBasic1NSequence(hi.getInput().get(0)) ? "rows" : "cols"; //setup input parameter hops - HashMap<String,Hop> inputargs = new HashMap<String,Hop>(); + HashMap<String,Hop> inputargs = new HashMap<>(); inputargs.put("target", trgt); inputargs.put("max", HopRewriteUtils.getBasic1NSequenceMax(seq)); inputargs.put("dir", new LiteralOp(direction)); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java index 5379dfe..f8d812a 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCommonSubexpressionElimination.java @@ -56,8 +56,8 @@ public class RewriteCommonSubexpressionElimination extends HopRewriteRule if( roots == null ) return null; - HashMap<String, Hop> dataops = new HashMap<String, Hop>(); - HashMap<String, Hop> literalops = new HashMap<String, Hop>(); //key: <VALUETYPE>_<LITERAL> + HashMap<String, Hop> dataops = new HashMap<>(); + HashMap<String, Hop> literalops = new HashMap<>(); //key: <VALUETYPE>_<LITERAL> for (Hop h : roots) { int cseMerged = 0; @@ -81,8 +81,8 @@ public class RewriteCommonSubexpressionElimination extends HopRewriteRule if( root == null ) return null; - HashMap<String, Hop> dataops = new HashMap<String, Hop>(); - HashMap<String, Hop> literalops = new HashMap<String, Hop>(); //key: <VALUETYPE>_<LITERAL> + HashMap<String, Hop> dataops = new HashMap<>(); + HashMap<String, Hop> literalops = new HashMap<>(); //key: <VALUETYPE>_<LITERAL> int cseMerged = 0; if( _mergeLeafs ) { cseMerged += rule_CommonSubexpressionElimination_MergeLeafs(root, dataops, literalops); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java index a0867e2..92b91e0 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteConstantFolding.java @@ -188,7 +188,7 @@ public class RewriteConstantFolding extends HopRewriteRule DataOp tmpWrite = new DataOp(TMP_VARNAME, bop.getDataType(), bop.getValueType(), bop, DataOpTypes.TRANSIENTWRITE, TMP_VARNAME); //generate runtime instruction - Dag<Lop> dag = new Dag<Lop>(); + Dag<Lop> dag = new Dag<>(); Recompiler.rClearLops(tmpWrite); //prevent lops reuse Lop lops = tmpWrite.constructLops(); //reconstruct lops lops.addToDag( dag ); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java index 0724612..bd22522 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteIndexingVectorization.java @@ -204,7 +204,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule if( isSingleRow && isSingleCol ) { //collect simple chains (w/o multiple consumers) of left indexing ops - ArrayList<Hop> ihops = new ArrayList<Hop>(); + ArrayList<Hop> ihops = new ArrayList<>(); ihops.add(ihop0); Hop current = ihop0; while( current.getInput().get(0) instanceof LeftIndexingOp ) { @@ -251,7 +251,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule //new row left indexing operator (for all parents, only intermediates are guaranteed to have 1 parent) //(note: it's important to clone the parent list before creating newLix on top of ihop0) ArrayList<Hop> ihop0parents = (ArrayList<Hop>) ihop0.getParent().clone(); - ArrayList<Integer> ihop0parentsPos = new ArrayList<Integer>(); + ArrayList<Integer> ihop0parentsPos = new ArrayList<>(); for( Hop parent : ihop0parents ) { int posp = HopRewriteUtils.getChildReferencePos(parent, ihop0); HopRewriteUtils.removeChildReferenceByPos(parent, ihop0, posp); //input data @@ -283,7 +283,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule { //collect simple chains (w/o multiple consumers) of left indexing ops - ArrayList<Hop> ihops = new ArrayList<Hop>(); + ArrayList<Hop> ihops = new ArrayList<>(); ihops.add(ihop0); Hop current = ihop0; while( current.getInput().get(0) instanceof LeftIndexingOp ) { @@ -330,7 +330,7 @@ public class RewriteIndexingVectorization extends HopRewriteRule //new row left indexing operator (for all parents, only intermediates are guaranteed to have 1 parent) //(note: it's important to clone the parent list before creating newLix on top of ihop0) ArrayList<Hop> ihop0parents = (ArrayList<Hop>) ihop0.getParent().clone(); - ArrayList<Integer> ihop0parentsPos = new ArrayList<Integer>(); + ArrayList<Integer> ihop0parentsPos = new ArrayList<>(); for( Hop parent : ihop0parents ) { int posp = HopRewriteUtils.getChildReferencePos(parent, ihop0); HopRewriteUtils.removeChildReferenceByPos(parent, ihop0, posp); //input data http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java index 876b162..f838952 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java @@ -76,7 +76,7 @@ public class RewriteInjectSparkLoopCheckpointing extends StatementBlockRewriteRu && (_checkCtx ? !status.isInParforContext() : true) ) { //step 1: determine checkpointing candidates - ArrayList<String> candidates = new ArrayList<String>(); + ArrayList<String> candidates = new ArrayList<>(); VariableSet read = sb.variablesRead(); VariableSet updated = sb.variablesUpdated(); @@ -90,7 +90,7 @@ public class RewriteInjectSparkLoopCheckpointing extends StatementBlockRewriteRu StatementBlock sb0 = new StatementBlock(); sb0.setDMLProg(sb.getDMLProg()); sb0.setParseInfo(sb); - ArrayList<Hop> hops = new ArrayList<Hop>(); + ArrayList<Hop> hops = new ArrayList<>(); VariableSet livein = new VariableSet(); VariableSet liveout = new VariableSet(); for( String var : candidates ) http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java index ce94ee1..deb7fba 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java @@ -61,7 +61,7 @@ public class RewriteMarkLoopVariablesUpdateInPlace extends StatementBlockRewrite if( sb instanceof WhileStatementBlock || sb instanceof ForStatementBlock ) //incl parfor { - ArrayList<String> candidates = new ArrayList<String>(); + ArrayList<String> candidates = new ArrayList<>(); VariableSet updated = sb.variablesUpdated(); VariableSet liveout = sb.liveOut(); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java index 396dafc..090018b 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMatrixMultChainOptimization.java @@ -125,8 +125,8 @@ public class RewriteMatrixMultChainOptimization extends HopRewriteRule + ", " + hop.getHopID() + ", " + hop.getName() + ")"); } - ArrayList<Hop> mmChain = new ArrayList<Hop>(); - ArrayList<Hop> mmOperators = new ArrayList<Hop>(); + ArrayList<Hop> mmChain = new ArrayList<>(); + ArrayList<Hop> mmOperators = new ArrayList<>(); ArrayList<Hop> tempList; // Step 1: Identify the chain (mmChain) & clear all links among the Hops http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java index 9cba102..e1c2630 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java @@ -86,7 +86,7 @@ public class RewriteMergeBlockSequence extends StatementBlockRewriteRule //rewire transient write and transient read Hop tread = treads.get(root.getName()); Hop in = root.getInput().get(0); - for( Hop parent : new ArrayList<Hop>(tread.getParent()) ) + for( Hop parent : new ArrayList<>(tread.getParent()) ) HopRewriteUtils.replaceChildReference(parent, tread, in); HopRewriteUtils.removeAllChildReferences(root); //add transient write if necessary http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java index 011eecd..34743bb 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemovePersistentReadWrite.java @@ -59,15 +59,15 @@ public class RewriteRemovePersistentReadWrite extends HopRewriteRule public RewriteRemovePersistentReadWrite( String[] in, String[] out, LocalVariableMap vars ) { //store input and output names - _inputs = new HashSet<String>(); + _inputs = new HashSet<>(); for( String var : in ) _inputs.add( var ); - _outputs = new HashSet<String>(); + _outputs = new HashSet<>(); for( String var : out ) _outputs.add( var ); //store input meta data - _inputsMeta = new HashMap<String, MetaData>(); + _inputsMeta = new HashMap<>(); if( vars != null ) { for( String varname : in ) { Data dat = vars.get(varname); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java index d3489f4..c53d59d 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveReadAfterWrite.java @@ -50,8 +50,8 @@ public class RewriteRemoveReadAfterWrite extends HopRewriteRule return null; //collect all persistent reads and writes - HashMap<String,Hop> reads = new HashMap<String,Hop>(); - HashMap<String,Hop> writes = new HashMap<String,Hop>(); + HashMap<String,Hop> reads = new HashMap<>(); + HashMap<String,Hop> writes = new HashMap<>(); for( Hop h : roots ) collectPersistentReadWriteOps( h, writes, reads ); http://git-wip-us.apache.org/repos/asf/systemml/blob/40dd894e/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java index 6ada2d2..52aa7a5 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteRemoveUnnecessaryBranches.java @@ -41,7 +41,7 @@ public class RewriteRemoveUnnecessaryBranches extends StatementBlockRewriteRule public List<StatementBlock> rewriteStatementBlock(StatementBlock sb, ProgramRewriteStatus state) throws HopsException { - ArrayList<StatementBlock> ret = new ArrayList<StatementBlock>(); + ArrayList<StatementBlock> ret = new ArrayList<>(); if( sb instanceof IfStatementBlock ) {
