Repository: systemml Updated Branches: refs/heads/master 45a93396a -> aa253eb7e
[SYSTEMML-2294] Fix robustness constrained parfor optimizer (parameters) This patch fixes a subtle bug of parameter handling for the CONSTRAINED parfor optimizer (which optimizes around user-provided forced parameters). Although all parameters are supposed to be case-insensitive, when used as "constrained" for example all unspecified parameters where replaced with defaults which left the constrained optimizer with no room for decisions. Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/b65f8ba3 Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/b65f8ba3 Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/b65f8ba3 Branch: refs/heads/master Commit: b65f8ba3349305bac48f0e498b891e9989a2fa5c Parents: 45a9339 Author: Matthias Boehm <[email protected]> Authored: Tue May 1 17:28:22 2018 -0700 Committer: Matthias Boehm <[email protected]> Committed: Tue May 1 17:28:22 2018 -0700 ---------------------------------------------------------------------- .../java/org/apache/sysml/parser/ParForStatementBlock.java | 7 ++++--- .../controlprogram/parfor/opt/OptimizerConstrained.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/b65f8ba3/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java index dee1384..1de4bf3 100644 --- a/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java +++ b/src/main/java/org/apache/sysml/parser/ParForStatementBlock.java @@ -205,7 +205,8 @@ public class ParForStatementBlock extends ForStatementBlock //set defaults for all non-specified values //(except if CONSTRAINT optimizer, in order to distinguish specified parameters) - boolean constrained = (params.containsKey( OPT_MODE ) && params.get( OPT_MODE ).equals(POptMode.CONSTRAINED.toString())); + boolean constrained = (params.containsKey( OPT_MODE ) + && params.get( OPT_MODE ).equalsIgnoreCase(POptMode.CONSTRAINED.name())); for( String key : _paramNames ) if( !params.containsKey(key) ) { @@ -214,7 +215,7 @@ public class ParForStatementBlock extends ForStatementBlock } //special treatment for degree of parallelism else if( key.equals(PAR) && params.containsKey(EXEC_MODE) - && params.get(EXEC_MODE).equals(PExecMode.REMOTE_MR.toString())) + && params.get(EXEC_MODE).equalsIgnoreCase(PExecMode.REMOTE_MR.name())) { int maxPMap = InfrastructureAnalyzer.getRemoteParallelMapTasks(); //correction max number of reducers on yarn clusters @@ -223,7 +224,7 @@ public class ParForStatementBlock extends ForStatementBlock params.put(key, String.valueOf(maxPMap)); } else if( key.equals(PAR) && params.containsKey(EXEC_MODE) - && params.get(EXEC_MODE).equals(PExecMode.REMOTE_MR_DP.toString()) ) + && params.get(EXEC_MODE).equalsIgnoreCase(PExecMode.REMOTE_MR_DP.name()) ) { int maxPRed = InfrastructureAnalyzer.getRemoteParallelReduceTasks(); //correction max number of reducers on yarn clusters http://git-wip-us.apache.org/repos/asf/systemml/blob/b65f8ba3/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerConstrained.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerConstrained.java b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerConstrained.java index f523cdc..3864004 100644 --- a/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerConstrained.java +++ b/src/main/java/org/apache/sysml/runtime/controlprogram/parfor/opt/OptimizerConstrained.java @@ -312,7 +312,7 @@ public class OptimizerConstrained extends OptimizerRuleBased protected void rewriteSetTaskPartitioner(OptNode pn, boolean flagNested, boolean flagLIX) { // constraint awareness - if( !pn.getParam(ParamType.TASK_PARTITIONER).equals(PTaskPartitioner.UNSPECIFIED.toString()) ) + if( !pn.getParam(ParamType.TASK_PARTITIONER).equals(PTaskPartitioner.UNSPECIFIED.name()) ) { ParForProgramBlock pfpb = (ParForProgramBlock) OptTreeConverter .getAbstractPlanMapping().getMappedProg(pn.getID())[1]; @@ -342,7 +342,7 @@ public class OptimizerConstrained extends OptimizerRuleBased @Override protected void rewriteSetResultMerge( OptNode n, LocalVariableMap vars, boolean inLocal ) { // constraint awareness - if( !n.getParam(ParamType.RESULT_MERGE).equals(PResultMerge.UNSPECIFIED.toString()) ) + if( !n.getParam(ParamType.RESULT_MERGE).equals(PResultMerge.UNSPECIFIED.name()) ) { ParForProgramBlock pfpb = (ParForProgramBlock) OptTreeConverter .getAbstractPlanMapping().getMappedProg(n.getID())[1];
