[SYSTEMML-1555] Decouple literal replacement (scalar-only, in-place)

So far full literal replacement was only applied for recompilations that
are not in-place, i.e., compilations that work over a deep copy of the
hop dag. Furthermore, we always applied full literal replacement
including the replacement of small matrix operations with its scalar
results.

This patch decouples these aspects in order to allow fine-grained
external control over literal replacement.

Furthermore, this patch also fixes the codegen MSVM and L2SVM tests to
account for the recently changed CLI command line argument parsing.


Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/c8007f45
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/c8007f45
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/c8007f45

Branch: refs/heads/master
Commit: c8007f4548c0f0f0a5f7ba4f8c785871b6d31fe8
Parents: edd3491
Author: Matthias Boehm <mboe...@gmail.com>
Authored: Sun Apr 23 00:16:46 2017 -0700
Committer: Matthias Boehm <mboe...@gmail.com>
Committed: Sun Apr 23 00:16:46 2017 -0700

----------------------------------------------------------------------
 .../sysml/hops/codegen/SpoofCompiler.java       |  4 +-
 .../hops/recompile/LiteralReplacement.java      | 22 ++++----
 .../apache/sysml/hops/recompile/Recompiler.java | 54 ++++++++++++--------
 .../runtime/controlprogram/ProgramBlock.java    |  6 ++-
 .../parfor/opt/OptimizerRuleBased.java          |  3 +-
 .../parfor/opt/ProgramRecompiler.java           | 10 ++--
 .../sysml/yarn/ropt/ResourceOptimizer.java      | 38 +++++++++-----
 .../functions/codegen/AlgorithmL2SVM.java       |  2 +-
 .../functions/codegen/AlgorithmMSVM.java        |  2 +-
 9 files changed, 85 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 816b7ae..aa5e7e3 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/SpoofCompiler.java
@@ -293,7 +293,7 @@ public class SpoofCompiler
        {
                //create copy of hop dag, call codegen, and generate 
instructions
                return Recompiler.recompileHopsDag(sb, roots, 
-                       new LocalVariableMap(), new RecompileStatus(), false, 
0);
+                       new LocalVariableMap(), new RecompileStatus(), false, 
false, 0);
        }
        
        public static ArrayList<Instruction> generateCodeFromHopDAGsToInst(Hop 
root) 
@@ -301,7 +301,7 @@ public class SpoofCompiler
        {
                //create copy of hop dag, call codegen, and generate 
instructions
                return Recompiler.recompileHopsDag(root, 
-                       new LocalVariableMap(), new RecompileStatus(), false, 
0);
+                       new LocalVariableMap(), new RecompileStatus(), false, 
false, 0);
        }
        
        

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 f539abc..d7b97e9 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/LiteralReplacement.java
@@ -50,7 +50,7 @@ public class LiteralReplacement
        private static final long REPLACE_LITERALS_MAX_MATRIX_SIZE = 1000000; 
//10^6 cells (8MB)
        private static final boolean REPORT_LITERAL_REPLACE_OPS_STATS = true;   
        
