diff --git a/src/main/java/org/apache/sysds/hops/Hop.java b/src/main/java/org/apache/sysds/hops/Hop.java index 86749d44c1c..2e119fd45e0 100644 --- a/src/main/java/org/apache/sysds/hops/Hop.java +++ b/src/main/java/org/apache/sysds/hops/Hop.java @@ -407,8 +407,18 @@ public void constructAndSetLopsDataFlowProperties() { private void constructAndSetReblockLopIfRequired() { - //determine execution type - ExecType et = DMLScript.USE_OOC ? ExecType.OOC : ExecType.CP; + // ExecType et = DMLScript.USE_OOC ? ExecType.OOC : ExecType.CP; + + // determine execution type while preserving global / forced exec type + ExecType et = (getForcedExecType() != null) ? getForcedExecType() : getExecType(); + + if( et == null ) { + if( DMLScript.USE_OOC ) + et = ExecType.OOC; + else + et = ExecType.CP; + } + if( DMLScript.getGlobalExecMode() != ExecMode.SINGLE_NODE && !(getDataType()==DataType.SCALAR) ) { @@ -416,7 +426,7 @@ private void constructAndSetReblockLopIfRequired() } //add reblock lop to output if required - if( _requiresReblock && et != ExecType.CP ) + if( _requiresReblock && (et == ExecType.OOC || et == ExecType.SPARK)) { Lop input = getLops();