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];

Reply via email to