-       protected static void rReplaceLiterals( Hop hop, LocalVariableMap vars 
) 
+       protected static void rReplaceLiterals( Hop hop, LocalVariableMap vars, 
boolean scalarsOnly ) 
                throws DMLRuntimeException
        {
                if( hop.isVisited() )
@@ -68,10 +68,12 @@ public class LiteralReplacement
                                lit = (lit==null) ? replaceLiteralScalarRead(c, 
vars) : lit;
                                lit = (lit==null) ? 
replaceLiteralValueTypeCastScalarRead(c, vars) : lit;
                                lit = (lit==null) ? 
replaceLiteralValueTypeCastLiteral(c, vars) : lit;
-                               lit = (lit==null) ? 
replaceLiteralDataTypeCastMatrixRead(c, vars) : lit;
-                               lit = (lit==null) ? 
replaceLiteralValueTypeCastRightIndexing(c, vars) : lit;
-                               lit = (lit==null) ? 
replaceLiteralFullUnaryAggregate(c, vars) : lit;
-                               lit = (lit==null) ? 
replaceLiteralFullUnaryAggregateRightIndexing(c, vars) : lit;
+                               if( !scalarsOnly ) {
+                                       lit = (lit==null) ? 
replaceLiteralDataTypeCastMatrixRead(c, vars) : lit;
+                                       lit = (lit==null) ? 
replaceLiteralValueTypeCastRightIndexing(c, vars) : lit;
+                                       lit = (lit==null) ? 
replaceLiteralFullUnaryAggregate(c, vars) : lit;
+                                       lit = (lit==null) ? 
replaceLiteralFullUnaryAggregateRightIndexing(c, vars) : lit;
+                               }
                                
                                //replace hop w/ literal on demand
                                if( lit != null )
@@ -88,15 +90,13 @@ public class LiteralReplacement
                                                }
                                        }
                                        else { //current hop is only parent
-                                               
HopRewriteUtils.removeChildReferenceByPos(hop, c, i);
-                                               
HopRewriteUtils.addChildReference(hop, lit, i);
+                                               
HopRewriteUtils.replaceChildReference(hop, c, lit, i);
                                        }
                                }
                                //recursively process children
-                               else 
-                               {
-                                       rReplaceLiterals(c, vars);      
-                               }                       
+                               else {
+                                       rReplaceLiterals(c, vars, scalarsOnly); 
+                               }
                        }
                }
                

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 6c99d16..6a2d88c 100644
--- a/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
+++ b/src/main/java/org/apache/sysml/hops/recompile/Recompiler.java
@@ -154,6 +154,7 @@ public class Recompiler
         * @param vars local variable map
         * @param status the recompile status
         * @param inplace true if in place
+        * @param litreplace true if literal replacement
         * @param tid thread id
         * @return list of instructions
         * @throws DMLRuntimeException if DMLRuntimeException occurs
@@ -161,7 +162,8 @@ public class Recompiler
         * @throws LopsException if LopsException occurs
         * @throws IOException if IOException occurs
         */
-       public static ArrayList<Instruction> recompileHopsDag( StatementBlock 
sb, ArrayList<Hop> hops, LocalVariableMap vars, RecompileStatus status, boolean 
inplace, long tid ) 
+       public static ArrayList<Instruction> recompileHopsDag( StatementBlock 
sb, ArrayList<Hop> hops, 
+                       LocalVariableMap vars, RecompileStatus status, boolean 
inplace, boolean litreplace, long tid ) 
                throws DMLRuntimeException, HopsException, LopsException, 
IOException
        {
                ArrayList<Instruction> newInst = null;
@@ -186,10 +188,10 @@ public class Recompiler
                        }
 
                        // replace scalar reads with literals 
