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/11/04 01:58:50 UTC

[5/5] systemml git commit: [SYSTEMML-1984] Fix special cases of JMLC prepare/execute sequences

[SYSTEMML-1984] Fix special cases of JMLC prepare/execute sequences

This patch fixes issues with special cases of prepare and execute
sequences on the same connection, which currently fail due to the
cleanup of thread-local configurations after execute. 

Furthermore, this also adds the existing JMLC tests from building the
lite jar to our testsuite in order to avoid regressions. This also
includes a minor fix of these tests regarding the recently modified
L2SVM predict script.


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

Branch: refs/heads/master
Commit: 820b5304672a81093787670c70b1c083daab446d
Parents: 4f60ded
Author: Matthias Boehm <mb...@gmail.com>
Authored: Fri Nov 3 18:59:00 2017 -0700
Committer: Matthias Boehm <mb...@gmail.com>
Committed: Fri Nov 3 18:59:30 2017 -0700

----------------------------------------------------------------------
 .../org/apache/sysml/api/jmlc/Connection.java   | 10 ++-
 .../sysml/utils/lite/BuildLiteExecution.java    |  4 +-
 .../functions/jmlc/BuildLiteJarTest.java        | 87 ++++++++++++++++++++
 .../functions/jmlc/ZPackageSuite.java           |  1 +
 4 files changed, 97 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/systemml/blob/820b5304/src/main/java/org/apache/sysml/api/jmlc/Connection.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/jmlc/Connection.java b/src/main/java/org/apache/sysml/api/jmlc/Connection.java
index 4caa86c..e96e0aa 100644
--- a/src/main/java/org/apache/sysml/api/jmlc/Connection.java
+++ b/src/main/java/org/apache/sysml/api/jmlc/Connection.java
@@ -131,7 +131,7 @@ public class Connection implements Closeable
 		//create default configuration
 		_dmlconf = new DMLConfig();
 		
-		//set thread-local configurations for compilation
+		//set thread-local configurations for compilation and read
 		ConfigurationManager.setLocalConfig(_dmlconf);
 		ConfigurationManager.setLocalConfig(_cconf);
 	}
@@ -150,7 +150,7 @@ public class Connection implements Closeable
 		for( ConfigType configType : configs )
 			_cconf.set(configType, true);
 		
-		//set thread-local configurations for compilation
+		//set thread-local configurations for compilation and read
 		ConfigurationManager.setLocalConfig(_dmlconf);
 		ConfigurationManager.setLocalConfig(_cconf);
 	}
