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,