-                       if( !inplace ) {
+                       if( !inplace && litreplace ) {
                                Hop.resetVisitStatus(hops);
                                for( Hop hopRoot : hops )
-                                       rReplaceLiterals( hopRoot, vars );
+                                       rReplaceLiterals( hopRoot, vars, false 
);
                        }
                        
                        // refresh matrix characteristics (update stats)        
                
@@ -268,6 +270,7 @@ public class Recompiler
         * @param vars local variable map
         * @param status recompile status
         * @param inplace true if in place
+        * @param litreplace true if literal replacement
         * @param tid thread id
         * @return list of instructions
         * @throws DMLRuntimeException if DMLRuntimeException occurs
@@ -275,7 +278,8 @@ public class Recompiler
         * @throws LopsException if LopsException occurs
         * @throws IOException if IOException occurs
         */
-       public static ArrayList<Instruction> recompileHopsDag( Hop hops, 
LocalVariableMap vars, RecompileStatus status, boolean inplace, long tid ) 
+       public static ArrayList<Instruction> recompileHopsDag( Hop hops, 
LocalVariableMap vars, 
+                       RecompileStatus status, boolean inplace, boolean 
litreplace, long tid ) 
                throws DMLRuntimeException, HopsException, LopsException, 
IOException
        {
                ArrayList<Instruction> newInst = null;
@@ -299,9 +303,9 @@ public class Recompiler
                        }
                        
                        // replace scalar reads with literals 
-                       if( !inplace ) {
+                       if( !inplace && litreplace ) {
                                hops.resetVisitStatus();
-                               rReplaceLiterals( hops, vars );
+                               rReplaceLiterals( hops, vars, false );
                        }
                        
                        // refresh matrix characteristics (update stats)        
                
@@ -864,7 +868,8 @@ public class Recompiler
                                //&& Recompiler.requiresRecompilation( 
sb.get_hops() ) 
                                /*&& 
!Recompiler.containsNonRecompileInstructions(tmp)*/ )
                        {
-                               tmp = Recompiler.recompileHopsDag(sb, 
sb.get_hops(), vars, status, true, tid);
+                               tmp = Recompiler.recompileHopsDag(
+                                       sb, sb.get_hops(), vars, status, true, 
false, tid);
                                pb.setInstructions( tmp );
                                
                                //propagate stats across hops (should be 
executed on clone of vars)
@@ -1098,10 +1103,9 @@ public class Recompiler
        private static MatrixObject createOutputMatrix( long dim1, long dim2, 
long nnz )
        {
                MatrixObject moOut = new MatrixObject(ValueType.DOUBLE, null);
+               int blksz = ConfigurationManager.getBlocksize();
                MatrixCharacteristics mc = new MatrixCharacteristics( 
-                                                                       dim1, 
dim2,
-                                                                       
ConfigurationManager.getBlocksize(), ConfigurationManager.getBlocksize(),
-                                                                       nnz);
+                               dim1, dim2, blksz, blksz, nnz);
                MatrixFormatMetaData meta = new 
MatrixFormatMetaData(mc,null,null);
                moOut.setMetaData(meta);
                
