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 <mboe...@gmail.com> Authored: Fri Sep 15 01:05:22 2017 -0700 Committer: Matthias Boehm <mboe...@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);