From d281a54ae160967b727748bd17e2f125abec7b58 Mon Sep 17 00:00:00 2001 From: David Wood Date: Fri, 26 May 2023 08:49:50 -0400 Subject: [PATCH 1/2] Change from dl4j M1.1 to M2.1 --- .../.settings/org.eclipse.wst.validation.prefs | 2 ++ aisp-core/aisp-core-main/.classpath | 8 ++++---- .../.settings/org.eclipse.wst.common.component | 6 ++++++ aisp-core/aisp-core-main/pom.xml | 9 +++++++-- 4 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 aisp-core/aisp-core-main-gpu/.settings/org.eclipse.wst.validation.prefs diff --git a/aisp-core/aisp-core-main-gpu/.settings/org.eclipse.wst.validation.prefs b/aisp-core/aisp-core-main-gpu/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/aisp-core/aisp-core-main-gpu/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/aisp-core/aisp-core-main/.classpath b/aisp-core/aisp-core-main/.classpath index b21bc46..fa3b990 100644 --- a/aisp-core/aisp-core-main/.classpath +++ b/aisp-core/aisp-core-main/.classpath @@ -1,6 +1,6 @@ - + @@ -13,15 +13,15 @@ + - - + - + diff --git a/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component b/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component index a4de5c7..15c2108 100644 --- a/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component +++ b/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component @@ -1,6 +1,12 @@ + + + + + + diff --git a/aisp-core/aisp-core-main/pom.xml b/aisp-core/aisp-core-main/pom.xml index 78b2aeb..a0c0cd8 100644 --- a/aisp-core/aisp-core-main/pom.xml +++ b/aisp-core/aisp-core-main/pom.xml @@ -62,13 +62,13 @@ org.deeplearning4j deeplearning4j-nn - 1.0.0-M1.1 + 1.0.0-M2.1 provided org.nd4j nd4j-native-platform - 1.0.0-M1.1 + 1.0.0-M2.1 provided @@ -152,5 +152,10 @@ test + + org.openjdk.nashorn + nashorn-core + 15.4 + From be1958380c6d59342df8a851933f0cf7e86ce922 Mon Sep 17 00:00:00 2001 From: David Wood Date: Fri, 26 May 2023 11:30:21 -0400 Subject: [PATCH 2/2] Change from nashorn to graal javascript interpreter, thus enabling Java 17 runtimes. --- aisp-core/aisp-core-main-cpu/.classpath | 7 +-- aisp-core/aisp-core-main/.classpath | 8 +-- .../org.eclipse.wst.common.component | 5 ++ aisp-core/aisp-core-main/pom.xml | 36 ++++++++++++- .../java/org/eng/aisp/util/JScriptEngine.java | 52 ++++++++++++------- .../factory/ClassifierFactoriesTest.java | 2 +- 6 files changed, 79 insertions(+), 31 deletions(-) diff --git a/aisp-core/aisp-core-main-cpu/.classpath b/aisp-core/aisp-core-main-cpu/.classpath index 5e8a55f..1c1e06f 100644 --- a/aisp-core/aisp-core-main-cpu/.classpath +++ b/aisp-core/aisp-core-main-cpu/.classpath @@ -8,13 +8,8 @@ - - - - - - + diff --git a/aisp-core/aisp-core-main/.classpath b/aisp-core/aisp-core-main/.classpath index b21bc46..fa3b990 100644 --- a/aisp-core/aisp-core-main/.classpath +++ b/aisp-core/aisp-core-main/.classpath @@ -1,6 +1,6 @@ - + @@ -13,15 +13,15 @@ + - - + - + diff --git a/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component b/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component index a4de5c7..85ebb5b 100644 --- a/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component +++ b/aisp-core/aisp-core-main/.settings/org.eclipse.wst.common.component @@ -1,6 +1,11 @@ + + + + + diff --git a/aisp-core/aisp-core-main/pom.xml b/aisp-core/aisp-core-main/pom.xml index 78b2aeb..3535faa 100644 --- a/aisp-core/aisp-core-main/pom.xml +++ b/aisp-core/aisp-core-main/pom.xml @@ -9,6 +9,9 @@ aisp-core-main + + 21.3.6 + @@ -140,14 +143,43 @@ 2.1 compile - + + org.graalvm.sdk + graal-sdk + ${graalvm.version} + + + org.graalvm.js + js + ${graalvm.version} + runtime + + + org.graalvm.js + js-scriptengine + ${graalvm.version} + + + org.graalvm.tools + profiler + ${graalvm.version} + runtime + + + org.graalvm.tools + chromeinspector + ${graalvm.version} + runtime + + org.reflections - reflections + + reflections 0.9.10 test diff --git a/aisp-core/aisp-core-main/src/main/java/org/eng/aisp/util/JScriptEngine.java b/aisp-core/aisp-core-main/src/main/java/org/eng/aisp/util/JScriptEngine.java index 6d4d9d3..66b174d 100644 --- a/aisp-core/aisp-core-main/src/main/java/org/eng/aisp/util/JScriptEngine.java +++ b/aisp-core/aisp-core-main/src/main/java/org/eng/aisp/util/JScriptEngine.java @@ -21,6 +21,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.function.Predicate; import javax.script.Bindings; import javax.script.ScriptContext; @@ -43,7 +44,22 @@ public JScriptEngine(List allowedClasses) { // if (engine == null && requireSecurity) // throw new IllegalArgumentException("Could not enable security"); // } else { - engine = new ScriptEngineManager().getEngineByName("nashorn"); + System.setProperty("polyglot.engine.WarnInterpreterOnly", "false"); // Turn off graal interpreter warnings below +// [To redirect Truffle log output to a file use one of the following options: +// * '--log.file=' if the option is passed using a guest language launcher. +// * '-Dpolyglot.log.file=' if the option is passed using the host Java launcher. +// * Configure logging using the polyglot embedding API.] +// [engine] WARNING: The polyglot context is using an implementation that does not support runtime compilation. +// The guest application code will therefore be executed in interpreted mode only. +// Execution only in interpreted mode will strongly impact the guest application performance. +// For more information on using GraalVM see https://www.graalvm.org/java/quickstart/. +// To disable this warning the '--engine.WarnInterpreterOnly=false' option or use the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property. + ScriptEngineManager sem= new ScriptEngineManager(); +// List sef = sem.getEngineFactories(); + engine = sem.getEngineByName("JavaScript"); // The graal engine (not graal.js apparently). + Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE); + bindings.put("polyglot.js.allowHostAccess", true); + bindings.put("polyglot.js.allowHostClassLookup", (Predicate) s -> true); // } } @@ -121,24 +137,24 @@ private static Object toJava(Object scriptObj) { if (scriptObj == null) return null; - if (scriptObj instanceof jdk.nashorn.api.scripting.ScriptObjectMirror) { - jdk.nashorn.api.scripting.ScriptObjectMirror scriptObjectMirror = (jdk.nashorn.api.scripting.ScriptObjectMirror) scriptObj; - if (scriptObjectMirror.isArray()) { - List list = new ArrayList(); - for (Map.Entry entry : scriptObjectMirror.entrySet()) { - list.add(toJava(entry.getValue())); - } - return list; - } else { - Map map = new HashMap(); - for (Map.Entry entry : scriptObjectMirror.entrySet()) { - map.put(entry.getKey(), toJava(entry.getValue())); - } - return map; - } - } else { +// if (scriptObj instanceof jdk.nashorn.api.scripting.ScriptObjectMirror) { +// jdk.nashorn.api.scripting.ScriptObjectMirror scriptObjectMirror = (jdk.nashorn.api.scripting.ScriptObjectMirror) scriptObj; +// if (scriptObjectMirror.isArray()) { +// List list = new ArrayList(); +// for (Map.Entry entry : scriptObjectMirror.entrySet()) { +// list.add(toJava(entry.getValue())); +// } +// return list; +// } else { +// Map map = new HashMap(); +// for (Map.Entry entry : scriptObjectMirror.entrySet()) { +// map.put(entry.getKey(), toJava(entry.getValue())); +// } +// return map; +// } +// } else { return scriptObj; - } +// } } /** diff --git a/aisp-core/aisp-core-main/src/test/java/org/eng/aisp/classifier/factory/ClassifierFactoriesTest.java b/aisp-core/aisp-core-main/src/test/java/org/eng/aisp/classifier/factory/ClassifierFactoriesTest.java index 4e6cf01..d0c61ca 100644 --- a/aisp-core/aisp-core-main/src/test/java/org/eng/aisp/classifier/factory/ClassifierFactoriesTest.java +++ b/aisp-core/aisp-core-main/src/test/java/org/eng/aisp/classifier/factory/ClassifierFactoriesTest.java @@ -137,7 +137,7 @@ public void testJSYT_KNNMergeLp() throws AISPException { Map bindings = new HashMap(); bindings.put("distanceMetric", "Lp"); bindings.put("maxListSize", size); - for ( String multiplier : trueFalse) { + for ( float multiplier : multipliers) { bindings.put("stddevMultiplier", multiplier); for ( String outliers : trueFalse) { bindings.put("enableOutliers", outliers);