@@ -1118,7 +1122,8 @@ public class Recompiler
                {
                        Hop hops = isb.getPredicateHops();
                        if( hops != null ) {
-                               ArrayList<Instruction> tmp = 
recompileHopsDag(hops, vars, status, true, tid);
+                               ArrayList<Instruction> tmp = recompileHopsDag(
+                                               hops, vars, status, true, 
false, tid);
                                ipb.setPredicate( tmp );
                                if( ParForProgramBlock.RESET_RECOMPILATION_FLAGs
                                        && resetRecompile ) 
@@ -1141,7 +1146,8 @@ public class Recompiler
                {
                        Hop hops = wsb.getPredicateHops();
                        if( hops != null ) {
-                               ArrayList<Instruction> tmp = 
recompileHopsDag(hops, vars, status, true, tid);
+                               ArrayList<Instruction> tmp = recompileHopsDag(
+                                       hops, vars, status, true, false, tid);
                                wpb.setPredicate( tmp );
                                if( 
ParForProgramBlock.RESET_RECOMPILATION_FLAGs 
                                        && resetRecompile ) 
@@ -1171,17 +1177,20 @@ public class Recompiler
                                && resetRecompile ) 
                        {
                                if( fromHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(fromHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               fromHops, vars, status, true, 
false, tid);
                                        fpb.setFromInstructions(tmp);
                                        
Hop.resetRecompilationFlag(fromHops,ExecType.CP);
                                }
                                if( toHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(toHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               toHops, vars, status, true, 
false, tid);
                                        fpb.setToInstructions(tmp);
                                        
Hop.resetRecompilationFlag(toHops,ExecType.CP);
                                }
                                if( incrHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(incrHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               incrHops, vars, status, true, 
false, tid);
                                        fpb.setIncrementInstructions(tmp);
                                        
Hop.resetRecompilationFlag(incrHops,ExecType.CP);
                                }
@@ -1190,15 +1199,18 @@ public class Recompiler
                        else //no reset of recompilation flags
                        {
                                if( fromHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(fromHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               fromHops, vars, status, true, 
false, tid);
                                        fpb.setFromInstructions(tmp);
                                }
                                if( toHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(toHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               toHops, vars, status, true, 
false, tid);
                                        fpb.setToInstructions(tmp);
                                }
                                if( incrHops != null ) {
-                                       ArrayList<Instruction> tmp = 
recompileHopsDag(incrHops, vars, status, true, tid);
+                                       ArrayList<Instruction> tmp = 
recompileHopsDag(
+                                               incrHops, vars, status, true, 
false, tid);
                                        fpb.setIncrementInstructions(tmp);
                                }
                        }
@@ -1608,13 +1620,15 @@ public class Recompiler
         * 
         * @param hop high-level operator
         * @param vars local variable map
+        * @param scalarsOnly if true, replace only scalar variables but no 
matrix operations;
+        *            if false, apply full literal replacement
         * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void rReplaceLiterals( Hop hop, LocalVariableMap vars ) 
+       public static void rReplaceLiterals( Hop hop, LocalVariableMap vars, 
boolean scalarsOnly ) 
                throws DMLRuntimeException
        {
                //public interface 
-               LiteralReplacement.rReplaceLiterals(hop, vars);
+               LiteralReplacement.rReplaceLiterals(hop, vars, scalarsOnly);
        }
        
        public static void rSetExecType( Hop hop, ExecType etype )

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 1847847..71fb1c2 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,8 @@ public class ProgramBlock
                                && _sb != null 
                                && _sb.requiresRecompilation() )
                        {
-                               tmp = Recompiler.recompileHopsDag(_sb, 
_sb.get_hops(), ec.getVariables(), null, false, _tid);
+                               tmp = Recompiler.recompileHopsDag(
+                                       _sb, _sb.get_hops(), ec.getVariables(), 
null, false, true, _tid);
                                
                                if( MLContextProxy.isActive() )
                                        tmp = 
MLContextProxy.performCleanupAfterRecompilation(tmp);
@@ -188,7 +189,8 @@ public class ProgramBlock
                        if(    ConfigurationManager.isDynamicRecompilation() 
                                && requiresRecompile )
                        {
-                               tmp = Recompiler.recompileHopsDag(hops, 
ec.getVariables(), null, false, _tid);
+                               tmp = Recompiler.recompileHopsDag(
+                                       hops, ec.getVariables(), null, false, 
true, _tid);
                        }
                        if( DMLScript.STATISTICS ){
                                long t1 = System.nanoTime();

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 1a8122a..bbd8fb8 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
@@ -786,7 +786,8 @@ public class OptimizerRuleBased extends Optimizer
                HashMap<Hop, Double> estRix = 
getPartitionedRIXEstimates(nParent);
                
                //construct new instructions
-               ArrayList<Instruction> newInst = 
Recompiler.recompileHopsDag(sb, sb.get_hops(), vars, null, false, 0);
+               ArrayList<Instruction> newInst = Recompiler.recompileHopsDag(
+                       sb, sb.get_hops(), vars, null, false, false, 0);
                pb.setInstructions( newInst );   
                
                //reset all rix estimated (modified by recompile)

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 f6ccc13..2d03af3 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
@@ -183,7 +183,8 @@ public class ProgramRecompiler
                                if( ret )
                                {
                                        //construct new instructions
-                                       ArrayList<Instruction> newInst = 
Recompiler.recompileHopsDag(sb, sb.get_hops(), ec.getVariables(), null, true, 
0);
+                                       ArrayList<Instruction> newInst = 
Recompiler.recompileHopsDag(
+                                               sb, sb.get_hops(), 
ec.getVariables(), null, true, false, 0);
                                        pb.setInstructions( newInst ); 
                                }
                        }
@@ -251,7 +252,7 @@ public class ProgramRecompiler
                                //replace constant literals
                                Hop.resetVisitStatus(hops);
                                for( Hop hopRoot : hops )
-                                       Recompiler.rReplaceLiterals( hopRoot, 
vars );
+                                       Recompiler.rReplaceLiterals( hopRoot, 
vars, true );
                        }       
                }
        }
@@ -261,7 +262,7 @@ public class ProgramRecompiler
        {
                if( pred != null ){
                        pred.resetVisitStatus();
-                       Recompiler.rReplaceLiterals(pred, vars);
+                       Recompiler.rReplaceLiterals(pred, vars, true);
                }
        }
        
@@ -380,7 +381,8 @@ public class ProgramRecompiler
                        if( ret )
                        {
                                //construct new instructions
-                               tmp = Recompiler.recompileHopsDag(hop, 
ec.getVariables(), null, true, 0);
+                               tmp = Recompiler.recompileHopsDag(
+                                       hop, ec.getVariables(), null, true, 
false, 0);
                        }
                }
                catch(Exception ex)

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/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 d753406..8b6003f 100644
--- a/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
+++ b/src/main/java/org/apache/sysml/yarn/ropt/ResourceOptimizer.java
@@ -207,7 +207,8 @@ public class ResourceOptimizer
                        WhileProgramBlock wpb = (WhileProgramBlock)pb;
                        WhileStatementBlock sb = (WhileStatementBlock) 
