diff --git a/LlamaTornadoCli.java b/LlamaTornadoCli.java
new file mode 100755
index 00000000..5a502aeb
--- /dev/null
+++ b/LlamaTornadoCli.java
@@ -0,0 +1,145 @@
+//JAVA 21
+//PREVIEW
+//DEPS io.github.beehive-lab:gpu-llama3:0.3.2-dev
+//DEPS io.github.beehive-lab:tornado-api:2.1.0
+//DEPS io.github.beehive-lab:tornado-runtime:2.1.0
+
+//SOURCES TornadoFlags.java
+// === Set to not get annoying warnings about annotation processing
+//JAVAC_OPTIONS -proc:full
+
+// Compiler options
+//JAVAC_OPTIONS --enable-preview
+//JAVAC_OPTIONS --add-modules=jdk.incubator.vector
+
+// JVM options for basic setup
+//JAVA_OPTIONS --enable-preview
+//JAVA_OPTIONS --add-modules=jdk.incubator.vector
+
+package org.beehive.gpullama3.cli;
+
+import org.beehive.gpullama3.Options;
+import org.beehive.gpullama3.auxiliary.LastRunMetrics;
+import org.beehive.gpullama3.inference.sampler.Sampler;
+import org.beehive.gpullama3.model.Model;
+
+import java.io.IOException;
+
+import static org.beehive.gpullama3.inference.sampler.Sampler.createSampler;
+import static org.beehive.gpullama3.model.loader.ModelLoader.loadModel;
+
+/**
+ * LlamaTornadoCli - Pure Java CLI for running llama-tornado models
+ *
+ * This class provides a standalone command-line interface for running LLaMA models
+ * with TornadoVM acceleration. It can be executed directly with JBang or as a
+ * compiled Java application.
+ *
+ * Usage with JBang:
+ * jbang LlamaTornadoCli.java --model path/to/model.gguf --prompt "Your prompt here"
+ *
+ * Usage as compiled application:
+ * java --enable-preview --add-modules jdk.incubator.vector \
+ * -cp target/gpu-llama3-0.3.1.jar \
+ * org.beehive.gpullama3.cli.LlamaTornadoCli \
+ * --model path/to/model.gguf --prompt "Your prompt here"
+ *
+ * Examples:
+ * # Interactive chat mode
+ * jbang LlamaTornadoCli.java -m model.gguf --interactive
+ *
+ * # Single instruction mode
+ * jbang LlamaTornadoCli.java -m model.gguf -p "Explain quantum computing"
+ *
+ * # With TornadoVM acceleration
+ * jbang LlamaTornadoCli.java -m model.gguf -p "Hello" --use-tornadovm true
+ *
+ * # Custom temperature and sampling
+ * jbang LlamaTornadoCli.java -m model.gguf -p "Tell me a story" \
+ * --temperature 0.7 --top-p 0.9 --max-tokens 512
+ */
+public class LlamaTornadoCli {
+
+ // Configuration flags
+ public static final boolean USE_VECTOR_API = Boolean.parseBoolean(
+ System.getProperty("llama.VectorAPI", "true"));
+ public static final boolean SHOW_PERF_INTERACTIVE = Boolean.parseBoolean(
+ System.getProperty("llama.ShowPerfInteractive", "true"));
+
+ /**
+ * Run a single instruction and display the response
+ */
+ private static void runSingleInstruction(Model model, Sampler sampler, Options options) {
+ String response = model.runInstructOnce(sampler, options);
+ System.out.println(response);
+ if (SHOW_PERF_INTERACTIVE) {
+ LastRunMetrics.printMetrics();
+ }
+ }
+
+ /**
+ * Main entry point for the CLI application
+ *
+ * @param args command-line arguments (see Options.parseOptions for details)
+ * @throws IOException if model loading fails
+ */
+ public static void main(String[] args) throws IOException {
+ // Print banner
+ printBanner();
+
+ // Check if help requested
+ if (args.length == 0 || hasHelpFlag(args)) {
+ Options.printUsage(System.out);
+ System.exit(0);
+ }
+
+ try {
+ // Parse options
+ Options options = Options.parseOptions(args);
+
+ // Load model
+ Model model = loadModel(options);
+
+ // Create sampler
+ Sampler sampler = createSampler(model, options);
+
+ // Run in interactive or single-instruction mode
+ if (options.interactive()) {
+ System.out.println("Starting interactive chat mode...");
+ System.out.println("Type your messages below (Ctrl+C to exit):");
+ System.out.println();
+ model.runInteractive(sampler, options);
+ } else {
+ runSingleInstruction(model, sampler, options);
+ }
+ } catch (Exception e) {
+ System.err.println("Error: " + e.getMessage());
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ /**
+ * Check if help flag is present in arguments
+ */
+ private static boolean hasHelpFlag(String[] args) {
+ for (String arg : args) {
+ if (arg.equals("--help") || arg.equals("-h")) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Print ASCII banner
+ */
+ private static void printBanner() {
+ System.out.println("""
+ ╔══════════════════════════════════════════════════════════╗
+ ║ Llama-Tornado CLI - GPU-Accelerated LLM ║
+ ║ Powered by TornadoVM & Java 21 ║
+ ╚══════════════════════════════════════════════════════════╝
+ """);
+ }
+}
diff --git a/Makefile b/Makefile
index dd0eac84..3f44bac9 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@
MVN = ./mvnw
# Default target
-all: package
+all: install
# Build the project (clean and package without tests)
build: clean package
@@ -14,6 +14,9 @@ build: clean package
clean:
$(MVN) clean
+install:
+ $(MVN) install -DskipTests
+
# Package the project without running tests
package:
$(MVN) package -DskipTests
diff --git a/README.md b/README.md
index 01cf752d..3f0747d9 100644
--- a/README.md
+++ b/README.md
@@ -242,6 +242,40 @@ llama-tornado --gpu --model beehive-llama-3.2-1b-instruct-fp16.gguf --prompt "te
The above model can we swapped with one of the other models, such as `beehive-llama-3.2-3b-instruct-fp16.gguf` or `beehive-llama-3.2-8b-instruct-fp16.gguf`, depending on your needs.
Check models below.
+-----------
+
+## 🚀 Running with JBang (Pure Java CLI)
+
+You can run llama-tornado as a pure Java script using [JBang](https://www.jbang.dev/) without building or installing anything. This provides a simple, script-like experience similar to [Jlama's CLI](https://github.com/tjake/Jlama).
+
+### Prerequisites for JBang
+
+1. **Install JBang**: Follow the [JBang installation guide](https://www.jbang.dev/download/)
+2. **TornadoVM SDK**: You still need TornadoVM installed and `TORNADO_SDK` environment variable set (see Setup section above)
+
+### Quick Start with JBang
+
+```bash
+# Basic usage - interactive chat mode
+jbang LlamaTornadoCli.java -m beehive-llama-3.2-1b-instruct-fp16.gguf --interactive
+
+# Single instruction mode
+jbang LlamaTornadoCli.java -m beehive-llama-3.2-1b-instruct-fp16.gguf -p "Explain quantum computing"
+
+# With TornadoVM GPU acceleration
+jbang LlamaTornadoCli.java -m beehive-llama-3.2-1b-instruct-fp16.gguf \
+ -p "Tell me a joke" --use-tornadovm true
+
+# Custom generation parameters
+jbang LlamaTornadoCli.java -m beehive-llama-3.2-1b-instruct-fp16.gguf \
+ -p "Write a short story" \
+ --temperature 0.7 \
+ --top-p 0.9 \
+ --max-tokens 512
+```
+
+-----------
+
## Collection of Tested Models
### Llama3.2 Collection
diff --git a/TornadoFlags.java b/TornadoFlags.java
new file mode 100644
index 00000000..df956937
--- /dev/null
+++ b/TornadoFlags.java
@@ -0,0 +1,191 @@
+// === Set to not get annoying warnings about annotation processing
+//JAVAC_OPTIONS -proc:full
+
+// === Deps for GraalVM compiler (needed for TornadoVM) ===
+//DEPS org.graalvm.compiler:compiler:23.1.0
+
+// === JVM mode and memory settings ===
+//JAVA_OPTIONS -server
+//JAVA_OPTIONS -XX:-UseCompressedOops
+//JAVA_OPTIONS -XX:+UnlockExperimentalVMOptions
+//JAVA_OPTIONS -XX:+EnableJVMCI
+//JAVA_OPTIONS -XX:-UseCompressedClassPointers
+//JAVA_OPTIONS -XX:+UseParallelGC
+
+// === Native library path ===
+//JAVA_OPTIONS -Djava.library.path=${env.TORNADO_SDK}/lib
+
+// === Tornado runtime classes ===
+//JAVA_OPTIONS -Dtornado.load.api.implementation=uk.ac.manchester.tornado.runtime.tasks.TornadoTaskGraph
+//JAVA_OPTIONS -Dtornado.load.runtime.implementation=uk.ac.manchester.tornado.runtime.TornadoCoreRuntime
+//JAVA_OPTIONS -Dtornado.load.tornado.implementation=uk.ac.manchester.tornado.runtime.common.Tornado
+//JAVA_OPTIONS -Dtornado.load.annotation.implementation=uk.ac.manchester.tornado.annotation.ASMClassVisitor
+//JAVA_OPTIONS -Dtornado.load.annotation.parallel=uk.ac.manchester.tornado.api.annotations.Parallel
+
+// === Module system ===
+//JAVA_OPTIONS --module-path ${env.TORNADO_SDK}/share/java/tornado
+//JAVA_OPTIONS --upgrade-module-path ${env.TORNADO_SDK}/share/java/graalJars
+//JAVA_OPTIONS --add-modules ALL-SYSTEM,tornado.runtime,tornado.annotation,tornado.drivers.common,tornado.drivers.opencl
+
+// === Common exports ===
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.cfg=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.hotspot.meta=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.util=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=tornado.runtime,tornado.annotation,tornado.drivers.common,jdk.internal.vm.compiler
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=tornado.runtime,tornado.drivers.common,jdk.internal.vm.compiler
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph.spi=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.gen=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodeinfo=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.calc=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.spi=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.api.runtime=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.code=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.target=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.debug=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.hotspot=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.java=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.asm=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.phases=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.graphbuilderconf=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.options=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.tiers=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.util=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.printer=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.runtime=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph.iterators=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.bytecode=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.spi=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.api.replacements=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.replacements=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.inlining=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.phases=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.type=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.extended=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.loop=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.inlining.info=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.inlining.policy=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.inlining.walker=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.loop.phases=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.debug=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.memory=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.util=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.virtual=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.constopt=tornado.runtime
+//JAVA_OPTIONS --add-opens jdk.internal.vm.ci/jdk.vm.ci.hotspot=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.gc=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.memory.address=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.replacements.nodes=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.word=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.util=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.framemap=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.alloc=tornado.runtime
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.memory=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph=tornado.runtime,tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph.iterators=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.extended=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.loop=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.calc=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.options=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.debug=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.util=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.virtual=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.loop.phases=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.util=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.tiers=tornado.drivers.common
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common=tornado.drivers.common
+
+// === OpenCL-specific exports ===
+//JAVA_OPTIONS --add-opens java.base/java.lang=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.hotspot.meta=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.replacements.classfile=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.alloc=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.util=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.cfg=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.framemap=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph.spi=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.gen=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodeinfo=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.calc=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.spi=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.code=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.debug=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.hotspot=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.java=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.asm=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.phases=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.graphbuilderconf=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.options=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.tiers=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.util=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.printer=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.graph.iterators=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.java=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.bytecode=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.spi=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.api.replacements=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.replacements=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.inlining=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.phases=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.type=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.extended=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.loop=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.loop.phases=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.debug=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.memory=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.util=tornado.drivers.opencl
+//JAVA_OPTIONS --add-opens jdk.internal.vm.ci/jdk.vm.ci.hotspot=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.asm=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.cfg=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.schedule=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.virtual.phases.ea=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.lir.ssa=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.calc=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.gen=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.match=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.memory.address=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.nodes.type=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.graph=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.phases.common.util=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.word=tornado.drivers.opencl
+//JAVA_OPTIONS --add-exports jdk.internal.vm.compiler/org.graalvm.compiler.core.common.memory=tornado.drivers.opencl
+
+package org.beehive.gpullama3.cli;
+
+/**
+ * TornadoFlags - JBang configuration file for TornadoVM runtime setup
+ *
+ * This file contains all the JVM options and module exports needed to run
+ * TornadoVM with JBang. It's referenced from LlamaTornadoCli.java using:
+ * //SOURCES TornadoFlags.java
+ *
+ * This pattern keeps the main CLI file clean while ensuring all necessary
+ * TornadoVM runtime configuration is properly set up.
+ */
+public class TornadoFlags {
+ // This class is intentionally empty - all configuration is in JBang directives above
+}
diff --git a/pom.xml b/pom.xml
index f7a88ad1..4e38bdb8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
io.github.beehive-lab
gpu-llama3
- 0.3.1
+ 0.3.2-dev
GPU Llama3
GPU-accelerated LLaMA3 inference using TornadoVM
diff --git a/src/main/java/org/beehive/gpullama3/Options.java b/src/main/java/org/beehive/gpullama3/Options.java
index bd492fd8..54d149e8 100644
--- a/src/main/java/org/beehive/gpullama3/Options.java
+++ b/src/main/java/org/beehive/gpullama3/Options.java
@@ -28,7 +28,7 @@ private static boolean getDefaultTornadoVM() {
return Boolean.parseBoolean(System.getProperty("use.tornadovm", "false"));
}
- static void printUsage(PrintStream out) {
+ public static void printUsage(PrintStream out) {
out.println("Usage: jbang Llama3.java [options]");
out.println();
out.println("Options:");