@@ -186,7 +186,7 @@ public class Connection implements Closeable
 		throws DMLException 
 	{
 		DMLScript.SCRIPT_TYPE = parsePyDML ? ScriptType.PYDML : ScriptType.DML;
-
+		
 		//check for valid names of passed arguments
 		String[] invalidArgs = args.keySet().stream()
 			.filter(k -> k==null || !k.startsWith("$")).toArray(String[]::new);
@@ -202,6 +202,10 @@ public class Connection implements Closeable
 		//simplified compilation chain
 		Program rtprog = null;
 		try {
+			//set thread-local configurations for compilation
+			ConfigurationManager.setLocalConfig(_dmlconf);
+			ConfigurationManager.setLocalConfig(_cconf);
+			
 			//parsing
 			ParserWrapper parser = ParserFactory.createParser(parsePyDML ? ScriptType.PYDML : ScriptType.DML);
 			DMLProgram prog = parser.parse(null, script, args);

http://git-wip-us.apache.org/repos/asf/systemml/blob/820b5304/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java b/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
index b2b2574..4ce6f33 100644
--- a/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
+++ b/src/main/java/org/apache/sysml/utils/lite/BuildLiteExecution.java
@@ -330,7 +330,7 @@ public class BuildLiteExecution {
 		m.put("$confusion", "temp/2.csv");
 		m.put("$scores", "temp/3.csv");
 
-		PreparedScript l2svmPredict = conn.prepareScript(s, m, new String[] { "X", "y", "w", "fmt" },
+		PreparedScript l2svmPredict = conn.prepareScript(s, m, new String[] { "X", "Y", "w", "fmt" },
 				new String[] { "scores", "confusion_mat" }, false);
 
 		double[][] testData = new double[150][3];
@@ -349,7 +349,7 @@ public class BuildLiteExecution {
 			double[] row = new double[] { one };
 			testLabels[i] = row;
 		}
-		l2svmPredict.setMatrix("y", testLabels);
+		l2svmPredict.setMatrix("Y", testLabels);
 
 		l2svmPredict.setMatrix("w", model);
 

http://git-wip-us.apache.org/repos/asf/systemml/blob/820b5304/src/test/java/org/apache/sysml/test/integration/functions/jmlc/BuildLiteJarTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/functions/jmlc/BuildLiteJarTest.java b/src/test/java/org/apache/sysml/test/integration/functions/jmlc/BuildLiteJarTest.java
new file mode 100644
index 0000000..24c400f
--- /dev/null
+++ b/src/test/java/org/apache/sysml/test/integration/functions/jmlc/BuildLiteJarTest.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.sysml.test.integration.functions.jmlc;
+
+import org.apache.sysml.test.integration.AutomatedTestBase;
+import org.apache.sysml.utils.lite.BuildLiteExecution;
+import org.junit.Test;
+
+public class BuildLiteJarTest extends AutomatedTestBase 
+{
+	@Override
+	public void setUp() {
+		//do nothing
+	}
+	
+	@Test
+	public void testJMLCHelloWorld() throws Exception {
+		BuildLiteExecution.jmlcHelloWorld();
+	}
+	
+	@Test
+	public void testJMLCScoringExample() throws Exception {
+		BuildLiteExecution.jmlcScoringExample();
+	}
+	
+	@Test
+	public void testJMLCUnivariateStats() throws Exception {
+		BuildLiteExecution.jmlcUnivariateStatistics();
+	}
+	
+	@Test
+	public void testJMLCWriteMatrix() throws Exception {
+		BuildLiteExecution.jmlcWriteMatrix();
+	}
+	
+	@Test
+	public void testJMLCReadMatrix() throws Exception {
+		BuildLiteExecution.jmlcReadMatrix();
+	}
+	
+	@Test
+	public void testJMLCBasics() throws Exception {
+		BuildLiteExecution.jmlcBasics();
+	}
+	
+	@Test
+	public void testJMLCL2SVM() throws Exception {
+		BuildLiteExecution.jmlcL2SVM();
+	}
+	
+	@Test
+	public void testJMLCLinReg() throws Exception {
+		BuildLiteExecution.jmlcLinReg();
+	}
+	
+	@Test
+	public void testJMLCALS() throws Exception {
+		BuildLiteExecution.jmlcALS();
+	}
+	
+	@Test
+	public void testJMLCKmeans() throws Exception {
+		BuildLiteExecution.jmlcKmeans();
+	}
+	
+	@Test
+	public void testJMLCTests() throws Exception {
+		BuildLiteExecution.jmlcTests();
+	}
+}

http://git-wip-us.apache.org/repos/asf/systemml/blob/820b5304/src/test_suites/java/org/apache/sysml/test/integration/functions/jmlc/ZPackageSuite.java
----------------------------------------------------------------------
diff --git a/src/test_suites/java/org/apache/sysml/test/integration/functions/jmlc/ZPackageSuite.java b/src/test_suites/java/org/apache/sysml/test/integration/functions/jmlc/ZPackageSuite.java
index 87244aa..3d5c13a 100644
--- a/src/test_suites/java/org/apache/sysml/test/integration/functions/jmlc/ZPackageSuite.java
+++ b/src/test_suites/java/org/apache/sysml/test/integration/functions/jmlc/ZPackageSuite.java
@@ -26,6 +26,7 @@ import org.junit.runners.Suite;
  *  won't run two of them at once. */
 @RunWith(Suite.class)
 @Suite.SuiteClasses({
+	BuildLiteJarTest.class,
 	FrameCastingTest.class,
 	FrameDecodeTest.class,
 	FrameEncodeTest.class,