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:");