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 2018/06/07 04:10:45 UTC
systemml git commit: [SYSTEMML-2369] Fix nnz propagation in codegen
spark cell ops w/o agg
Repository: systemml
Updated Branches:
refs/heads/master 233b38c14 -> 0f7190c87
[SYSTEMML-2369] Fix nnz propagation in codegen spark cell ops w/o agg
The recent codegen compiler modification in SYSTEMML-2134 revealed a
hidden issue where spark codegen cell operations without aggregation
wrongly propagated the number of non-zeros of the main input into the
output. This led to incorrect results if the main input is empty but the
cell operation is sparse-unsafe. With this patch we only propagate the
dimensions and blocksizes in this scenario.
Project: http://git-wip-us.apache.org/repos/asf/systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/0f7190c8
Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/0f7190c8
Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/0f7190c8
Branch: refs/heads/master
Commit: 0f7190c8766e4376b1e0da8600c6079bfe993111
Parents: 233b38c
Author: Matthias Boehm <mb...@gmail.com>
Authored: Wed Jun 6 21:09:11 2018 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Wed Jun 6 21:09:11 2018 -0700
----------------------------------------------------------------------
.../runtime/instructions/spark/SpoofSPInstruction.java | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/systemml/blob/0f7190c8/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java b/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
index a3e1dfe..15d4de7 100644
--- a/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
+++ b/src/main/java/org/apache/sysml/runtime/instructions/spark/SpoofSPInstruction.java
@@ -314,17 +314,15 @@ public class SpoofSPInstruction extends SPInstruction {
}
private void updateOutputMatrixCharacteristics(SparkExecutionContext sec, SpoofOperator op) {
- if(op instanceof SpoofCellwise)
- {
+ if(op instanceof SpoofCellwise) {
MatrixCharacteristics mcIn = sec.getMatrixCharacteristics(_in[0].getName());
MatrixCharacteristics mcOut = sec.getMatrixCharacteristics(_out.getName());
if( ((SpoofCellwise)op).getCellType()==CellType.ROW_AGG )
mcOut.set(mcIn.getRows(), 1, mcIn.getRowsPerBlock(), mcIn.getColsPerBlock());
else if( ((SpoofCellwise)op).getCellType()==CellType.NO_AGG )
- mcOut.set(mcIn);
+ mcOut.set(mcIn.getRows(), mcIn.getCols(), mcIn.getRowsPerBlock(), mcIn.getColsPerBlock());
}
- else if(op instanceof SpoofOuterProduct)
- {
+ else if(op instanceof SpoofOuterProduct) {
MatrixCharacteristics mcIn1 = sec.getMatrixCharacteristics(_in[0].getName()); //X
MatrixCharacteristics mcIn2 = sec.getMatrixCharacteristics(_in[1].getName()); //U
MatrixCharacteristics mcIn3 = sec.getMatrixCharacteristics(_in[2].getName()); //V
@@ -333,8 +331,8 @@ public class SpoofSPInstruction extends SPInstruction {
if( type == OutProdType.CELLWISE_OUTER_PRODUCT)
mcOut.set(mcIn1.getRows(), mcIn1.getCols(), mcIn1.getRowsPerBlock(), mcIn1.getColsPerBlock());
- else if( type == OutProdType.LEFT_OUTER_PRODUCT)
- mcOut.set(mcIn3.getRows(), mcIn3.getCols(), mcIn3.getRowsPerBlock(), mcIn3.getColsPerBlock());
+ else if( type == OutProdType.LEFT_OUTER_PRODUCT)
+ mcOut.set(mcIn3.getRows(), mcIn3.getCols(), mcIn3.getRowsPerBlock(), mcIn3.getColsPerBlock());
else if( type == OutProdType.RIGHT_OUTER_PRODUCT )
mcOut.set(mcIn2.getRows(), mcIn2.getCols(), mcIn2.getRowsPerBlock(), mcIn2.getColsPerBlock());
}