systemml git commit: [SYSTEMML-2359] Additional paramserv update frequency: per-epoch

2018-06-04 Thread mboehm7
Repository: systemml
Updated Branches:
  refs/heads/master 095781868 -> 51057e471


[SYSTEMML-2359] Additional paramserv update frequency: per-epoch

Closes #780.


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

Branch: refs/heads/master
Commit: 51057e4712d6ab9a190a9c1f8e9f36d48a8a1fd5
Parents: 0957818
Author: EdgarLGB 
Authored: Mon Jun 4 21:25:53 2018 -0700
Committer: Matthias Boehm 
Committed: Mon Jun 4 22:02:23 2018 -0700

--
 .../ParameterizedBuiltinFunctionExpression.java |  24 +-
 .../controlprogram/paramserv/LocalPSWorker.java | 139 +--
 .../paramserv/LocalParamServer.java |   8 +-
 .../controlprogram/paramserv/PSWorker.java  |   2 +-
 .../controlprogram/paramserv/ParamServer.java   |  42 ++-
 .../cp/ParamservBuiltinCPInstruction.java   |  61 ++-
 .../functions/paramserv/ParamservFuncTest.java  |  22 +-
 .../paramserv/mnist_lenet_paramserv.dml |   4 +-
 .../paramserv/mnist_lenet_paramserv_asp.dml | 376 ---
 .../mnist_lenet_paramserv_minimum_version.dml   |   4 +-
 .../paramserv/paramserv-nn-asp-batch.dml|  52 +++
 .../paramserv/paramserv-nn-asp-epoch.dml|  52 +++
 .../functions/paramserv/paramserv-nn-asp.dml|  52 ---
 .../paramserv/paramserv-nn-bsp-batch.dml|  52 +++
 .../paramserv/paramserv-nn-bsp-epoch.dml|  52 +++
 .../functions/paramserv/paramserv-nn-test.dml   |  52 ---
 .../paramserv/paramserv-wrong-args.dml  |  19 +-
 17 files changed, 425 insertions(+), 588 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/51057e47/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
--
diff --git 
a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
 
b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
index 99aec78..33c5b0e 100644
--- 
a/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
+++ 
b/src/main/java/org/apache/sysml/parser/ParameterizedBuiltinFunctionExpression.java
@@ -334,22 +334,15 @@ public class ParameterizedBuiltinFunctionExpression 
extends DataIdentifier
checkDataType(fname, Statement.PS_VAL_LABELS, DataType.MATRIX, 
conditional);
checkDataValueType(false, fname, Statement.PS_UPDATE_FUN, 
DataType.SCALAR, ValueType.STRING, conditional);
checkDataValueType(false, fname, Statement.PS_AGGREGATION_FUN, 
DataType.SCALAR, ValueType.STRING, conditional);
-   Set modes = 
Arrays.stream(Statement.PSModeType.values()).map(Enum::name)
-   .collect(Collectors.toSet());
-   checkStringParam(false, fname, Statement.PS_MODE, modes, 
conditional);
-   Set utypes = 
Arrays.stream(Statement.PSUpdateType.values()).map(Enum::name)
-   .collect(Collectors.toSet());
-   checkStringParam(false, fname, Statement.PS_UPDATE_TYPE, 
utypes, conditional);
-   Set frequencies = 
Arrays.stream(Statement.PSFrequency.values()).map(Enum::name).collect(Collectors.toSet());
-   checkStringParam(true, fname, Statement.PS_FREQUENCY, 
frequencies, conditional);
+   checkStringParam(false, fname, Statement.PS_MODE, conditional);
+   checkStringParam(false, fname, Statement.PS_UPDATE_TYPE, 
conditional);
+   checkStringParam(true, fname, Statement.PS_FREQUENCY, 
conditional);
checkDataValueType(false, fname, Statement.PS_EPOCHS, 
DataType.SCALAR, ValueType.INT, conditional);
checkDataValueType(true, fname, Statement.PS_BATCH_SIZE, 
DataType.SCALAR, ValueType.INT, conditional);
checkDataValueType(true, fname, Statement.PS_PARALLELISM, 
DataType.SCALAR, ValueType.INT, conditional);
-   Set schemes = 
Arrays.stream(Statement.PSScheme.values()).map(Enum::name).collect(Collectors.toSet());
-   checkStringParam(true, fname, Statement.PS_SCHEME, schemes, 
conditional);
+   checkStringParam(true, fname, Statement.PS_SCHEME, conditional);
checkDataValueType(true, fname, Statement.PS_HYPER_PARAMS, 
DataType.LIST, ValueType.UNKNOWN, conditional);
-   Set checkpointings = 
Arrays.stream(Statement.PSCheckpointing.values()).map(Enum::name).collect(Collectors.toSet());
-   checkStringParam(true, fname, Statement.PS_CHECKPOINTING, 
checkpointings, conditional);
+   checkStringParam(true, fname, Statement.PS_CHECKPOINTING, 
conditional);
 
 

