Repository: systemml
Updated Branches:
  refs/heads/master 642a00638 -> ae15272b0


[HOTFIX] Fix old uni/bivar stats tests, incl better error handling lix

This patch fixes dml script issues of old univariate and bivariate
statistics tests. Specifically, the new dense block abstraction revealed
issues on left indexing where the source block was smaller than the
target index range. We now also perform better error handling regarding
correct indexing ranges in left indexing operations to guard against
incorrect results if these invalid ranges are not detected.


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

Branch: refs/heads/master
Commit: ae15272b059422e25982b42906e87ea1df769c77
Parents: 642a006
Author: Matthias Boehm <[email protected]>
Authored: Tue Jan 2 19:50:44 2018 -0800
Committer: Matthias Boehm <[email protected]>
Committed: Tue Jan 2 19:50:44 2018 -0800

----------------------------------------------------------------------
 .../sysml/runtime/matrix/data/MatrixBlock.java   | 19 +++++++++----------
 .../applications/parfor/parfor_bivariate0.dml    |  6 +++---
 .../applications/parfor/parfor_bivariate1.dml    |  6 +++---
 .../applications/parfor/parfor_bivariate2.dml    |  6 +++---
 .../applications/parfor/parfor_bivariate3.dml    |  6 +++---
 .../applications/parfor/parfor_bivariate4.dml    |  6 +++---
 .../applications/parfor/parfor_univariate0.dml   |  2 +-
 .../applications/parfor/parfor_univariate1.dml   |  2 +-
 .../applications/parfor/parfor_univariate4.dml   |  2 +-
 .../functions/parfor/parfor_optimizer2.dml       |  6 +++---
 .../functions/parfor/parfor_optimizer2b.dml      |  6 +++---
 11 files changed, 33 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
index 3f344c6..2336588 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/MatrixBlock.java
@@ -3488,19 +3488,18 @@ public class MatrixBlock extends MatrixValue implements 
CacheBlock, Externalizab
        public MatrixBlock leftIndexingOperations(MatrixBlock rhsMatrix,
                        int rl, int ru, int cl, int cu, MatrixBlock ret, 
UpdateType update)
                throws DMLRuntimeException 
