You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2017/09/15 08:16:18 UTC

systemml git commit: [SYSTEMML-1908, 1771, 1770, 1769, 1739] Fix misc api and compiler issues

Repository: systemml
Updated Branches:
  refs/heads/master e6dfd89b1 -> ebb6ea612


[SYSTEMML-1908,1771,1770,1769,1739] Fix misc api and compiler issues

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

Branch: refs/heads/master
Commit: ebb6ea6128b4babc6ffe07e2fc7f9666593a76b1
Parents: e6dfd89
Author: Matthias Boehm <mb...@gmail.com>
Authored: Fri Sep 15 01:05:22 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Fri Sep 15 01:05:22 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/api/jmlc/PreparedScript.java  |  4 ++--
 .../sysml/api/mlcontext/MLContextConversionUtil.java    | 12 +++++++-----
 src/main/java/org/apache/sysml/hops/UnaryOp.java        |  5 +++--
 .../sysml/hops/codegen/template/TemplateCell.java       |  2 +-
 .../instructions/gpu/MatrixAppendGPUInstruction.java    |  8 ++++----
 5 files changed, 17 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/ebb6ea61/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java b/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
index 563df41..71f5e1b 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/PreparedScript.java
@@ -448,14 +448,14 @@ public class PreparedScript
 		//enable requested functions for recompile once
 		for( String fname : fnames ) {
 			String fkey = DMLProgram.constructFunctionKey(fnamespace, fname);
-			if( !fgraph.isRecursiveFunction(fkey) ) {
+			if( fgraph != null && !fgraph.isRecursiveFunction(fkey) ) {
 				FunctionProgramBlock fpb = _prog.getFunctionProgramBlock(fnamespace, fname);
 				if( fpb != null )
 					fpb.setRecompileOnce(true);
 				else
 					LOG.warn("Failed to enable function recompile for non-existing '"+fkey+"'.");		
 			}
-			else {
+			else if( fgraph != null ) {
 				LOG.warn("Failed to enable function recompile for recursive '"+fkey+"'.");
 			}
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/ebb6ea61/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java b/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
index 3f12ace..2512abb 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/MLContextConversionUtil.java
@@ -308,12 +308,14 @@ public class MLContextConversionUtil {
 	public static FrameObject binaryBlocksToFrameObject(String variableName, JavaPairRDD<Long, FrameBlock> binaryBlocks,
 			FrameMetadata frameMetadata) {
 
-		MatrixCharacteristics mc = (frameMetadata != null) ? frameMetadata.asMatrixCharacteristics()
-				: new MatrixCharacteristics();
-
+		MatrixCharacteristics mc = (frameMetadata != null) ? 
+			frameMetadata.asMatrixCharacteristics() : new MatrixCharacteristics();
+		ValueType[] schema = (frameMetadata != null) ?
+			frameMetadata.getFrameSchema().getSchema().toArray(new ValueType[0]) : 
+			UtilFunctions.nCopies((int)mc.getCols(), ValueType.STRING);
+		
 		FrameObject frameObject = new FrameObject(OptimizerUtils.getUniqueTempFileName(),
-				new MatrixFormatMetaData(mc, OutputInfo.BinaryBlockOutputInfo, InputInfo.BinaryBlockInputInfo),
-				frameMetadata.getFrameSchema().getSchema().toArray(new ValueType[0]));
+			new MatrixFormatMetaData(mc, OutputInfo.BinaryBlockOutputInfo, InputInfo.BinaryBlockInputInfo), schema);
 		frameObject.setRDDHandle(new RDDObject(binaryBlocks, variableName));
 		return frameObject;
 	}

http://git-wip-us.apache.org/repos/asf/systemml/blob/ebb6ea61/src/main/java/org/apache/sysml/hops/UnaryOp.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/UnaryOp.java b/src/main/java/org/apache/sysml/hops/UnaryOp.java
index d51fd81..ca1fc84 100644
--- a/src/main/java/org/apache/sysml/hops/UnaryOp.java
+++ b/src/main/java/org/apache/sysml/hops/UnaryOp.java
@@ -577,14 +577,15 @@ public class UnaryOp extends Hop implements MultiThreadedHop
 	{
 		double ret = 0;
 		
-		if ( _op == OpOp1.IQM  || _op == OpOp1.MEDIAN) {
+		if ( _op == OpOp1.IQM || _op == OpOp1.MEDIAN) {
 			// buffer (=2*input_size) and output (=input_size) for SORT operation
 			// getMemEstimate works for both cases of known dims and worst-case stats
 			ret = getInput().get(0).getMemEstimate() * 3; 
 		}
 
 		if (isGPUEnabled()) {
-			OptimizerUtils.estimateSize(dim1, dim2); // Intermediate memory required to convert sparse to dense
+			// Intermediate memory required to convert sparse to dense
+			ret += OptimizerUtils.estimateSize(dim1, dim2); 
 		}
 		
 		return ret;

http://git-wip-us.apache.org/repos/asf/systemml/blob/ebb6ea61/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
index b120bf5..4b0c126 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/template/TemplateCell.java
@@ -366,7 +366,7 @@ public class TemplateCell extends TemplateBase
 			if( h1.isScalar() && h2.isScalar() )
 				return Long.compare(h1.getHopID(), h2.getHopID());
 			return (h1.dimsKnown(true) && h2.dimsKnown(true) && h1.getNnz() != h2.getNnz()
-				&& HopRewriteUtils.isSparse(h1) || HopRewriteUtils.isSparse(h1)) ?
+				&& (HopRewriteUtils.isSparse(h1) || HopRewriteUtils.isSparse(h2))) ?
 				Long.compare(h1.getNnz(), h2.getNnz()) :
 				Long.compare(h1.getHopID(), h2.getHopID());
 		}

http://git-wip-us.apache.org/repos/asf/systemml/blob/ebb6ea61/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixAppendGPUInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixAppendGPUInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixAppendGPUInstruction.java
index ac48edf..a183d29 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixAppendGPUInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/gpu/MatrixAppendGPUInstruction.java
@@ -39,7 +39,7 @@ public class MatrixAppendGPUInstruction extends GPUInstruction {
 
 	CPOperand output;
 	CPOperand input1, input2;
-	AppendCPInstruction.AppendType type;
+	AppendCPInstruction.AppendType atype;
 
 	private MatrixAppendGPUInstruction(Operator op, CPOperand in1, CPOperand in2, CPOperand out,
 			AppendCPInstruction.AppendType type, String opcode, String istr) {
@@ -47,7 +47,7 @@ public class MatrixAppendGPUInstruction extends GPUInstruction {
 		this.output = out;
 		this.input1 = in1;
 		this.input2 = in2;
-		this.type = type;
+		this.atype = type;
 	}
 
 	public static MatrixAppendGPUInstruction parseInstruction ( String str )
@@ -86,9 +86,9 @@ public class MatrixAppendGPUInstruction extends GPUInstruction {
 		MatrixObject mat1 = getMatrixInputForGPUInstruction(ec, input1.getName());
 		MatrixObject mat2 = getMatrixInputForGPUInstruction(ec, input2.getName());
 
-		if(type == AppendCPInstruction.AppendType.CBIND) {
+		if(atype == AppendCPInstruction.AppendType.CBIND) {
 			LibMatrixCUDA.cbind(ec, ec.getGPUContext(0), getExtendedOpcode(), mat1, mat2, output.getName());
-		} else if (type == AppendCPInstruction.AppendType.RBIND ) {
+		} else if (atype == AppendCPInstruction.AppendType.RBIND ) {
 			LibMatrixCUDA.rbind(ec, ec.getGPUContext(0), getExtendedOpcode(), mat1, mat2, output.getName());
 		} else {
 			throw new DMLRuntimeException("Unsupported GPU operator:" + opcode);