pb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null && 
sb.getPredicateHops()!=null ){
-                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getPredicateHops(), new LocalVariableMap(), 
null, false, 0);
+                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                       sb.getPredicateHops(), new 
LocalVariableMap(), null, false, false, 0);
                                wpb.setPredicate( inst );
                                B.add(wpb);
                                _cntCompilePB ++;
@@ -219,7 +220,8 @@ public class ResourceOptimizer
                        IfProgramBlock ipb = (IfProgramBlock)pb;
                        IfStatementBlock sb = (IfStatementBlock) 
ipb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null && 
sb.getPredicateHops()!=null ){
-                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getPredicateHops(), new LocalVariableMap(), 
null, false, 0);
+                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                       sb.getPredicateHops(), new 
LocalVariableMap(), null, false, false, 0);
                                ipb.setPredicate( inst );
                                B.add(ipb);
                                _cntCompilePB ++;
@@ -233,15 +235,18 @@ public class ResourceOptimizer
                        ForStatementBlock sb = (ForStatementBlock) 
fpb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null ){
                                if( sb.getFromHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getFromHops(), new LocalVariableMap(), null, 
false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getFromHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        fpb.setFromInstructions( inst );        
                                }
                                if( sb.getToHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getToHops(), new LocalVariableMap(), null, 
false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getToHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        fpb.setToInstructions( inst );  
                                }
                                if( sb.getIncrementHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getIncrementHops(), new LocalVariableMap(), 
null, false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getIncrementHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        fpb.setIncrementInstructions( inst );   
                                }
                                B.add(fpb);
@@ -252,8 +257,8 @@ public class ResourceOptimizer
                else
                {
                        StatementBlock sb = pb.getStatementBlock();
-                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb, sb.get_hops(), 
-                                                                          new 
LocalVariableMap(), null, false, 0);
+                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                               sb, sb.get_hops(), new LocalVariableMap(), 
null, false, false, 0);
                        pb.setInstructions( inst );
                        B.add(pb);
                        _cntCompilePB ++;
@@ -288,7 +293,8 @@ public class ResourceOptimizer
                        WhileProgramBlock wpb = (WhileProgramBlock)pb;
                        WhileStatementBlock sb = (WhileStatementBlock) 
pb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null && 
sb.getPredicateHops()!=null ){
-                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getPredicateHops(), new LocalVariableMap(), 
null, false, 0);
+                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                       sb.getPredicateHops(), new 
LocalVariableMap(), null, false, false, 0);
                                inst = annotateMRJobInstructions(inst, cp, mr);
                                wpb.setPredicate( inst );
                        }                               
@@ -298,7 +304,8 @@ public class ResourceOptimizer
                        IfProgramBlock ipb = (IfProgramBlock)pb;
                        IfStatementBlock sb = (IfStatementBlock) 
