Add jbang script and configuration to make easy to run#90
Conversation
- Create LlamaTornadoCli.java with JBang directives for script-like execution - Add CLI to both root directory (for JBang) and src/main/java (for Maven builds) - Include comprehensive JBang configuration with Java 21, Vector API, and TornadoVM setup - Add example script (run-jbang-example.sh) for quick testing - Update README with JBang usage section, examples, and comparison table - Enables running llama-tornado without building, similar to Jlama's approach This allows users to run: jbang LlamaTornadoCli.java -m model.gguf -p "prompt"
- Remove JBang directives (shebang, //JAVA, //DEPS, etc.) from src/main/java version - Keep JBang directives only in root LlamaTornadoCli.java for JBang usage - Update javadoc to clarify this version is for Maven builds - Fixes Maven compilation errors caused by JBang-specific syntax - Root LlamaTornadoCli.java remains unchanged for JBang script usage
- Remove #!/usr/bin/env jbang from LlamaTornadoCli.java - JBang directives should use only comment-based syntax (//JAVA, //DEPS) - Matches the pattern used in TornadoVM JBang examples - Update README to reflect correct JBang directive format - Fixes JBang compilation error with javac This follows the standard JBang pattern where shebang is not needed when running with 'jbang file.java' command.
- Create TornadoFlags.java with complete TornadoVM runtime setup - Include GraalVM compiler dependency, module exports, and runtime config - Reference TornadoFlags.java from LlamaTornadoCli.java using //SOURCES - Remove duplicate configuration from main CLI file for cleaner structure - Update README to document TornadoFlags.java and link to TornadoVM examples - Follows the same pattern as TornadoVM JBang examples This provides proper JVMCI compiler and TornadoVM runtime configuration when running with JBang, enabling GPU acceleration support.
There was a problem hiding this comment.
Pull request overview
This PR adds JBang script support to enable running llama-tornado as a pure Java script without requiring a full Maven build, providing a quick experimentation path similar to Jlama's CLI.
Key Changes:
- Added JBang-compatible CLI script (
LlamaTornadoCli.java) in the root directory with dependency and configuration directives - Created
TornadoFlags.javato centralize TornadoVM JVM configuration - Updated
Options.printUsage()visibility from package-private to public for CLI access
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
LlamaTornadoCli.java |
New root-level JBang script providing CLI entry point with dependency declarations |
TornadoFlags.java |
New configuration file containing TornadoVM JVM flags and module exports for JBang |
src/main/java/org/beehive/gpullama3/cli/LlamaTornadoCli.java |
Commented-out version of CLI for potential Maven compilation |
src/main/java/org/beehive/gpullama3/Options.java |
Changed printUsage() visibility to public for CLI usage |
examples/run-jbang-example.sh |
Example bash script demonstrating JBang usage with validation checks |
README.md |
Documentation update explaining JBang usage, comparison with traditional script, and setup instructions |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
LlamaTornadoCli.java
Outdated
|
|
||
| // Check if help requested | ||
| if (args.length == 0 || hasHelpFlag(args)) { | ||
| // Options.printUsage(System.out); |
There was a problem hiding this comment.
The help usage message is commented out, which means when users run the CLI with no arguments or with --help/-h flags, they will see no usage information before the program exits. This makes the CLI difficult to use. The Options.printUsage method was made public in this PR specifically to be callable here, so this line should be uncommented to actually display the usage information to users.
| // Options.printUsage(System.out); | |
| Options.printUsage(System.out); |
| //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. This version is compiled as part of the Maven build. | ||
| // * | ||
| // * For JBang usage, use the LlamaTornadoCli.java file in the root directory. | ||
| // * | ||
| // * 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 | ||
| // * java -cp target/gpu-llama3-0.3.1.jar \ | ||
| // * org.beehive.gpullama3.cli.LlamaTornadoCli \ | ||
| // * -m model.gguf --interactive | ||
| // * | ||
| // * # Single instruction mode | ||
| // * java -cp target/gpu-llama3-0.3.1.jar \ | ||
| // * org.beehive.gpullama3.cli.LlamaTornadoCli \ | ||
| // * -m model.gguf -p "Explain quantum computing" | ||
| // * | ||
| // * # With TornadoVM acceleration (requires TornadoVM runtime setup) | ||
| // * java -cp target/gpu-llama3-0.3.1.jar \ | ||
| // * org.beehive.gpullama3.cli.LlamaTornadoCli \ | ||
| // * -m model.gguf -p "Hello" --use-tornadovm true | ||
| // */ | ||
| //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 | ||
| // System.out.println("Loading model from: " + options.modelPath()); | ||
| // Model model = loadModel(options); | ||
| // System.out.println("Model loaded successfully!"); | ||
| // | ||
| // // 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 ║ | ||
| // ╚══════════════════════════════════════════════════════════╝ | ||
| // """); | ||
| // } | ||
| //} |
There was a problem hiding this comment.
The entire LlamaTornadoCli class is commented out. If this file is intended to be part of the Maven build as mentioned in the documentation (line 17: "This version is compiled as part of the Maven build"), then the code should be uncommented. If this file is deprecated or no longer needed, it should be removed entirely rather than left as commented code, which adds confusion and maintenance burden.
| // === 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 | ||
|
|
There was a problem hiding this comment.
The TornadoFlags class contains extensive JVM configuration comments (lines 1-176) but all the actual configuration directives are commented out. This means none of the TornadoVM configuration will actually be applied when this file is sourced by JBang via the //SOURCES directive. If these flags are necessary for TornadoVM to work properly (as suggested by the class documentation), they should be uncommented. If they're not needed, the commented configuration should be removed to reduce confusion.
| System.out.println(""" | ||
| ╔══════════════════════════════════════════════════════════╗ | ||
| ║ Llama-Tornado CLI - GPU-Accelerated LLM ║ | ||
| ║ Powered by TornadoVM & Java 21 ║ |
There was a problem hiding this comment.
There is inconsistent spacing in this table cell. The word "Powered" has extra trailing spaces compared to other cells, which affects the visual alignment of the banner ASCII art.
| ║ Powered by TornadoVM & Java 21 ║ | |
| ║ Powered by TornadoVM & Java 21 ║ |
README.md
Outdated
| - Download the required Maven dependencies automatically | ||
| - Load TornadoVM configuration from `TornadoFlags.java` | ||
|
|
||
| The `TornadoFlags.java` file contains all TornadoVM-specific JVM configuration (module exports, runtime settings, etc.), keeping the main CLI file clean and maintainable. This follows the same pattern as the [TornadoVM JBang examples](https://gist.github.com/maxandersen/14ecdc03c7c57fc59dfeb7ba37dd4c9c). |
There was a problem hiding this comment.
The documentation states that "TornadoFlags.java file contains all TornadoVM-specific JVM configuration (module exports, runtime settings, etc.)" However, all the TornadoVM configuration directives in TornadoFlags.java are commented out, so this statement is misleading. The documentation should either be updated to reflect that TornadoVM configuration is not currently included, or the TornadoFlags.java file should be fixed to actually contain the uncommented configuration.
| The `TornadoFlags.java` file contains all TornadoVM-specific JVM configuration (module exports, runtime settings, etc.), keeping the main CLI file clean and maintainable. This follows the same pattern as the [TornadoVM JBang examples](https://gist.github.com/maxandersen/14ecdc03c7c57fc59dfeb7ba37dd4c9c). | |
| The `TornadoFlags.java` file is provided as a template for TornadoVM-specific JVM configuration (module exports, runtime settings, etc.), keeping the main CLI file clean and maintainable. By default, all configuration directives in this file are commented out; you can uncomment or add your own settings as needed. This follows the same pattern as the [TornadoVM JBang examples](https://gist.github.com/maxandersen/14ecdc03c7c57fc59dfeb7ba37dd4c9c). |
|
|
1 similar comment
|
|
stratika
left a comment
There was a problem hiding this comment.
LGTM, it works on my system.
how to test