-       {       
+       {
                // Check the validity of bounds
-               if ( rl < 0 || rl >= getNumRows() || ru < rl || ru >= 
getNumRows()
-                               || cl < 0 || cu >= getNumColumns() || cu < cl 
|| cu >= getNumColumns() ) {
-                       throw new DMLRuntimeException("Invalid values for 
matrix indexing: ["+(rl+1)+":"+(ru+1)+"," + (cl+1)+":"+(cu+1)+"] " +
-                                                       "must be within matrix 
dimensions ["+getNumRows()+","+getNumColumns()+"].");
+               if( rl < 0 || rl >= getNumRows() || ru < rl || ru >= 
getNumRows()
+                       || cl < 0 || cu >= getNumColumns() || cu < cl || cu >= 
getNumColumns() ) {
+                       throw new DMLRuntimeException("Invalid values for 
matrix indexing: ["+(rl+1)+":"+(ru+1)+"," 
+                               + (cl+1)+":"+(cu+1)+"] " + "must be within 
matrix dimensions ["+getNumRows()+","+getNumColumns()+"].");
                }
-               
-               if ( (ru-rl+1) < rhsMatrix.getNumRows() || (cu-cl+1) < 
rhsMatrix.getNumColumns()) {
+               if( (ru-rl+1) != rhsMatrix.getNumRows() || (cu-cl+1) != 
rhsMatrix.getNumColumns() ) {
                        throw new DMLRuntimeException("Invalid values for 
matrix indexing: " +
-                                       "dimensions of the source matrix 
["+rhsMatrix.getNumRows()+"x" + rhsMatrix.getNumColumns() + "] " +
-                                       "do not match the shape of the matrix 
specified by indices [" +
-                                       (rl+1) +":" + (ru+1) + ", " + (cl+1) + 
":" + (cu+1) + "].");
+                               "dimensions of the source matrix 
["+rhsMatrix.getNumRows()+"x" + rhsMatrix.getNumColumns() + "] " +
+                               "do not match the shape of the matrix specified 
by indices [" +
+                               (rl+1) +":" + (ru+1) + ", " + (cl+1) + ":" + 
(cu+1) + "] (i.e., ["+(ru-rl+1)+"x"+(cu-cl+1)+"]).");
                }
                
                MatrixBlock result = ret;

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_bivariate0.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_bivariate0.dml 
b/src/test/scripts/applications/parfor/parfor_bivariate0.dml
index 662b745..18e84e1 100644
--- a/src/test/scripts/applications/parfor/parfor_bivariate0.dml
+++ b/src/test/scripts/applications/parfor/parfor_bivariate0.dml
@@ -117,9 +117,9 @@ for( i in 1:s1size ) {
                 }
                 basestats[7,pairID] = eta;
                 basestats[8,pairID] = f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_bivariate1.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_bivariate1.dml 
b/src/test/scripts/applications/parfor/parfor_bivariate1.dml
index 42a956d..c485b28 100644
--- a/src/test/scripts/applications/parfor/parfor_bivariate1.dml
+++ b/src/test/scripts/applications/parfor/parfor_bivariate1.dml
@@ -113,9 +113,9 @@ parfor( i in 1:s1size, par=4, mode=LOCAL, check=0, 
opt=NONE) {
                 }
                 basestats[7,pairID] = eta;
                 basestats[8,pairID] = f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_bivariate2.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_bivariate2.dml 
b/src/test/scripts/applications/parfor/parfor_bivariate2.dml
index 8ee59b7..d8789e9 100644
--- a/src/test/scripts/applications/parfor/parfor_bivariate2.dml
+++ b/src/test/scripts/applications/parfor/parfor_bivariate2.dml
@@ -113,9 +113,9 @@ parfor( i in 1:s1size, par=4, mode=LOCAL, check=0, 
opt=NONE) {
                 }
                 basestats[7,pairID] = eta;
                 basestats[8,pairID] = f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_bivariate3.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_bivariate3.dml 
b/src/test/scripts/applications/parfor/parfor_bivariate3.dml
index f5c43ef..a639c39 100644
--- a/src/test/scripts/applications/parfor/parfor_bivariate3.dml
+++ b/src/test/scripts/applications/parfor/parfor_bivariate3.dml
@@ -113,9 +113,9 @@ parfor( i in 1:s1size, par=4, mode=REMOTE_MR, check=0, 
opt=NONE) {
                 }
                 basestats[7,pairID] = eta;
                 basestats[8,pairID] = f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_bivariate4.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_bivariate4.dml 
b/src/test/scripts/applications/parfor/parfor_bivariate4.dml
index c2e78d5..db189ba 100644
--- a/src/test/scripts/applications/parfor/parfor_bivariate4.dml
+++ b/src/test/scripts/applications/parfor/parfor_bivariate4.dml
@@ -116,9 +116,9 @@ parfor( i in 1:s1size, check=0) {
                 }
                 basestats[7,pairID] = eta;
                 basestats[8,pairID] = f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_univariate0.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_univariate0.dml 
b/src/test/scripts/applications/parfor/parfor_univariate0.dml
index 448c1c3..be6fee2 100644
--- a/src/test/scripts/applications/parfor/parfor_univariate0.dml
+++ b/src/test/scripts/applications/parfor/parfor_univariate0.dml
@@ -151,7 +151,7 @@ else {
                                        baseStats[17,i] = numModes;
 
           if (max_kind > 1) {
-                                         countsArray[,i] = cat_counts;
+                                         countsArray[1:nrow(cat_counts),i] = 
cat_counts;
                                        }
                                }
                        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_univariate1.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_univariate1.dml 
b/src/test/scripts/applications/parfor/parfor_univariate1.dml
index ad1e78f..72f5c96 100644
--- a/src/test/scripts/applications/parfor/parfor_univariate1.dml
+++ b/src/test/scripts/applications/parfor/parfor_univariate1.dml
@@ -151,7 +151,7 @@ else {
                                        baseStats[17,i] = numModes;
 
           if (max_kind > 1) {
-                                         countsArray[,i] = cat_counts;
+                                         countsArray[1:nrow(cat_counts),i] = 
cat_counts;
                                        }
                                }
                        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/applications/parfor/parfor_univariate4.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/applications/parfor/parfor_univariate4.dml 
b/src/test/scripts/applications/parfor/parfor_univariate4.dml
index 62646ef..abe17a8 100644
--- a/src/test/scripts/applications/parfor/parfor_univariate4.dml
+++ b/src/test/scripts/applications/parfor/parfor_univariate4.dml
@@ -151,7 +151,7 @@ else {
                                        baseStats[17,i] = numModes;
 
           if (max_kind > 1) {
-                                         countsArray[,i] = cat_counts;
+                                         countsArray[1:nrow(cat_counts),i] = 
cat_counts;
                                        }
                                }
                        }

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/functions/parfor/parfor_optimizer2.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/functions/parfor/parfor_optimizer2.dml 
b/src/test/scripts/functions/parfor/parfor_optimizer2.dml
index bc8cdc0..b857c75 100644
--- a/src/test/scripts/functions/parfor/parfor_optimizer2.dml
+++ b/src/test/scripts/functions/parfor/parfor_optimizer2.dml
@@ -119,9 +119,9 @@ parfor( i in 1:s1size, check=0, opt=RULEBASED) {
                 }
                 basestats[7,pairID] = dummy*eta;
                 basestats[8,pairID] = dummy*f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

http://git-wip-us.apache.org/repos/asf/systemml/blob/ae15272b/src/test/scripts/functions/parfor/parfor_optimizer2b.dml
----------------------------------------------------------------------
diff --git a/src/test/scripts/functions/parfor/parfor_optimizer2b.dml 
b/src/test/scripts/functions/parfor/parfor_optimizer2b.dml
index 6b41058..386b5ae 100644
--- a/src/test/scripts/functions/parfor/parfor_optimizer2b.dml
+++ b/src/test/scripts/functions/parfor/parfor_optimizer2b.dml
@@ -119,9 +119,9 @@ parfor( i in 1:s1size, check=0, opt=HEURISTIC) {
                 }
                 basestats[7,pairID] = dummy*eta;
                 basestats[8,pairID] = dummy*f;
-                cat_counts[,pairID] = counts;
-                cat_means[,pairID] = means;
-                cat_vars[,pairID] = vars; 
+                cat_counts[1:nrow(counts),pairID] = counts;
+                cat_means[1:nrow(means),pairID] = means;
+                cat_vars[1:nrow(vars),pairID] = vars;
             }
             else {
                 # nominal-ordinal or ordinal-nominal

Reply via email to