[MINOR][SYSTEMML-1917] Refactoring hops get/set, incl exception handling Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/c04929fa Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/c04929fa Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/c04929fa
Branch: refs/heads/master Commit: c04929fab52248d0777111529c779eaea3e0465e Parents: 779d432 Author: Matthias Boehm <mboe...@gmail.com> Authored: Sat Nov 11 22:48:01 2017 -0800 Committer: Matthias Boehm <mboe...@gmail.com> Committed: Sat Nov 11 23:56:56 2017 -0800 ---------------------------------------------------------------------- .../sysml/hops/codegen/SpoofCompiler.java | 4 +- .../sysml/hops/globalopt/GDFEnumOptimizer.java | 55 +++---- .../hops/globalopt/gdfgraph/GraphBuilder.java | 2 +- .../sysml/hops/ipa/FunctionCallGraph.java | 2 +- .../sysml/hops/ipa/IPAPassInlineFunctions.java | 10 +- .../ipa/IPAPassPropagateReplaceLiterals.java | 2 +- .../ipa/IPAPassRemoveConstantBinaryOps.java | 8 +- .../IPAPassRemoveUnnecessaryCheckpoints.java | 52 ++++--- .../sysml/hops/ipa/InterProceduralAnalysis.java | 2 +- .../apache/sysml/hops/recompile/Recompiler.java | 14 +- .../sysml/hops/rewrite/ProgramRewriter.java | 2 +- .../hops/rewrite/RewriteCompressedReblock.java | 12 +- .../rewrite/RewriteForLoopVectorization.java | 24 +-- .../RewriteInjectSparkLoopCheckpointing.java | 2 +- .../RewriteMarkLoopVariablesUpdateInPlace.java | 4 +- .../hops/rewrite/RewriteMergeBlockSequence.java | 14 +- .../RewriteSplitDagDataDependentOperators.java | 13 +- .../rewrite/RewriteSplitDagUnknownCSVRead.java | 7 +- .../org/apache/sysml/parser/DMLTranslator.java | 156 +++++-------------- .../apache/sysml/parser/ForStatementBlock.java | 11 +- .../sysml/parser/FunctionStatementBlock.java | 13 -- .../apache/sysml/parser/IfStatementBlock.java | 9 -- .../org/apache/sysml/parser/StatementBlock.java | 9 +- .../sysml/parser/WhileStatementBlock.java | 11 -- .../runtime/controlprogram/ProgramBlock.java | 2 +- .../controlprogram/parfor/ProgramConverter.java | 6 +- .../parfor/opt/OptTreeConverter.java | 2 +- .../parfor/opt/OptTreePlanChecker.java | 2 +- .../parfor/opt/OptimizerRuleBased.java | 2 +- .../parfor/opt/ProgramRecompiler.java | 10 +- .../java/org/apache/sysml/utils/Explain.java | 4 +- .../sysml/yarn/ropt/GridEnumerationMemory.java | 6 +- .../sysml/yarn/ropt/ResourceOptimizer.java | 8 +- 33 files changed, 176 insertions(+), 304 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java index 51cd0a2..8aa673b 100644 --- a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java +++ b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java @@ -240,7 +240,7 @@ public class SpoofCompiler } else //generic (last-level) { - current.set_hops( generateCodeFromHopDAGs(current.get_hops()) ); + current.setHops( generateCodeFromHopDAGs(current.getHops()) ); current.updateRecompilationFlag(); } } @@ -291,7 +291,7 @@ public class SpoofCompiler else //generic (last-level) { StatementBlock sb = current.getStatementBlock(); - current.setInstructions( generateCodeFromHopDAGsToInst(sb, sb.get_hops()) ); + current.setInstructions( generateCodeFromHopDAGsToInst(sb, sb.getHops()) ); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 73762ce..50284b1 100644 --- a/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java +++ b/src/main/java/org/apache/sysml/hops/globalopt/GDFEnumOptimizer.java @@ -445,41 +445,34 @@ public class GDFEnumOptimizer extends GlobalOptimizer Hop currentHop = p.getNode().getHop(); ProgramBlock pb = p.getNode().getProgramBlock(); - try - { - //keep the old dag roots - ArrayList<Hop> oldRoots = pb.getStatementBlock().get_hops(); - Hop tmpHop = null; - if( !(currentHop instanceof DataOp && ((DataOp)currentHop).isWrite()) ){ - 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); - pb.getStatementBlock().set_hops(newRoots); - } - - //recompile modified runtime program - Recompiler.recompileProgramBlockHierarchy(prog.getProgramBlocks(), - new LocalVariableMap(), 0, ResetType.NO_RESET); - _compiledPlans++; - - //cost partial runtime program up to current hop - ExecutionContext ec = ExecutionContextFactory.createContext(prog); - costs = CostEstimationWrapper.getTimeEstimate(prog, ec); - - //restore original hop dag - if( tmpHop !=null ) - HopRewriteUtils.removeChildReference(tmpHop, currentHop); - pb.getStatementBlock().set_hops(oldRoots); - } - catch(HopsException ex) - { - throw new DMLRuntimeException(ex); + //keep the old dag roots + ArrayList<Hop> oldRoots = pb.getStatementBlock().getHops(); + Hop tmpHop = null; + if( !(currentHop instanceof DataOp && ((DataOp)currentHop).isWrite()) ){ + 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); + pb.getStatementBlock().setHops(newRoots); } + + //recompile modified runtime program + Recompiler.recompileProgramBlockHierarchy(prog.getProgramBlocks(), + new LocalVariableMap(), 0, ResetType.NO_RESET); + _compiledPlans++; + + //cost partial runtime program up to current hop + ExecutionContext ec = ExecutionContextFactory.createContext(prog); + costs = CostEstimationWrapper.getTimeEstimate(prog, ec); + + //restore original hop dag + if( tmpHop !=null ) + HopRewriteUtils.removeChildReference(tmpHop, currentHop); + pb.getStatementBlock().setHops(oldRoots); } //release forced data flow configuration from program - rResetRuntimePlanConfig(p, new HashMap<Long,Plan>()); + rResetRuntimePlanConfig(p, new HashMap<Long,Plan>()); _costedPlans++; return costs; http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 e768854..923807e 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 @@ -147,7 +147,7 @@ public class GraphBuilder else //last-level program block { StatementBlock sb = pb.getStatementBlock(); - ArrayList<Hop> hops = sb.get_hops(); + ArrayList<Hop> hops = sb.getHops(); if( hops != null ) { //create new local memo structure for local dag http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 4735f47..6ea1338 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java +++ b/src/main/java/org/apache/sysml/hops/ipa/FunctionCallGraph.java @@ -276,7 +276,7 @@ public class FunctionCallGraph } else { // For generic StatementBlock - ArrayList<Hop> hopsDAG = sb.get_hops(); + ArrayList<Hop> hopsDAG = sb.getHops(); if( hopsDAG == null || hopsDAG.isEmpty() ) return; //nothing to do http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java index c7ee3e4..106eb2b 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassInlineFunctions.java @@ -62,16 +62,16 @@ public class IPAPassInlineFunctions extends IPAPass FunctionStatement fstmt = (FunctionStatement)fsb.getStatement(0); if( fstmt.getBody().size() == 1 && HopRewriteUtils.isLastLevelStatementBlock(fstmt.getBody().get(0)) - && !containsFunctionOp(fstmt.getBody().get(0).get_hops()) + && !containsFunctionOp(fstmt.getBody().get(0).getHops()) && (fgraph.getFunctionCalls(fkey).size() == 1 - || countOperators(fstmt.getBody().get(0).get_hops()) + || countOperators(fstmt.getBody().get(0).getHops()) <= InterProceduralAnalysis.INLINING_MAX_NUM_OPS) ) { if( LOG.isDebugEnabled() ) LOG.debug("IPA: Inline function '"+fkey+"'"); //replace all relevant function calls - ArrayList<Hop> hops = fstmt.getBody().get(0).get_hops(); + ArrayList<Hop> hops = fstmt.getBody().get(0).getHops(); List<FunctionOp> fcalls = fgraph.getFunctionCalls(fkey); List<StatementBlock> fcallsSB = fgraph.getFunctionCallsSB(fkey); for(int i=0; i<fcalls.size(); i++) { @@ -101,8 +101,8 @@ public class IPAPassInlineFunctions extends IPAPass if( HopRewriteUtils.isData(out, DataOpTypes.TRANSIENTWRITE) ) out.setName(outMap.get(out.getName())); } - fcallsSB.get(i).get_hops().remove(op); - fcallsSB.get(i).get_hops().addAll(hops2); + fcallsSB.get(i).getHops().remove(op); + fcallsSB.get(i).getHops().addAll(hops2); } } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java b/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java index 5e2e86c..664ac7b 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassPropagateReplaceLiterals.java @@ -116,7 +116,7 @@ public class IPAPassPropagateReplaceLiterals extends IPAPass rReplaceLiterals(current, constants); } else { - replaceLiterals(sb.get_hops(), constants); + replaceLiterals(sb.getHops(), constants); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 6b110c8..d948128 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveConstantBinaryOps.java @@ -79,7 +79,7 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass if( !(sb instanceof IfStatementBlock || sb instanceof WhileStatementBlock || sb instanceof ForStatementBlock) ) { - collectMatrixOfOnes(sb.get_hops(), mOnes); + collectMatrixOfOnes(sb.getHops(), mOnes); } } } @@ -128,9 +128,9 @@ public class IPAPassRemoveConstantBinaryOps extends IPAPass } else { - if( sb.get_hops() != null ){ - Hop.resetVisitStatus(sb.get_hops()); - for( Hop hop : sb.get_hops() ) + if( sb.getHops() != null ){ + Hop.resetVisitStatus(sb.getHops()); + for( Hop hop : sb.getHops() ) rRemoveConstantBinaryOp(hop, mOnes); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 1c2c6b9..d90b4b6 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java +++ b/src/main/java/org/apache/sysml/hops/ipa/IPAPassRemoveUnnecessaryCheckpoints.java @@ -90,10 +90,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass //data operations like nrow(X) or operations removed by rewrites //double check hops on basic blocks; otherwise worst-case boolean skipRemove = false; - if( sb.get_hops() !=null ) { - Hop.resetVisitStatus(sb.get_hops()); + if( sb.getHops() !=null ) { + Hop.resetVisitStatus(sb.getHops()); skipRemove = true; - for( Hop root : sb.get_hops() ) + for( Hop root : sb.getHops() ) skipRemove &= !HopRewriteUtils.rContainsRead(root, cand, false); } if( !skipRemove ) @@ -114,10 +114,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass else { for( String cand : cands2 ) - if( sb.variablesUpdated().containsVariable(cand) && sb.get_hops() != null) + if( sb.variablesUpdated().containsVariable(cand) && sb.getHops() != null) { - Hop.resetVisitStatus(sb.get_hops()); - for( Hop root : sb.get_hops() ) + Hop.resetVisitStatus(sb.getHops()); + for( Hop root : sb.getHops() ) if( root.getName().equals(cand) && !HopRewriteUtils.rHasSimpleReadChain(root, cand) ) { chkpointCand.remove(cand); @@ -126,14 +126,15 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass } //collect checkpoints and remove unnecessary checkpoints - ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops()); - for( Hop chkpoint : tmp ) { - if( chkpointCand.containsKey(chkpoint.getName()) ) { - chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false); + if( HopRewriteUtils.isLastLevelStatementBlock(sb) ) { + ArrayList<Hop> tmp = collectCheckpoints(sb.getHops()); + for( Hop chkpoint : tmp ) { + if( chkpointCand.containsKey(chkpoint.getName()) ) { + chkpointCand.get(chkpoint.getName()).setRequiresCheckpoint(false); + } + chkpointCand.put(chkpoint.getName(), chkpoint); } - chkpointCand.put(chkpoint.getName(), chkpoint); } - } } @@ -159,10 +160,10 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass //data operations like nrow(X) or operations removed by rewrites //double check hops on basic blocks; otherwise worst-case boolean skipRemove = false; - if( sb.get_hops() !=null ) { - Hop.resetVisitStatus(sb.get_hops()); + if( sb.getHops() !=null ) { + Hop.resetVisitStatus(sb.getHops()); skipRemove = true; - for( Hop root : sb.get_hops() ) + for( Hop root : sb.getHops() ) skipRemove &= !HopRewriteUtils.rContainsRead(root, cand, false); } if( !skipRemove ) @@ -185,9 +186,9 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass else { for( String cand : cands2 ) - if( sb.variablesUpdated().containsVariable(cand) && sb.get_hops() != null) { - Hop.resetVisitStatus(sb.get_hops()); - for( Hop root : sb.get_hops() ) + if( sb.variablesUpdated().containsVariable(cand) && sb.getHops() != null) { + Hop.resetVisitStatus(sb.getHops()); + for( Hop root : sb.getHops() ) if( root.getName().equals(cand) ) { if( HopRewriteUtils.rHasSimpleReadChain(root, cand) ) { chkpointCand.get(cand).setRequiresCheckpoint(false); @@ -195,15 +196,16 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass chkpointCand.put(cand, root.getInput().get(0)); } else - chkpointCand.remove(cand); + chkpointCand.remove(cand); } } } //collect checkpoints - ArrayList<Hop> tmp = collectCheckpoints(sb.get_hops()); - for( Hop chkpoint : tmp ) { - chkpointCand.put(chkpoint.getName(), chkpoint); + if( HopRewriteUtils.isLastLevelStatementBlock(sb) ) { + ArrayList<Hop> tmp = collectCheckpoints(sb.getHops()); + for( Hop chkpoint : tmp ) + chkpointCand.put(chkpoint.getName(), chkpoint); } } } @@ -218,9 +220,9 @@ public class IPAPassRemoveUnnecessaryCheckpoints extends IPAPass || sbs.get(0) instanceof ForStatementBlock) ) { //recursively process all dag roots - if( sbs.get(0).get_hops()!=null ) { - Hop.resetVisitStatus(sbs.get(0).get_hops()); - for( Hop root : sbs.get(0).get_hops() ) + if( sbs.get(0).getHops()!=null ) { + Hop.resetVisitStatus(sbs.get(0).getHops()); + for( Hop root : sbs.get(0).getHops() ) rRemoveCheckpointReadWrite(root); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 de12bb1..317f601 100644 --- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java +++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java @@ -353,7 +353,7 @@ public class InterProceduralAnalysis //remove updated constant scalars Recompiler.removeUpdatedScalars(callVars, sb); //old stats in, new stats out if updated - ArrayList<Hop> roots = sb.get_hops(); + ArrayList<Hop> roots = sb.getHops(); DMLProgram prog = sb.getDMLProg(); //replace scalar reads with literals Hop.resetVisitStatus(roots); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c6d74dd..360e261 100644 --- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java +++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java @@ -646,8 +646,8 @@ public class Recompiler { //recompile last-level program block instructions StatementBlock sb = pb.getStatementBlock(); - if( sb!=null && sb.get_hops()!=null ) { - pb.setInstructions(recompileHopsDagInstructions(sb, sb.get_hops())); + if( sb!=null && sb.getHops()!=null ) { + pb.setInstructions(recompileHopsDagInstructions(sb, sb.getHops())); } } } @@ -883,18 +883,18 @@ public class Recompiler /*&& !Recompiler.containsNonRecompileInstructions(tmp)*/ ) { tmp = Recompiler.recompileHopsDag( - sb, sb.get_hops(), vars, status, true, false, tid); + sb, sb.getHops(), vars, status, true, false, tid); pb.setInstructions( tmp ); //propagate stats across hops (should be executed on clone of vars) - Recompiler.extractDAGOutputStatistics(sb.get_hops(), vars); + Recompiler.extractDAGOutputStatistics(sb.getHops(), vars); //reset recompilation flags (w/ special handling functions) if( ParForProgramBlock.RESET_RECOMPILATION_FLAGs - && !containsRootFunctionOp(sb.get_hops()) + && !containsRootFunctionOp(sb.getHops()) && resetRecompile.isReset() ) { - Hop.resetRecompilationFlag(sb.get_hops(), ExecType.CP, resetRecompile); + Hop.resetRecompilationFlag(sb.getHops(), ExecType.CP, resetRecompile); sb.updateRecompilationFlag(); } } @@ -1278,7 +1278,7 @@ public class Recompiler //would be invalid with permutation matrix mult across multiple dags) if( sb != null ) { ArrayList<Instruction> tmp = pb.getInstructions(); - tmp = Recompiler.recompileHopsDag2Forced(sb, sb.get_hops(), tid, et); + tmp = Recompiler.recompileHopsDag2Forced(sb, sb.getHops(), tid, et); pb.setInstructions( tmp ); } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c56b2ed..d8acdf6 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/ProgramRewriter.java @@ -256,7 +256,7 @@ public class ProgramRewriter } else //generic (last-level) { - current.set_hops( rewriteHopDAG(current.get_hops(), state) ); + current.setHops( rewriteHopDAG(current.getHops(), state) ); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java index 7e4567d..fdaad10 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteCompressedReblock.java @@ -68,7 +68,7 @@ public class RewriteCompressedReblock extends StatementBlockRewriteRule { //check for inapplicable statement blocks if( !HopRewriteUtils.isLastLevelStatementBlock(sb) - || sb.get_hops() == null ) + || sb.getHops() == null ) return Arrays.asList(sb); //parse compression config @@ -78,10 +78,10 @@ public class RewriteCompressedReblock extends StatementBlockRewriteRule //perform compressed reblock rewrite if( compress.isEnabled() ) { - Hop.resetVisitStatus(sb.get_hops()); - for( Hop h : sb.get_hops() ) + Hop.resetVisitStatus(sb.getHops()); + for( Hop h : sb.getHops() ) injectCompressionDirective(h, compress, sb.getDMLProg()); - Hop.resetVisitStatus(sb.get_hops()); + Hop.resetVisitStatus(sb.getHops()); } return Arrays.asList(sb); } @@ -198,8 +198,8 @@ public class RewriteCompressedReblock extends StatementBlockRewriteRule if( fsb.variablesRead().containsAnyName(status.compMtx) ) status.usedInLoop = true; } - else if( sb.get_hops() != null ) { //generic (last-level) - ArrayList<Hop> roots = sb.get_hops(); + else if( sb.getHops() != null ) { //generic (last-level) + ArrayList<Hop> roots = sb.getHops(); Hop.resetVisitStatus(roots); //process entire HOP DAG starting from the roots for( Hop root : roots ) http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java index 7d01715..fce1fa1 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteForLoopVectorization.java @@ -119,8 +119,8 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule boolean rightScalar = false; boolean rowIx = false; //row or col - if( csb.get_hops()!=null && csb.get_hops().size()==1 ){ - Hop root = csb.get_hops().get(0); + if( csb.getHops()!=null && csb.getHops().size()==1 ){ + Hop root = csb.getHops().get(0); if( root.getDataType()==DataType.SCALAR && root.getInput().get(0) instanceof BinaryOp ) { BinaryOp bop = (BinaryOp) root.getInput().get(0); @@ -171,7 +171,7 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //apply rewrite if possible if( leftScalar || rightScalar ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); BinaryOp bop = (BinaryOp) root.getInput().get(0); Hop cast = bop.getInput().get( leftScalar?1:0 ); Hop ix = cast.getInput().get(0); @@ -218,9 +218,9 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //check for applicability boolean apply = false; boolean rowIx = false; //row or col - if( csb.get_hops()!=null && csb.get_hops().size()==1 ) + if( csb.getHops()!=null && csb.getHops().size()==1 ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); if( root.getDataType()==DataType.MATRIX && root.getInput().get(0) instanceof LeftIndexingOp ) { @@ -262,7 +262,7 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //apply rewrite if possible if( apply ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); LeftIndexingOp lix = (LeftIndexingOp) root.getInput().get(0); BinaryOp bop = (BinaryOp) lix.getInput().get(1); IndexingOp rix0 = (IndexingOp) bop.getInput().get(0); @@ -302,9 +302,9 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //check for applicability boolean apply = false; boolean rowIx = false; //row or col - if( csb.get_hops()!=null && csb.get_hops().size()==1 ) + if( csb.getHops()!=null && csb.getHops().size()==1 ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); if( root.getDataType()==DataType.MATRIX && root.getInput().get(0) instanceof LeftIndexingOp ) { @@ -326,7 +326,7 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //apply rewrite if possible if( apply ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); LeftIndexingOp lix = (LeftIndexingOp) root.getInput().get(0); UnaryOp uop = (UnaryOp) lix.getInput().get(1); IndexingOp rix = (IndexingOp) uop.getInput().get(0); @@ -362,9 +362,9 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //check for applicability boolean apply = false; boolean rowIx = false; //row or col - if( csb.get_hops()!=null && csb.get_hops().size()==1 ) + if( csb.getHops()!=null && csb.getHops().size()==1 ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); if( root.getDataType()==DataType.MATRIX && root.getInput().get(0) instanceof LeftIndexingOp ) { @@ -384,7 +384,7 @@ public class RewriteForLoopVectorization extends StatementBlockRewriteRule //apply rewrite if possible if( apply ) { - Hop root = csb.get_hops().get(0); + Hop root = csb.getHops().get(0); LeftIndexingOp lix = (LeftIndexingOp) root.getInput().get(0); IndexingOp rix = (IndexingOp) lix.getInput().get(1); int index1 = rowIx ? 2 : 4; http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 f838952..ddee8ab 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteInjectSparkLoopCheckpointing.java @@ -107,7 +107,7 @@ public class RewriteInjectSparkLoopCheckpointing extends StatementBlockRewriteRu livein.addVariable(var, read.getVariable(var)); liveout.addVariable(var, read.getVariable(var)); } - sb0.set_hops(hops); + sb0.setHops(hops); sb0.setLiveIn(livein); sb0.setLiveOut(liveout); sb0.setSplitDag(true); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c29820e..c4b3340 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMarkLoopVariablesUpdateInPlace.java @@ -114,8 +114,8 @@ public class RewriteMarkLoopVariablesUpdateInPlace extends StatementBlockRewrite ret &= rIsApplicableForUpdateInPlace(istmt.getElseBody(), varname); } else { - if( sb.get_hops() != null ) - for( Hop hop : sb.get_hops() ) + if( sb.getHops() != null ) + for( Hop hop : sb.getHops() ) ret &= isApplicableForUpdateInPlace(hop, varname); } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/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 c1a6332..8742ade 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteMergeBlockSequence.java @@ -72,8 +72,8 @@ public class RewriteMergeBlockSequence extends StatementBlockRewriteRule && (!hasFunctionOpRoot(sb1) || !hasFunctionIOConflict(sb1,sb2)) && (!hasFunctionOpRoot(sb2) || !hasFunctionIOConflict(sb2,sb1)) ) { - ArrayList<Hop> sb1Hops = sb1.get_hops(); - ArrayList<Hop> sb2Hops = sb2.get_hops(); + ArrayList<Hop> sb1Hops = sb1.getHops(); + ArrayList<Hop> sb2Hops = sb2.getHops(); //determine transient read inputs s2 Hop.resetVisitStatus(sb2Hops); @@ -162,19 +162,19 @@ public class RewriteMergeBlockSequence extends StatementBlockRewriteRule private static boolean hasFunctionOpRoot(StatementBlock sb) throws HopsException { - if( sb == null || sb.get_hops() == null ) + if( sb == null || sb.getHops() == null ) return false; boolean ret = false; - for( Hop root : sb.get_hops() ) + for( Hop root : sb.getHops() ) ret |= (root instanceof FunctionOp); return ret; } private static boolean hasExternalFunctionOpRoot(StatementBlock sb) throws HopsException { - if( sb == null || sb.get_hops() == null ) + if( sb == null || sb.getHops() == null ) return false; - for( Hop root : sb.get_hops() ) + for( Hop root : sb.getHops() ) if( root instanceof FunctionOp ) { FunctionStatementBlock fsb = sb.getDMLProg() .getFunctionStatementBlock(((FunctionOp)root).getFunctionKey()); @@ -195,7 +195,7 @@ public class RewriteMergeBlockSequence extends StatementBlockRewriteRule //collect all function output variables of sb1 HashSet<String> outSb1 = new HashSet<>(); - for( Hop root : sb1.get_hops() ) + for( Hop root : sb1.getHops() ) if( root instanceof FunctionOp ) outSb1.addAll(Arrays.asList(((FunctionOp)root).getOutputVariableNames())); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java index 7e7860e..6fbd953 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagDataDependentOperators.java @@ -75,15 +75,16 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite throws HopsException { //DAG splits not required for forced single node - if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE ) + if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE + || !HopRewriteUtils.isLastLevelStatementBlock(sb) ) return new ArrayList<>(Arrays.asList(sb)); ArrayList<StatementBlock> ret = new ArrayList<>(); //collect all unknown csv reads hops ArrayList<Hop> cand = new ArrayList<>(); - collectDataDependentOperators( sb.get_hops(), cand ); - Hop.resetVisitStatus(sb.get_hops()); + collectDataDependentOperators( sb.getHops(), cand ); + Hop.resetVisitStatus(sb.getHops()); //split hop dag on demand if( !cand.isEmpty() ) @@ -141,7 +142,7 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite if( parent != twrite ) HopRewriteUtils.replaceChildReference(parent, c, tread); else - sb.get_hops().remove(parent); + sb.getHops().remove(parent); } } @@ -187,10 +188,10 @@ public class RewriteSplitDagDataDependentOperators extends StatementBlockRewrite } //ensure disjoint operators across DAGs (prevent replicated operations) - handleReplicatedOperators( sb1hops, sb.get_hops(), sb1.liveOut(), sb.liveIn() ); + handleReplicatedOperators( sb1hops, sb.getHops(), sb1.liveOut(), sb.liveIn() ); //deep copy new dag (in order to prevent any dangling references) - sb1.set_hops(Recompiler.deepCopyHopsDag(sb1hops)); + sb1.setHops(Recompiler.deepCopyHopsDag(sb1hops)); sb1.updateRecompilationFlag(); sb1.setSplitDag(true); //avoid later merge by other rewrites http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java index e9a6407..5ec7cb0 100644 --- a/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java +++ b/src/main/java/org/apache/sysml/hops/rewrite/RewriteSplitDagUnknownCSVRead.java @@ -50,14 +50,15 @@ public class RewriteSplitDagUnknownCSVRead extends StatementBlockRewriteRule throws HopsException { //DAG splits not required for forced single node - if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE ) + if( DMLScript.rtplatform == RUNTIME_PLATFORM.SINGLE_NODE + || !HopRewriteUtils.isLastLevelStatementBlock(sb) ) return Arrays.asList(sb); ArrayList<StatementBlock> ret = new ArrayList<>(); //collect all unknown csv reads hops ArrayList<Hop> cand = new ArrayList<>(); - collectCSVReadHopsUnknownSize( sb.get_hops(), cand ); + collectCSVReadHopsUnknownSize( sb.getHops(), cand ); //split hop dag on demand if( !cand.isEmpty() ) @@ -117,7 +118,7 @@ public class RewriteSplitDagUnknownCSVRead extends StatementBlockRewriteRule } } - sb1.set_hops(sb1hops); + sb1.setHops(sb1hops); sb1.updateRecompilationFlag(); ret.add(sb1); //statement block with csv reblocks ret.add(sb); //statement block with remaining hops http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/DMLTranslator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/DMLTranslator.java b/src/main/java/org/apache/sysml/parser/DMLTranslator.java index 5a7f60e..71633c4 100644 --- a/src/main/java/org/apache/sysml/parser/DMLTranslator.java +++ b/src/main/java/org/apache/sysml/parser/DMLTranslator.java @@ -132,17 +132,9 @@ public class DMLTranslator // add the input variables for the function to input variable list FunctionStatement fstmt = (FunctionStatement)fblock.getStatement(0); - if (fblock.getNumStatements() > 1){ - LOG.error(fstmt.printErrorLocation() + "FunctionStatementBlock can only have 1 FunctionStatement"); - throw new LanguageException(fstmt.printErrorLocation() + "FunctionStatementBlock can only have 1 FunctionStatement"); - } - - for (DataIdentifier currVar : fstmt.getInputParams()) { - - if (currVar.getDataType() == DataType.SCALAR){ + for (DataIdentifier currVar : fstmt.getInputParams()) { + if (currVar.getDataType() == DataType.SCALAR) currVar.setDimensions(0, 0); - } - vs.addVariable(currVar.getName(), currVar); } fblock.validate(dmlp, vs, constVars, false); @@ -251,7 +243,7 @@ public class DMLTranslator { // Step 1: construct hops for all functions // for each namespace, handle function program blocks - for (String namespaceKey : dmlp.getNamespaces().keySet()){ + for (String namespaceKey : dmlp.getNamespaces().keySet()){ for (String fname: dmlp.getFunctionStatementBlocks(namespaceKey).keySet()) { FunctionStatementBlock current = dmlp.getFunctionStatementBlock(namespaceKey, fname); constructHops(current); @@ -337,15 +329,10 @@ public class DMLTranslator WhileStatementBlock wsb = (WhileStatementBlock)sb; WhileStatement whileStmt = (WhileStatement)wsb.getStatement(0); ArrayList<StatementBlock> body = whileStmt.getBody(); - - if (sb.get_hops() != null && !sb.get_hops().isEmpty()) { - LOG.error(sb.printBlockErrorLocation() + "WhileStatementBlock should not have hops"); - throw new HopsException(sb.printBlockErrorLocation() + "WhileStatementBlock should not have hops"); - } + // step through stmt blocks in while stmt body - for (StatementBlock stmtBlock : body){ + for (StatementBlock stmtBlock : body) ret |= constructLops(stmtBlock); - } // handle while stmt predicate Lop l = wsb.getPredicateHops().constructLops(); @@ -359,11 +346,7 @@ public class DMLTranslator IfStatement ifStmt = (IfStatement)isb.getStatement(0); ArrayList<StatementBlock> ifBody = ifStmt.getIfBody(); ArrayList<StatementBlock> elseBody = ifStmt.getElseBody(); - - if (sb.get_hops() != null && !sb.get_hops().isEmpty()){ - LOG.error(sb.printBlockErrorLocation() + "IfStatementBlock should not have hops"); - throw new HopsException(sb.printBlockErrorLocation() + "IfStatementBlock should not have hops"); - } + // step through stmt blocks in if stmt ifBody for (StatementBlock stmtBlock : ifBody) ret |= constructLops(stmtBlock); @@ -383,11 +366,7 @@ public class DMLTranslator ForStatementBlock fsb = (ForStatementBlock) sb; ForStatement fs = (ForStatement)sb.getStatement(0); ArrayList<StatementBlock> body = fs.getBody(); - - if (sb.get_hops() != null && !sb.get_hops().isEmpty() ) { - LOG.error(sb.printBlockErrorLocation() + "ForStatementBlock should not have hops"); - throw new HopsException(sb.printBlockErrorLocation() + "ForStatementBlock should not have hops"); - } + // step through stmt blocks in FOR stmt body for (StatementBlock stmtBlock : body) ret |= constructLops(stmtBlock); @@ -411,10 +390,7 @@ public class DMLTranslator FunctionStatementBlock fsb = (FunctionStatementBlock) sb; FunctionStatement functStmt = (FunctionStatement)sb.getStatement(0); ArrayList<StatementBlock> body = functStmt.getBody(); - if (sb.get_hops() != null && !sb.get_hops().isEmpty()) { - LOG.error(sb.printBlockErrorLocation() + "FunctionStatementBlock should not have hops"); - throw new HopsException(sb.printBlockErrorLocation() + "FunctionStatementBlock should not have hops"); - } + // step through stmt blocks in while stmt body for( StatementBlock stmtBlock : body ) ret |= constructLops(stmtBlock); @@ -424,10 +400,10 @@ public class DMLTranslator // handle default case for regular StatementBlock else { - if (sb.get_hops() == null) - sb.set_hops(new ArrayList<Hop>()); + if (sb.getHops() == null) + sb.setHops(new ArrayList<Hop>()); ArrayList<Lop> lops = new ArrayList<>(); - for (Hop hop : sb.get_hops()) + for (Hop hop : sb.getHops()) lops.add(hop.constructLops()); sb.setLops(lops); ret |= sb.updateRecompilationFlag(); @@ -503,10 +479,6 @@ public class DMLTranslator //// process the body of the while statement block //// WhileStatementBlock wsb = (WhileStatementBlock)sb; - if (wsb.getNumStatements() > 1){ - LOG.error(wsb.printBlockErrorLocation() + "WhileStatementBlock should only have 1 statement"); - throw new LopsException(wsb.printBlockErrorLocation() + "WhileStatementBlock should only have 1 statement"); - } WhileStatement wstmt = (WhileStatement)wsb.getStatement(0); for (StatementBlock sblock : wstmt.getBody()){ @@ -515,13 +487,6 @@ public class DMLTranslator rtpb.addProgramBlock(childBlock); } - // check there are actually Lops in to process (loop stmt body will not have any) - if (wsb.getLops() != null && !wsb.getLops().isEmpty() ){ - LOG.error(wsb.printBlockErrorLocation() + "WhileStatementBlock should have no Lops"); - throw new LopsException(wsb.printBlockErrorLocation() + "WhileStatementBlock should have no Lops"); - } - - retPB = rtpb; // add statement block @@ -550,10 +515,6 @@ public class DMLTranslator // process the body of the if statement block IfStatementBlock isb = (IfStatementBlock)sb; - if (isb.getNumStatements() > 1){ - LOG.error(isb.printBlockErrorLocation() + "IfStatementBlock should have only 1 statement"); - throw new LopsException(isb.printBlockErrorLocation() + "IfStatementBlock should have only 1 statement"); - } IfStatement istmt = (IfStatement)isb.getStatement(0); // process the if body @@ -568,12 +529,6 @@ public class DMLTranslator rtpb.addProgramBlockElseBody(childBlock); } - // check there are actually Lops in to process (loop stmt body will not have any) - if (isb.getLops() != null && !isb.getLops().isEmpty() ){ - LOG.error(isb.printBlockErrorLocation() + "IfStatementBlock should have no Lops"); - throw new LopsException(isb.printBlockErrorLocation() + "IfStatementBlock should have no Lops"); - } - retPB = rtpb; //post processing for generating missing instructions @@ -609,19 +564,16 @@ public class DMLTranslator ArrayList<Instruction> incrementInstructions = incrementDag.getJobs(null, config); // create for program block - String sbName = null; ForProgramBlock rtpb = null; IterablePredicate iterPred = fsb.getIterPredicate(); if( sb instanceof ParForStatementBlock && ConfigurationManager.isParallelParFor() ) { - sbName = "ParForStatementBlock"; rtpb = new ParForProgramBlock(prog, iterPred.getIterVar().getName(), iterPred.getParForParams(), ((ParForStatementBlock)sb).getResultVariables()); ParForProgramBlock pfrtpb = (ParForProgramBlock)rtpb; pfrtpb.setStatementBlock((ParForStatementBlock)sb); //used for optimization and creating unscoped variables } else {//ForStatementBlock - sbName = "ForStatementBlock"; rtpb = new ForProgramBlock(prog, iterPred.getIterVar().getName()); } @@ -630,22 +582,12 @@ public class DMLTranslator rtpb.setIncrementInstructions(incrementInstructions); // process the body of the for statement block - if (fsb.getNumStatements() > 1){ - LOG.error(fsb.printBlockErrorLocation() + " " + sbName + " should have 1 statement" ); - throw new LopsException(fsb.printBlockErrorLocation() + " " + sbName + " should have 1 statement" ); - } ForStatement fs = (ForStatement)fsb.getStatement(0); for (StatementBlock sblock : fs.getBody()){ ProgramBlock childBlock = createRuntimeProgramBlock(prog, sblock, config); rtpb.addProgramBlock(childBlock); } - // check there are actually Lops in to process (loop stmt body will not have any) - if (fsb.getLops() != null && !fsb.getLops().isEmpty()){ - LOG.error(fsb.printBlockErrorLocation() + sbName + " should have no Lops" ); - throw new LopsException(fsb.printBlockErrorLocation() + sbName + " should have no Lops" ); - } - retPB = rtpb; // add statement block @@ -659,10 +601,6 @@ public class DMLTranslator else if (sb instanceof FunctionStatementBlock){ FunctionStatementBlock fsb = (FunctionStatementBlock)sb; - if (fsb.getNumStatements() > 1){ - LOG.error(fsb.printBlockErrorLocation() + "FunctionStatementBlock should only have 1 statement"); - throw new LopsException(fsb.printBlockErrorLocation() + "FunctionStatementBlock should only have 1 statement"); - } FunctionStatement fstmt = (FunctionStatement)fsb.getStatement(0); FunctionProgramBlock rtpb = null; @@ -670,17 +608,11 @@ public class DMLTranslator // create external function program block String execType = ((ExternalFunctionStatement) fstmt) - .getOtherParams().get(ExternalFunctionStatement.EXEC_TYPE); + .getOtherParams().get(ExternalFunctionStatement.EXEC_TYPE); boolean isCP = (execType.equals(ExternalFunctionStatement.IN_MEMORY)) ? true : false; - String scratchSpaceLoc = null; - try { - scratchSpaceLoc = config.getTextValue(DMLConfig.SCRATCH_SPACE); - } catch (Exception e){ - LOG.error(fsb.printBlockErrorLocation() + "could not retrieve parameter " + DMLConfig.SCRATCH_SPACE + " from DMLConfig"); - } StringBuilder buff = new StringBuilder(); - buff.append(scratchSpaceLoc); + buff.append(config.getTextValue(DMLConfig.SCRATCH_SPACE)); buff.append(Lop.FILE_SEPARATOR); buff.append(Lop.PROCESS_PREFIX); buff.append(DMLScript.getUUID()); @@ -697,7 +629,7 @@ public class DMLTranslator rtpb = new ExternalFunctionProgramBlockCP(prog, fstmt.getInputParams(), fstmt.getOutputParams(), ((ExternalFunctionStatement) fstmt).getOtherParams(), - basedir ); + basedir ); } else { @@ -922,12 +854,12 @@ public class DMLTranslator public void refreshMemEstimates(StatementBlock current) throws ParseException, HopsException { MemoTable memo = new MemoTable(); - ArrayList<Hop> hopsDAG = current.get_hops(); - if (hopsDAG != null && !hopsDAG.isEmpty()) { - Iterator<Hop> iter = hopsDAG.iterator(); - while (iter.hasNext()) { - iter.next().refreshMemEstimates(memo); - } + + if( HopRewriteUtils.isLastLevelStatementBlock(current) ) { + ArrayList<Hop> hopsDAG = current.getHops(); + if (hopsDAG != null && !hopsDAG.isEmpty()) + for( Hop hop : hopsDAG ) + hop.refreshMemEstimates(memo); } if (current instanceof FunctionStatementBlock) { @@ -937,8 +869,7 @@ public class DMLTranslator refreshMemEstimates(sb); } } - - if (current instanceof WhileStatementBlock) { + else if (current instanceof WhileStatementBlock) { // handle predicate WhileStatementBlock wstb = (WhileStatementBlock) current; wstb.getPredicateHops().refreshMemEstimates(new MemoTable()); @@ -951,8 +882,7 @@ public class DMLTranslator refreshMemEstimates(sb); } } - - if (current instanceof IfStatementBlock) { + else if (current instanceof IfStatementBlock) { // handle predicate IfStatementBlock istb = (IfStatementBlock) current; istb.getPredicateHops().refreshMemEstimates(new MemoTable()); @@ -968,8 +898,7 @@ public class DMLTranslator refreshMemEstimates(sb); } } - - if (current instanceof ForStatementBlock) { + else if (current instanceof ForStatementBlock) { // handle predicate ForStatementBlock fsb = (ForStatementBlock) current; if (fsb.getFromHops() != null) @@ -1008,51 +937,40 @@ public class DMLTranslator public static void resetHopsDAGVisitStatus(StatementBlock current) throws ParseException, HopsException { - ArrayList<Hop> hopsDAG = current.get_hops(); - if (hopsDAG != null && !hopsDAG.isEmpty() ) { - Hop.resetVisitStatus(hopsDAG); + if( HopRewriteUtils.isLastLevelStatementBlock(current) ) { + ArrayList<Hop> hopsDAG = current.getHops(); + if (hopsDAG != null && !hopsDAG.isEmpty() ) { + Hop.resetVisitStatus(hopsDAG); + } } if (current instanceof FunctionStatementBlock) { - FunctionStatement fstmt = (FunctionStatement)current.getStatement(0); for (StatementBlock sb : fstmt.getBody()){ resetHopsDAGVisitStatus(sb); } } - - if (current instanceof WhileStatementBlock) { + else if (current instanceof WhileStatementBlock) { // handle predicate WhileStatementBlock wstb = (WhileStatementBlock) current; wstb.getPredicateHops().resetVisitStatus(); - - if (wstb.getNumStatements() > 1) - LOG.debug("While stmt block has more than 1 stmt"); - WhileStatement ws = (WhileStatement)wstb.getStatement(0); - for (StatementBlock sb : ws.getBody()){ + WhileStatement ws = (WhileStatement)wstb.getStatement(0); + for (StatementBlock sb : ws.getBody()) resetHopsDAGVisitStatus(sb); - } } - - if (current instanceof IfStatementBlock) { + else if (current instanceof IfStatementBlock) { // handle predicate IfStatementBlock istb = (IfStatementBlock) current; istb.getPredicateHops().resetVisitStatus(); - if (istb.getNumStatements() > 1) - LOG.debug("If statement block has more than 1 stmt"); IfStatement is = (IfStatement)istb.getStatement(0); - - for (StatementBlock sb : is.getIfBody()){ + for (StatementBlock sb : is.getIfBody()) resetHopsDAGVisitStatus(sb); - } - for (StatementBlock sb : is.getElseBody()){ + for (StatementBlock sb : is.getElseBody()) resetHopsDAGVisitStatus(sb); - } } - - if (current instanceof ForStatementBlock) { + else if (current instanceof ForStatementBlock) { // handle predicate ForStatementBlock fsb = (ForStatementBlock) current; if (fsb.getFromHops() != null) @@ -1090,7 +1008,7 @@ public class DMLTranslator public void resetLopsDAGVisitStatus(StatementBlock current) throws HopsException { - ArrayList<Hop> hopsDAG = current.get_hops(); + ArrayList<Hop> hopsDAG = current.getHops(); if (hopsDAG != null && !hopsDAG.isEmpty() ) { Iterator<Hop> iter = hopsDAG.iterator(); @@ -1474,7 +1392,7 @@ public class DMLTranslator } sb.updateLiveVariablesOut(updatedLiveOut); - sb.set_hops(output); + sb.setHops(output); } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/ForStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/ForStatementBlock.java b/src/main/java/org/apache/sysml/parser/ForStatementBlock.java index 686ce7a..ae1aa75 100644 --- a/src/main/java/org/apache/sysml/parser/ForStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/ForStatementBlock.java @@ -265,16 +265,7 @@ public class ForStatementBlock extends StatementBlock return loReturn; } - - @Override - public ArrayList<Hop> get_hops() throws HopsException { - if (_hops != null && !_hops.isEmpty()){ - LOG.error(this.printBlockErrorLocation() + "there should be no HOPs associated with the ForStatementBlock"); - throw new HopsException(this.printBlockErrorLocation() + "there should be no HOPs associated with the ForStatementBlock"); - } - return _hops; - } - + public void setFromHops(Hop hops) { _fromHops = hops; } public void setToHops(Hop hops) { _toHops = hops; } public void setIncrementHops(Hop hops) { _incrementHops = hops; } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java b/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java index 0f91d00..35ec6d4 100644 --- a/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/FunctionStatementBlock.java @@ -23,8 +23,6 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; -import org.apache.sysml.hops.Hop; -import org.apache.sysml.hops.HopsException; import org.apache.sysml.hops.FunctionOp.FunctionType; import org.apache.sysml.parser.Expression.DataType; import org.apache.sysml.parser.Expression.ValueType; @@ -267,17 +265,6 @@ public class FunctionStatementBlock extends StatementBlock } @Override - public ArrayList<Hop> get_hops() throws HopsException { - - if (_hops != null && _hops.size() > 0){ - LOG.error(this.printBlockErrorLocation() + "there should be no HOPs associated with the FunctionStatementBlock"); - throw new HopsException(this.printBlockErrorLocation() + "there should be no HOPs associated with the FunctionStatementBlock"); - } - - return _hops; - } - - @Override public VariableSet analyze(VariableSet loPassed) throws LanguageException{ LOG.error(this.printBlockErrorLocation() + "Both liveIn and liveOut variables need to be specified for liveness analysis for FunctionStatementBlock"); throw new LanguageException(this.printBlockErrorLocation() + "Both liveIn and liveOut variables need to be specified for liveness analysis for FunctionStatementBlock"); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/IfStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java index 6803eb2..00295d1 100644 --- a/src/main/java/org/apache/sysml/parser/IfStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/IfStatementBlock.java @@ -455,15 +455,6 @@ public class IfStatementBlock extends StatementBlock _predicateHops = hops; } - @Override - public ArrayList<Hop> get_hops() throws HopsException{ - if (_hops != null && _hops.size() > 0){ - LOG.error(this.printBlockErrorLocation() + "error there should be no HOPs in IfStatementBlock"); - throw new HopsException(this.printBlockErrorLocation() + "error there should be no HOPs in IfStatementBlock"); - } - return _hops; - } - public Hop getPredicateHops(){ return _predicateHops; } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/StatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/StatementBlock.java b/src/main/java/org/apache/sysml/parser/StatementBlock.java index c2a3e01..f7f6426 100644 --- a/src/main/java/org/apache/sysml/parser/StatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/StatementBlock.java @@ -114,8 +114,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo return _statements.get(i); } - public ArrayList<Statement> getStatements() - { + public ArrayList<Statement> getStatements() { return _statements; } @@ -124,7 +123,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo _statements = s; } - public ArrayList<Hop> get_hops() throws HopsException { + public ArrayList<Hop> getHops() { return _hops; } @@ -132,7 +131,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo return _lops; } - public void set_hops(ArrayList<Hop> hops) { + public void setHops(ArrayList<Hop> hops) { _hops = hops; } @@ -1047,7 +1046,7 @@ public class StatementBlock extends LiveVariableAnalysis implements ParseInfo public boolean updateRecompilationFlag() throws HopsException { return (_requiresRecompile = ConfigurationManager.isDynamicRecompilation() - && Recompiler.requiresRecompilation(get_hops())); + && Recompiler.requiresRecompilation(getHops())); } public boolean requiresRecompilation() { http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java b/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java index 05e2c2c..d34353a 100644 --- a/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/WhileStatementBlock.java @@ -247,17 +247,6 @@ public class WhileStatementBlock extends StatementBlock _predicateHops = hops; } - @Override - public ArrayList<Hop> get_hops() throws HopsException { - - if (_hops != null && !_hops.isEmpty()){ - LOG.error(this._statements.get(0).printErrorLocation() + "there should be no HOPs associated with the WhileStatementBlock"); - throw new HopsException(this._statements.get(0).printErrorLocation() + "there should be no HOPs associated with the WhileStatementBlock"); - } - - return _hops; - } - public Hop getPredicateHops(){ return _predicateHops; } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java b/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java index 34ba2fc..fd6909d 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/ProgramBlock.java @@ -145,7 +145,7 @@ public class ProgramBlock implements ParseInfo && _sb.requiresRecompilation() ) { tmp = Recompiler.recompileHopsDag( - _sb, _sb.get_hops(), ec.getVariables(), null, false, true, _tid); + _sb, _sb.getHops(), ec.getVariables(), null, false, true, _tid); } if( DMLScript.STATISTICS ){ long t1 = System.nanoTime(); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java index 3e4568b..ea3deb5 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/ProgramConverter.java @@ -543,7 +543,7 @@ public class ProgramConverter { if( ConfigurationManager.getCompilerConfigFlag(ConfigType.ALLOW_PARALLEL_DYN_RECOMPILATION) && sb != null //forced deep copy for function recompilation - && (Recompiler.requiresRecompilation( sb.get_hops() ) || forceDeepCopy) ) + && (Recompiler.requiresRecompilation( sb.getHops() ) || forceDeepCopy) ) { //create new statement (shallow copy livein/liveout for recompile, line numbers for explain) ret = new StatementBlock(); @@ -555,10 +555,10 @@ public class ProgramConverter ret.setReadVariables( sb.variablesRead() ); //deep copy hops dag for concurrent recompile - ArrayList<Hop> hops = Recompiler.deepCopyHopsDag( sb.get_hops() ); + ArrayList<Hop> hops = Recompiler.deepCopyHopsDag( sb.getHops() ); if( !plain ) Recompiler.updateFunctionNames( hops, pid ); - ret.set_hops( hops ); + ret.setHops( hops ); ret.updateRecompilationFlag(); } else http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java index d5b990b..69ad37a 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreeConverter.java @@ -459,7 +459,7 @@ public class OptTreeConverter //process all hops node = new OptNode(NodeType.GENERIC); _hlMap.putProgMapping(sb, pb, node); - node.addChilds( createAbstractOptNodes(sb.get_hops(), vars, memo) ); + node.addChilds( createAbstractOptNodes(sb.getHops(), vars, memo) ); node.setExecType(ExecType.CP); node.setLineNumbers(sb.getBeginLine(), sb.getEndLine()); http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java index 597b7c0..28368c7 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptTreePlanChecker.java @@ -117,7 +117,7 @@ public class OptTreePlanChecker } else { - checkHopDagCorrectness(prog, dprog, sb.get_hops(), pb.getInstructions(), fnStack); + checkHopDagCorrectness(prog, dprog, sb.getHops(), pb.getInstructions(), fnStack); //checkLinksProgramStatementBlock(pb, sb); } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java index 1294809..eca87da 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerRuleBased.java @@ -773,7 +773,7 @@ public class OptimizerRuleBased extends Optimizer //construct new instructions ArrayList<Instruction> newInst = Recompiler.recompileHopsDag( - sb, sb.get_hops(), vars, null, false, false, 0); + sb, sb.getHops(), vars, null, false, false, 0); pb.setInstructions( newInst ); //reset all rix estimated (modified by recompile) http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java index 12a4ccb..98b104f 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/ProgramRecompiler.java @@ -164,17 +164,17 @@ public class ProgramRecompiler { //process actual hops boolean ret = false; - Hop.resetVisitStatus(sb.get_hops()); + Hop.resetVisitStatus(sb.getHops()); if( force ) { //set forced execution type - for( Hop h : sb.get_hops() ) + for( Hop h : sb.getHops() ) ret |= rFindAndSetCPIndexingHOP(h, var); } else { //release forced execution type - for( Hop h : sb.get_hops() ) + for( Hop h : sb.getHops() ) ret |= rFindAndReleaseIndexingHOP(h, var); } @@ -183,7 +183,7 @@ public class ProgramRecompiler { //construct new instructions ArrayList<Instruction> newInst = Recompiler.recompileHopsDag( - sb, sb.get_hops(), ec.getVariables(), null, true, false, 0); + sb, sb.getHops(), ec.getVariables(), null, true, false, 0); pb.setInstructions( newInst ); } } @@ -245,7 +245,7 @@ public class ProgramRecompiler } else //last level block { - ArrayList<Hop> hops = sb.get_hops(); + ArrayList<Hop> hops = sb.getHops(); if( hops != null ) { //replace constant literals http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/utils/Explain.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/utils/Explain.java b/src/main/java/org/apache/sysml/utils/Explain.java index 6a9d696..b72fe99 100644 --- a/src/main/java/org/apache/sysml/utils/Explain.java +++ b/src/main/java/org/apache/sysml/utils/Explain.java @@ -617,7 +617,7 @@ public class Explain if (sb.requiresRecompilation()) { addSubGraphHeader(builder, withSubgraph); } - ArrayList<Hop> hopsDAG = sb.get_hops(); + ArrayList<Hop> hopsDAG = sb.getHops(); if (hopsDAG != null && !hopsDAG.isEmpty()) { Hop.resetVisitStatus(hopsDAG); for (Hop hop : hopsDAG) @@ -710,7 +710,7 @@ public class Explain // For generic StatementBlock builder.append(offset); builder.append("GENERIC (lines "+sb.getBeginLine()+"-"+sb.getEndLine()+") [recompile=" + sb.requiresRecompilation() + "]\n"); - ArrayList<Hop> hopsDAG = sb.get_hops(); + ArrayList<Hop> hopsDAG = sb.getHops(); if( hopsDAG != null && !hopsDAG.isEmpty() ) { Hop.resetVisitStatus(hopsDAG); for (Hop hop : hopsDAG) http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java index b3e4ae7..934967e 100644 --- a/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java +++ b/src/main/java/org/apache/sysml/yarn/ropt/GridEnumerationMemory.java @@ -130,9 +130,9 @@ public class GridEnumerationMemory extends GridEnumeration else { StatementBlock sb = pb.getStatementBlock(); - if( sb != null && sb.get_hops() != null ){ - Hop.resetVisitStatus(sb.get_hops()); - for( Hop hop : sb.get_hops() ) + if( sb != null && sb.getHops() != null ){ + Hop.resetVisitStatus(sb.getHops()); + for( Hop hop : sb.getHops() ) getMemoryEstimates(hop, mem); } } http://git-wip-us.apache.org/repos/asf/systemml/blob/c04929fa/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java index c5cabbe..43030da 100644 --- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java +++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java @@ -256,7 +256,7 @@ public class ResourceOptimizer { StatementBlock sb = pb.getStatementBlock(); ArrayList<Instruction> inst = Recompiler.recompileHopsDag( - sb, sb.get_hops(), new LocalVariableMap(), null, false, false, 0); + sb, sb.getHops(), new LocalVariableMap(), null, false, false, 0); pb.setInstructions( inst ); B.add(pb); _cntCompilePB ++; @@ -337,7 +337,7 @@ public class ResourceOptimizer { StatementBlock sb = pb.getStatementBlock(); ArrayList<Instruction> inst = Recompiler.recompileHopsDag( - sb, sb.get_hops(), new LocalVariableMap(), null, false, false, 0); + sb, sb.getHops(), new LocalVariableMap(), null, false, false, 0); inst = annotateMRJobInstructions(inst, cp, mr); pb.setInstructions( inst ); } @@ -388,7 +388,7 @@ public class ResourceOptimizer double val = 0; if( COST_INDIVIDUAL_BLOCKS ) { LocalVariableMap vars = new LocalVariableMap(); - collectReadVariables(pb.getStatementBlock().get_hops(), vars); + collectReadVariables(pb.getStatementBlock().getHops(), vars); ExecutionContext ec = ExecutionContextFactory.createContext(false, null); ec.setVariables(vars); val = CostEstimationWrapper.getTimeEstimate(pb, ec, false); @@ -499,7 +499,7 @@ public class ResourceOptimizer else //last-level program blocks { StatementBlock sb = pb.getStatementBlock(); - return pruneHasOnlyUnknownMR(sb.get_hops()); + return pruneHasOnlyUnknownMR(sb.getHops()); } }