ipb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null && 
sb.getPredicateHops()!=null ){
-                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getPredicateHops(), new LocalVariableMap(), 
null, false, 0);
+                               ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                       sb.getPredicateHops(), new 
LocalVariableMap(), null, false, false, 0);
                                inst = annotateMRJobInstructions(inst, cp, mr);
                                ipb.setPredicate( inst );
                        }
@@ -309,17 +316,20 @@ public class ResourceOptimizer
                        ForStatementBlock sb = (ForStatementBlock) 
fpb.getStatementBlock();
                        if( INCLUDE_PREDICATES && sb!=null ){
                                if( sb.getFromHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getFromHops(), new LocalVariableMap(), null, 
false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getFromHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        inst = annotateMRJobInstructions(inst, 
cp, mr);
                                        fpb.setFromInstructions( inst );        
                                }
                                if( sb.getToHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getToHops(), new LocalVariableMap(), null, 
false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getToHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        inst = annotateMRJobInstructions(inst, 
cp, mr);
                                        fpb.setToInstructions( inst );  
                                }
                                if( sb.getIncrementHops()!=null ){
-                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb.getIncrementHops(), new LocalVariableMap(), 
null, false, 0);
+                                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                                               sb.getIncrementHops(), new 
LocalVariableMap(), null, false, false, 0);
                                        inst = annotateMRJobInstructions(inst, 
cp, mr);
                                        fpb.setIncrementInstructions( inst );   
                                }
@@ -328,8 +338,8 @@ public class ResourceOptimizer
                else //last-level program blocks
                {
                        StatementBlock sb = pb.getStatementBlock();
-                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(sb, sb.get_hops(), 
-                                                                          new 
LocalVariableMap(), null, false, 0);
+                       ArrayList<Instruction> inst = 
Recompiler.recompileHopsDag(
+                               sb, sb.get_hops(), new LocalVariableMap(), 
null, false, false, 0);
                        inst = annotateMRJobInstructions(inst, cp, mr);
                        pb.setInstructions( inst );
                }

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmL2SVM.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmL2SVM.java
 
b/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmL2SVM.java
index 6f005ad..2e03ce6 100644
--- 
a/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmL2SVM.java
+++ 
b/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmL2SVM.java
@@ -123,7 +123,7 @@ public class AlgorithmL2SVM extends AutomatedTestBase
                        fullDMLScriptName = "scripts/algorithms/l2-svm.dml";
                        programArgs = new String[]{ "-explain", "-stats", 
"-nvargs", "X="+input("X"), "Y="+input("Y"),
                                "icpt="+String.valueOf(intercept), 
"tol="+String.valueOf(epsilon), "reg=0.001",
-                               "maxiter="+String.valueOf(maxiter), 
"model="+output("w"), "Log=\" \""};
+                               "maxiter="+String.valueOf(maxiter), 
"model="+output("w"), "Log= "};
 
                        rCmd = getRCmd(inputDir(), 
String.valueOf(intercept),String.valueOf(epsilon),
                                String.valueOf(maxiter), expectedDir());

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/c8007f45/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmMSVM.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmMSVM.java
 
b/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmMSVM.java
index 7f26d70..2a5de13 100644
--- 
a/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmMSVM.java
+++ 
b/src/test/java/org/apache/sysml/test/integration/functions/codegen/AlgorithmMSVM.java
@@ -122,7 +122,7 @@ public class AlgorithmMSVM extends AutomatedTestBase
                        fullDMLScriptName = "scripts/algorithms/m-svm.dml";
                        programArgs = new String[]{ "-explain", "-stats", 
"-nvargs", "X="+input("X"), "Y="+input("Y"),
                                        "icpt="+String.valueOf(intercept), 
"tol="+String.valueOf(epsilon), "reg=0.001",
-                                       "maxiter="+String.valueOf(maxiter), 
"model="+output("w"), "Log=\" \""};
+                                       "maxiter="+String.valueOf(maxiter), 
"model="+output("w"), "Log= "};
 
                        rCmd = getRCmd(inputDir(), 
String.valueOf(intercept),String.valueOf(epsilon),
                                String.valueOf(maxiter), expectedDir());

Reply via email to