systemml git commit: [SYSTEMML-2342] Cleanup ARIMA dml script

2018-06-04 Thread mboehm7
Repository: systemml
Updated Branches:
  refs/heads/master add561b38 -> 095781868


[SYSTEMML-2342] Cleanup ARIMA dml script

Closes #779.


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

Branch: refs/heads/master
Commit: 0957818688c8819a5601a61837504ee83fc22745
Parents: add561b
Author: Tobias Schmidt 
Authored: Mon Jun 4 20:34:23 2018 -0700
Committer: Matthias Boehm 
Committed: Mon Jun 4 20:42:20 2018 -0700

--
 .../integration/applications/ArimaTest.java |  37 +-
 .../applications/arima_box-jenkins/arima.dml| 344 ++-
 .../applications/arima_box-jenkins/arima_old.R  | 278 +++
 .../arima_box-jenkins/arima_old.dml | 289 
 4 files changed, 774 insertions(+), 174 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/09578186/src/test/java/org/apache/sysml/test/integration/applications/ArimaTest.java
--
diff --git 
a/src/test/java/org/apache/sysml/test/integration/applications/ArimaTest.java 
b/src/test/java/org/apache/sysml/test/integration/applications/ArimaTest.java
index 91fa55b..149c0b1 100644
--- 
a/src/test/java/org/apache/sysml/test/integration/applications/ArimaTest.java
+++ 
b/src/test/java/org/apache/sysml/test/integration/applications/ArimaTest.java
@@ -34,7 +34,9 @@ import org.junit.runners.Parameterized.Parameters;
 public abstract class ArimaTest extends AutomatedTestBase {

protected final static String TEST_DIR = 
"applications/arima_box-jenkins/";
-   protected final static String TEST_NAME = "arima";
+   protected final static String TEST_NAME1 = "arima";
+   protected final static String TEST_NAME2 = "arima_old";
+   
protected String TEST_CLASS_DIR = TEST_DIR + 
ArimaTest.class.getSimpleName() + "/";

protected int max_func_invoc, p, d, q, P, D, Q, s, include_mean, 
useJacobi;
@@ -64,11 +66,12 @@ public abstract class ArimaTest extends AutomatedTestBase {

@Override
public void setUp() {
-   addTestConfiguration(TEST_CLASS_DIR, TEST_NAME);
+   addTestConfiguration(TEST_CLASS_DIR, TEST_NAME1);
+   addTestConfiguration(TEST_CLASS_DIR, TEST_NAME2);
}

protected void testArima(ScriptType scriptType) {
-   System.out.println(" BEGIN " + TEST_NAME + " " + 
scriptType + " TEST WITH {" +
+   System.out.println(" BEGIN " + TEST_NAME1 + " " + 
scriptType + " TEST WITH {" +
max_func_invoc + ", " + 
p + ", " + 
d + ", " + 
@@ -81,12 +84,16 @@ public abstract class ArimaTest extends AutomatedTestBase {
useJacobi+ "} ");
this.scriptType = scriptType;

-   getAndLoadTestConfiguration(TEST_NAME);
-   
List proArgs = new ArrayList();
+   
if (scriptType == ScriptType.PYDML) {
proArgs.add("-python");
+   getAndLoadTestConfiguration(TEST_NAME1);
}
+   else {
+   getAndLoadTestConfiguration(TEST_NAME2);
+   }
+   
proArgs.add("-args");
proArgs.add(input("col.mtx"));
proArgs.add(Integer.toString(max_func_invoc));
@@ -100,8 +107,26 @@ public abstract class ArimaTest extends AutomatedTestBase {
proArgs.add(Integer.toString(include_mean));
proArgs.add(Integer.toString(useJacobi));
proArgs.add(output("learnt.model"));
-   programArgs = proArgs.toArray(new String[proArgs.size()]);

+   
+   /* TODO use after R script is made consistent 
+   getAndLoadTestConfiguration(TEST_NAME2);
+   proArgs.add("-nvargs");
+   proArgs.add("X="+input("col.mtx"));
+   
proArgs.add("max_func="+Integer.toString(max_func_invoc));
+   proArgs.add("p="+Integer.toString(p));
+   proArgs.add("d="+Integer.toString(d));
+   proArgs.add("q="+Integer.toString(q));
+   proArgs.add("P="+Integer.toString(P));
+   proArgs.add("D="+Integer.toString(D));
+   proArgs.add("Q="+Integer.toString(Q));
+   proArgs.add("s="+Integer.toString(s));
+   

systemml git commit: [SYSTEMML-2361] Fix invalid cleanup of matrices/frames read in functions

2018-06-04 Thread mboehm7
Repository: systemml
Updated Branches:
  refs/heads/master 1bcdfaac1 -> add561b38


[SYSTEMML-2361] Fix invalid cleanup of matrices/frames read in functions

This patch fixes a severe bug that led to invalid cleanup of matrices or
frames that are read from persistent storage (e.g., HDFS) in functions.
Although there are never rmvar instructions generated for pread
variables, the function call cleans up unexpected function outputs to
safe guard against special case memory leaks. We now globally disable
the cleanup of all persistently read matrices or frames.


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

Branch: refs/heads/master
Commit: add561b38e55e16dca7fd0d8a520b5abca5671a3
Parents: 1bcdfaa
Author: Matthias Boehm 
Authored: Mon Jun 4 19:44:32 2018 -0700
Committer: Matthias Boehm 
Committed: Mon Jun 4 19:44:32 2018 -0700

--
 src/main/java/org/apache/sysml/lops/Data.java  | 6 +++---
 .../sysml/runtime/instructions/cp/VariableCPInstruction.java   | 4 
 2 files changed, 7 insertions(+), 3 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/add561b3/src/main/java/org/apache/sysml/lops/Data.java
--
diff --git a/src/main/java/org/apache/sysml/lops/Data.java 
b/src/main/java/org/apache/sysml/lops/Data.java
index 53f169b..95df961 100644
--- a/src/main/java/org/apache/sysml/lops/Data.java
+++ b/src/main/java/org/apache/sysml/lops/Data.java
@@ -37,11 +37,11 @@ import org.apache.sysml.parser.Expression.ValueType;
  * variables, literals. Can be for both input and output. 
  */
 
-public class Data extends Lop  
+public class Data extends Lop
 {
-   
public enum OperationTypes {READ,WRITE}
-   
+   public static final String PREAD_PREFIX = 
"p"+OperationTypes.READ.name();
+
FileFormatTypes formatType = FileFormatTypes.BINARY;
OperationTypes operation;
boolean literal_var = false;

http://git-wip-us.apache.org/repos/asf/systemml/blob/add561b3/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
--
diff --git 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
index b46f4df..26fcb2e 100644
--- 
a/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
+++ 
b/src/main/java/org/apache/sysml/runtime/instructions/cp/VariableCPInstruction.java
@@ -485,6 +485,8 @@ public class VariableCPInstruction extends CPInstruction {
mobj.setMetaData((MetaData)metadata.clone());
mobj.setFileFormatProperties(_formatProperties);
mobj.setUpdateType(_updateType);
+   mobj.enableCleanup(!getInput1().getName()
+   
.startsWith(org.apache.sysml.lops.Data.PREAD_PREFIX));
ec.setVariable(getInput1().getName(), mobj);
if(DMLScript.STATISTICS && 
_updateType.isInPlace())
Statistics.incrementTotalUIPVar();
@@ -496,6 +498,8 @@ public class VariableCPInstruction extends CPInstruction {
fobj.setFileFormatProperties(_formatProperties);
if( _schema != null )
fobj.setSchema(_schema); //after 
metadata
+   fobj.enableCleanup(!getInput1().getName()
+   
.startsWith(org.apache.sysml.lops.Data.PREAD_PREFIX));
ec.setVariable(getInput1().getName(), fobj);
}
else if ( getInput1().getDataType() == DataType.SCALAR 
){



systemml git commit: [SYSTEMML-2134] Fix codegen row tmpl support for vector ternary axpy

2018-06-04 Thread mboehm7
Repository: systemml
Updated Branches:
  refs/heads/master 8084dc127 -> 1bcdfaac1


[SYSTEMML-2134] Fix codegen row tmpl support for vector ternary axpy

This patch fixes the CPlan construction of row templates for ternary
axpy operations with row vector intermediates. Specifically, we now
correctly handle index loopkups only for scalar intermediates, which
otherwise causes codegen compilation errors.


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

Branch: refs/heads/master
Commit: 1bcdfaac138d8f68e4144ca4ddbaf8cf03329ca1
Parents: 8084dc1
Author: Matthias Boehm 
Authored: Mon Jun 4 14:25:05 2018 -0700
Committer: Matthias Boehm 
Committed: Mon Jun 4 17:45:07 2018 -0700

--
 .../org/apache/sysml/hops/codegen/cplan/CNodeBinary.java |  7 +++
 .../apache/sysml/hops/codegen/cplan/CNodeTernary.java|  8 +++-
 .../org/apache/sysml/hops/codegen/cplan/CNodeUnary.java  |  7 +++
 .../apache/sysml/hops/codegen/template/TemplateRow.java  | 11 ++-
 4 files changed, 15 insertions(+), 18 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/1bcdfaac/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
--
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java 
b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
index 80a7f83..7ef21c1 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeBinary.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysml.hops.codegen.cplan;
 
+import java.util.Arrays;
+
 import org.apache.commons.lang.StringUtils;
 import org.apache.sysml.hops.codegen.template.TemplateUtils;
 import org.apache.sysml.parser.Expression.DataType;
@@ -56,10 +58,7 @@ public class CNodeBinary extends CNode
MINUS1_MULT, MINUS_NZ;
 
public static boolean contains(String value) {
-   for( BinType bt : values()  )
-   if( bt.name().equals(value) )
-   return true;
-   return false;
+   return Arrays.stream(values()).anyMatch(bt -> 
bt.name().equals(value));
}

public boolean isCommutative() {

http://git-wip-us.apache.org/repos/asf/systemml/blob/1bcdfaac/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
--
diff --git 
a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java 
b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
index dc8ff82..61140b4 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeTernary.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysml.hops.codegen.cplan;
 
+import java.util.Arrays;
+
 import org.apache.sysml.parser.Expression.DataType;
 import org.apache.sysml.runtime.util.UtilFunctions;
 
@@ -30,12 +32,8 @@ public class CNodeTernary extends CNode
REPLACE, REPLACE_NAN, IFELSE,
LOOKUP_RC1, LOOKUP_RVECT1;

-   
public static boolean contains(String value) {
-   for( TernaryType tt : values()  )
-   if( tt.name().equals(value) )
-   return true;
-   return false;
+   return Arrays.stream(values()).anyMatch(tt -> 
tt.name().equals(value));
}

public String getTemplate(boolean sparse) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/1bcdfaac/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
--
diff --git a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java 
b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
index d7721a1..b269139 100644
--- a/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
+++ b/src/main/java/org/apache/sysml/hops/codegen/cplan/CNodeUnary.java
@@ -19,6 +19,8 @@
 
 package org.apache.sysml.hops.codegen.cplan;
 
+import java.util.Arrays;
+
 import org.apache.commons.lang.ArrayUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.sysml.hops.codegen.template.TemplateUtils;
@@ -43,10 +45,7 @@ public class CNodeUnary extends CNode
SPROP, SIGMOID; 


systemml git commit: [MINOR] add 2 new DML examples to Jupyter notebook

2018-06-04 Thread reinwald
Repository: systemml
Updated Branches:
  refs/heads/master d44b3280f -> 8084dc127


[MINOR] add 2 new DML examples to Jupyter notebook


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

Branch: refs/heads/master
Commit: 8084dc1276663c7dfaa8983b13efb0ec11e6ee1e
Parents: d44b328
Author: Berthold Reinwald 
Authored: Mon Jun 4 16:54:14 2018 -0700
Committer: Berthold Reinwald 
Committed: Mon Jun 4 16:54:14 2018 -0700

--
 ...DML Tips and Tricks (aka Fun With DML).ipynb | 691 ---
 1 file changed, 576 insertions(+), 115 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/8084dc12/samples/jupyter-notebooks/DML
 Tips and Tricks (aka Fun With DML).ipynb
--
diff --git a/samples/jupyter-notebooks/DML Tips and Tricks (aka Fun With 
DML).ipynb b/samples/jupyter-notebooks/DML Tips and Tricks (aka Fun With 
DML).ipynb
index b2d2fad..6dd096c 100644
--- a/samples/jupyter-notebooks/DML Tips and Tricks (aka Fun With DML).ipynb
+++ b/samples/jupyter-notebooks/DML Tips and Tricks (aka Fun With DML).ipynb
@@ -4,13 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
-"1. [Replace NaN with mode](#NaN2Mode)\n",
+"1. [Create all value pairs for v1 and v2](#AllValuePairs)\n",
+"* [Replace NaN with mode](#NaN2Mode)\n",
 "* [Use sample builtin function to create sample from matrix](#sample)\n",
 "* [Count of Matching Values in two Matrices/Vectors](#MatchinRows)\n",
 "* [Cross Validation](#CrossValidation)\n",
 "* [Value-based join of two Matrices](#JoinMatrices)\n",
 "* [Filter Matrix to include only Frequent Column 
Values](#FilterMatrix)\n",
-"* [Construct (sparse) Matrix from (rowIndex, colIndex, values) 
triplets](#Construct_sparse_Matrix)\n",
+"* [(Sparse) Matrix to/from (rowIndex, colIndex, values) conversions 
(i,j,v)](#Construct_sparse_Matrix)\n",
 "* [Find and remove duplicates in columns or 
rows](#Find_and_remove_duplicates)\n",
 "* [Set based Indexing](#Set_based_Indexing)\n",
 "* [Group by Aggregate using Linear Algebra](#Multi_column_Sorting)\n",
@@ -20,25 +21,95 @@
   },
   {
"cell_type": "code",
-   "execution_count": 15,
+   "execution_count": null,
"metadata": {
 "collapsed": false,
 "scrolled": false
},
+   "outputs": [],
+   "source": [
+"from systemml import MLContext, dml\n",
+"ml = MLContext(sc)\n",
+"\n",
+"print (ml.buildTime())"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+"## Create all value pairs for v1 and v2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 50,
+   "metadata": {
+"collapsed": false
+   },
"outputs": [
 {
  "name": "stdout",
  "output_type": "stream",
  "text": [
-  "2017-09-22 07:57:57 UTC\n"
+  "2.000\n",
+  "1.000\n",
+  "8.000\n",
+  "3.000\n",
+  "5.000\n",
+  "6.000\n",
+  "7.000\n",
+  "\n",
+  "80.000\n",
+  "20.000\n",
+  "50.000\n",
+  "\n",
+  "2.000 80.000\n",
+  "2.000 20.000\n",
+  "2.000 50.000\n",
+  "1.000 80.000\n",
+  "1.000 20.000\n",
+  "1.000 50.000\n",
+  "8.000 80.000\n",
+  "8.000 20.000\n",
+  "8.000 50.000\n",
+  "3.000 80.000\n",
+  "3.000 20.000\n",
+  "3.000 50.000\n",
+  "5.000 80.000\n",
+  "5.000 20.000\n",
+  "5.000 50.000\n",
+  "6.000 80.000\n",
+  "6.000 20.000\n",
+  "6.000 50.000\n",
+  "7.000 80.000\n",
+  "7.000 20.000\n",
+  "7.000 50.000\n",
+  "\n",
+  "SystemML Statistics:\n",
+  "Total execution time:\t\t0.000 sec.\n",
+  "Number of executed Spark inst:\t0.\n",
+  "\n",
+  "\n"
  ]
 }
],
"source": [
-"from systemml import MLContext, dml, jvm_stdout\n",
-"ml = MLContext(sc)\n",
-"\n",
-"print (ml.buildTime())"
+"prog=\"\"\"\n",
+"v1 = matrix ('2 1 8 3 5 6 7', rows = 7, cols = 1 )\n",
+"v2 = matrix ('80 20 50', rows = 3, cols = 1 )\n",
+"\n",
+"nv1 = nrow (v1);\n",
+"nv2 = nrow (v2);\n",
+"R = cbind (\n",
+"  matrix (v1 %*% matrix(1, 1, nv2), nv1*nv2, 1),\n",
+"  matrix (matrix(1, nv1, 1) %*% t(v2), nv1*nv2, 1))\n",
+"\n",
+"print(toString(v1));\n",
+"print(toString(v2));\n",
+"print(toString(R));\n",
+"\"\"\"\n",
+"res = ml.execute(dml(prog))"
]
   },
   {
@@ -52,12 +123,12 @@
"cell_type": "markdown",
"metadata": {},
"source": [
-"This functions replaces NaN in column with mode of column"
+"This functions replaces NaN in 

systemml git commit: [SYSTEMML-2344, 48, 49, 52] Various improvements local paramserv backend

2018-06-04 Thread mboehm7
Repository: systemml
Updated Branches:
  refs/heads/master 2b86a4d92 -> d44b3280f


[SYSTEMML-2344,48,49,52] Various improvements local paramserv backend

Closes #777.


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

Branch: refs/heads/master
Commit: d44b3280f2132deb303e955ff5b9a17daac4c31e
Parents: 2b86a4d
Author: EdgarLGB 
Authored: Sun Jun 3 23:07:02 2018 -0700
Committer: Matthias Boehm 
Committed: Sun Jun 3 23:07:03 2018 -0700

--
 .../java/org/apache/sysml/parser/Statement.java |   8 +-
 .../controlprogram/paramserv/LocalPSWorker.java |  99 ++---
 .../paramserv/LocalParamServer.java |  40 +-
 .../controlprogram/paramserv/PSWorker.java  | 113 +++---
 .../controlprogram/paramserv/ParamServer.java   | 227 +--
 .../paramserv/ParamservUtils.java   |  12 +-
 .../cp/ParamservBuiltinCPInstruction.java   | 260 +
 .../functions/paramserv/ParamservFuncTest.java  |  39 +-
 .../paramserv/mnist_lenet_paramserv.dml |   1 -
 .../paramserv/mnist_lenet_paramserv_asp.dml | 376 +++
 .../mnist_lenet_paramserv_minimum_version.dml   |   1 -
 .../paramserv/paramserv-agg-service-failed.dml  |  53 +++
 .../paramserv/paramserv-large-parallelism.dml   |  52 +++
 .../functions/paramserv/paramserv-nn-asp.dml|  52 +++
 .../paramserv/paramserv-worker-failed.dml   |  53 +++
 .../paramserv-wrong-aggregate-func.dml  |  50 +++
 16 files changed, 1117 insertions(+), 319 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/systemml/blob/d44b3280/src/main/java/org/apache/sysml/parser/Statement.java
--
diff --git a/src/main/java/org/apache/sysml/parser/Statement.java 
b/src/main/java/org/apache/sysml/parser/Statement.java
index 1987d31..d49eada 100644
--- a/src/main/java/org/apache/sysml/parser/Statement.java
+++ b/src/main/java/org/apache/sysml/parser/Statement.java
@@ -77,7 +77,13 @@ public abstract class Statement implements ParseInfo
}
public static final String PS_UPDATE_TYPE = "utype";
public enum PSUpdateType {
-   BSP, ASP, SSP
+   BSP, ASP, SSP;
+   public boolean isBSP() {
+   return this == BSP;
+   }
+   public boolean isASP() {
+   return this == ASP;
+   }
}
public static final String PS_FREQUENCY = "freq";
public enum PSFrequency {

http://git-wip-us.apache.org/repos/asf/systemml/blob/d44b3280/src/main/java/org/apache/sysml/runtime/controlprogram/paramserv/LocalPSWorker.java
--
diff --git 
a/src/main/java/org/apache/sysml/runtime/controlprogram/paramserv/LocalPSWorker.java
 
b/src/main/java/org/apache/sysml/runtime/controlprogram/paramserv/LocalPSWorker.java
index 181b866..e902aea 100644
--- 
a/src/main/java/org/apache/sysml/runtime/controlprogram/paramserv/LocalPSWorker.java
+++ 
b/src/main/java/org/apache/sysml/runtime/controlprogram/paramserv/LocalPSWorker.java
@@ -19,79 +19,82 @@
 
 package org.apache.sysml.runtime.controlprogram.paramserv;
 
+import java.util.concurrent.Callable;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sysml.parser.Statement;
+import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.runtime.controlprogram.caching.MatrixObject;
 import org.apache.sysml.runtime.controlprogram.context.ExecutionContext;
 import org.apache.sysml.runtime.instructions.cp.ListObject;
 
-public class LocalPSWorker extends PSWorker implements Runnable {
+public class LocalPSWorker extends PSWorker implements Callable {
 
protected static final Log LOG = 
LogFactory.getLog(LocalPSWorker.class.getName());
 
-   public LocalPSWorker(long workerID, String updFunc, 
Statement.PSFrequency freq, int epochs, long batchSize,
-   ListObject hyperParams, ExecutionContext ec, 
ParamServer ps) {
-   super(workerID, updFunc, freq, epochs, batchSize, hyperParams, 
ec, ps);
+   public LocalPSWorker(int workerID, String updFunc, 
Statement.PSFrequency freq, int epochs, long batchSize,
+   ExecutionContext ec, ParamServer ps) {
+   super(workerID, updFunc, freq, epochs, batchSize, ec, ps);
}
 
@Override
-   public void run() {
+   public Void call() throws Exception {
+   try {
+   long dataSize = _features.getNumRows();
+   for (int i = 0; i < _epochs; i++) {
+