Skip to content

Commit 028932f

Browse files
authored
Merge pull request #93 from beehive-lab/docs-readme-sdkman
[docs] Update docs to use SDKMAN! and point to TornadoVM 2.2.0
2 parents a73a5ff + b58d868 commit 028932f

9 files changed

Lines changed: 44 additions & 85 deletions

File tree

.github/workflows/build-and-run.yml

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ jobs:
7676
echo "Detected TornadoVM SDK: $FULL_SDK"
7777
7878
# Export for current shell session
79-
export TORNADO_SDK="$FULL_SDK"
79+
export TORNADOVM_HOME="$FULL_SDK"
8080
export PATH="$FULL_SDK/bin:$JAVA_HOME/bin:$PATH"
8181
8282
# Save for subsequent steps
83-
echo "TORNADO_SDK=$FULL_SDK" >> $GITHUB_ENV
83+
echo "TORNADOVM_HOME=$FULL_SDK" >> $GITHUB_ENV
8484
echo "PATH=$PATH" >> $GITHUB_ENV
8585
8686
echo "=== Checking tornado CLI ==="
@@ -89,105 +89,105 @@ jobs:
8989
- name: Build GPULlama3.java
9090
run: |
9191
cd ${{ github.workspace }}
92-
echo "Using TORNADO_SDK=$TORNADO_SDK"
93-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
92+
echo "Using TORNADOVM_HOME=$TORNADOVM_HOME"
93+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
9494
tornado --version
9595
./mvnw clean package -DskipTests
9696
- name: FP16 - Run Llama-3.2-1B-Instruct-F16.gguf
9797
run: |
9898
cd ${{ github.workspace }}
99-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
99+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
100100
./llama-tornado --gpu --${{ matrix.backend.name }} \
101101
--model $MODELS_DIR/Llama-3.2-1B-Instruct-F16.gguf \
102102
--prompt "Say hello"
103103
- name: FP16 - Run Qwen3-4B-f16.gguf
104104
run: |
105105
cd ${{ github.workspace }}
106-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
106+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
107107
./llama-tornado --gpu --${{ matrix.backend.name }} \
108108
--model $MODELS_DIR/Qwen3-4B-f16.gguf \
109109
--prompt "Say hello"
110110
- name: FP16 - Run Mistral-7B-Instruct-v0.3.fp16.gguf
111111
run: |
112112
cd ${{ github.workspace }}
113-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
113+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
114114
./llama-tornado --gpu --${{ matrix.backend.name }} \
115115
--model $MODELS_DIR/Mistral-7B-Instruct-v0.3.fp16.gguf \
116116
--prompt "Say hello"
117117
- name: FP16 - Run Qwen2.5-1.5b-instruct-fp16.gguf
118118
run: |
119119
cd ${{ github.workspace }}
120-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
120+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
121121
./llama-tornado --gpu --${{ matrix.backend.name }} \
122122
--model $MODELS_DIR/qwen2.5-1.5b-instruct-fp16.gguf \
123123
--prompt "Say hello"
124124
- name: FP16 - Run Phi-3-mini-4k-instruct-fp16.gguf
125125
run: |
126126
cd ${{ github.workspace }}
127-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
127+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
128128
./llama-tornado --gpu --${{ matrix.backend.name }} \
129129
--model /$MODELS_DIR/Phi-3-mini-4k-instruct-fp16.gguf \
130130
--prompt "Say hello"
131131
- name: FP16 - Run Granite-3.2-2b-instruct-f16.gguf
132132
run: |
133133
cd ${{ github.workspace }}
134-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
134+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
135135
./llama-tornado --gpu --${{ matrix.backend.name }} \
136136
--model /$MODELS_DIR/granite-3.2-2b-instruct-f16.gguf \
137137
--prompt "Say hello"
138138
- name: FP16 - Run Granite-4.0-1b-F16.gguf
139139
run: |
140140
cd ${{ github.workspace }}
141-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
141+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
142142
./llama-tornado --gpu --${{ matrix.backend.name }} \
143143
--model /$MODELS_DIR/granite-4.0-1b-F16.gguf \
144144
--prompt "Say hello"
145145
- name: Q8 - Run Llama-3.2-1B-Instruct-Q8_0.gguf
146146
run: |
147147
cd ${{ github.workspace }}
148-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
148+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
149149
./llama-tornado --gpu --${{ matrix.backend.name }} \
150150
--model $MODELS_DIR/Llama-3.2-1B-Instruct-Q8_0.gguf \
151151
--prompt "Say hello"
152152
- name: Q8 - Run Qwen3-0.6B-Q8_0.gguf
153153
run: |
154154
cd ${{ github.workspace }}
155-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
155+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
156156
./llama-tornado --gpu --${{ matrix.backend.name }} \
157157
--model $MODELS_DIR/Qwen3-0.6B-Q8_0.gguf \
158158
--prompt "Say hello"
159159
- name: Q8 - Run Phi-3-mini-4k-instruct-Q8_0.gguf
160160
run: |
161161
cd ${{ github.workspace }}
162-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
162+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
163163
./llama-tornado --gpu --${{ matrix.backend.name }} \
164164
--model $MODELS_DIR/Phi-3-mini-4k-instruct-Q8_0.gguf \
165165
--prompt "Say hello"
166166
- name: Q8 - Run Qwen2.5-1.5b-instruct-q8_0.gguf
167167
run: |
168168
cd ${{ github.workspace }}
169-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
169+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
170170
./llama-tornado --gpu --${{ matrix.backend.name }} \
171171
--model $MODELS_DIR/qwen2.5-1.5b-instruct-q8_0.gguf \
172172
--prompt "Say hello"
173173
- name: Q8 - Mistral-7B-Instruct-v0.3.Q8_0.gguf
174174
run: |
175175
cd ${{ github.workspace }}
176-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
176+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
177177
./llama-tornado --gpu --${{ matrix.backend.name }} \
178178
--model $MODELS_DIR/Mistral-7B-Instruct-v0.3.Q8_0.gguf \
179179
--prompt "Say hello"
180180
- name: Q8 - Run Granite-3.2-2b-instruct-Q8.gguf
181181
run: |
182182
cd ${{ github.workspace }}
183-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
183+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
184184
./llama-tornado --gpu --${{ matrix.backend.name }} \
185185
--model /$MODELS_DIR/granite-3.2-2b-instruct-Q8_0.gguf \
186186
--prompt "Say hello"
187187
- name: Q8 - Run Granite-4.0-1b-Q8_0.gguf
188188
run: |
189189
cd ${{ github.workspace }}
190-
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
190+
export PATH="$TORNADOVM_HOME/bin:$JAVA_HOME/bin:$PATH"
191191
./llama-tornado --gpu --${{ matrix.backend.name }} \
192192
--model /$MODELS_DIR/granite-4.0-1b-Q8_0.gguf \
193193
--prompt "Say hello"

.github/workflows/deploy-maven-central.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ name: Deploy to Maven Central
33
on:
44
push:
55
tags:
6-
- 'v*'
7-
- '[0-9]+.[0-9]+.[0-9]+*'
6+
- 'v[0-9]+.[0-9]+.[0-9]+'
87
workflow_run:
98
workflows: ["Finalize GPULlama3 Release"]
109
types: [completed]

LlamaTornadoCli.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//JAVA 21
22
//PREVIEW
33
//DEPS io.github.beehive-lab:gpu-llama3:0.3.2-dev
4-
//DEPS io.github.beehive-lab:tornado-api:2.1.0
5-
//DEPS io.github.beehive-lab:tornado-runtime:2.1.0
4+
//DEPS io.github.beehive-lab:tornado-api:2.2.0
5+
//DEPS io.github.beehive-lab:tornado-runtime:2.2.0
66

77
//SOURCES TornadoFlags.java
88
// === Set to not get annoying warnings about annotation processing

README.md

Lines changed: 12 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,6 @@ Ensure you have the following installed and configured:
7070

7171
### Install, Build, and Run
7272

73-
When cloning this repository, use the `--recursive` flag to ensure that TornadoVM is properly included as submodule:
74-
7573
```bash
7674
# Clone the repository with all submodules
7775
git clone https://github.com/beehive-lab/GPULlama3.java.git
@@ -80,66 +78,32 @@ git clone https://github.com/beehive-lab/GPULlama3.java.git
8078
#### Install the TornadoVM SDK on Linux or macOS
8179

8280
Ensure that your JAVA_HOME points to a supported JDK before using the SDK. Download an SDK package matching your OS, architecture, and accelerator backend (opencl, ptx).
83-
All pre-built SDKs are available on the TornadoVM [Releases Page](https://github.com/beehive-lab/TornadoVM/releases).
84-
#After extracting the SDK, add its bin/ directory to your PATH so the `tornado` command becomes available.
81+
TornadoVM is distributed through our [**official website**](https://www.tornadovm.org/downloads) and **SDKMAN!**. Install a version that matches your OS, architecture, and accelerator backend.
8582

86-
##### Linux (x86_64)
83+
All TornadoVM SDKs are available on the [SDKMAN! TornadoVM page](https://sdkman.io/sdks/tornadovm/).
8784

88-
```bash
89-
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.1.0/tornadovm-2.1.0-opencl-linux-amd64.zip
90-
unzip tornadovm-2.1.0-opencl-linux-amd64.zip
91-
# Replace <path-to-sdk> manually with the absolute path of the extracted folder
92-
export TORNADOVM_HOME="<path-to-sdk>/tornadovm-2.1.0-opencl"
93-
export PATH=$TORNADO_SDK/bin:$PATH
85+
#### SDKMAN! Installation (Recommended)
9486

95-
tornado --devices
96-
tornado --version
87+
##### Install SDKMAN! if not installed already
88+
```bash
89+
curl -s "https://get.sdkman.io" | bash
90+
source "$HOME/.sdkman/bin/sdkman-init.sh"
91+
sdk version
9792
```
98-
99-
##### macOS (Apple Silicon)
100-
93+
##### Install TornadoVM via SDKMAN!
10194
```bash
102-
wget https://github.com/beehive-lab/TornadoVM/releases/download/v2.1.0/tornadovm-2.1.0-opencl-mac-aarch64.zip
103-
unzip tornadovm-2.1.0-opencl-mac-aarch64.zip
104-
# Replace <path-to-sdk> manually with the absolute path of the extracted folder
105-
export TORNADOVM_HOME="<path-to-sdk>/tornadovm-2.1.0-opencl"
106-
export PATH=$TORNADO_SDK/bin:$PATH
107-
108-
tornado --devices
109-
tornado --version
95+
sdk install tornadovm
11096
```
11197

112-
#### Build the GPULlama3.java
113-
98+
#### Verify TornadoVM is Installed Correctly
11499
```bash
115-
# Navigate to the project directory
116-
cd GPULlama3.java
117-
118-
# Source the project-specific environment paths -> this will ensure the correct paths are set for the project and the TornadoVM SDK
119-
# Expect to see: [INFO] Environment configured for Llama3 with TornadoVM at: $TORNADO_SDK
120-
source set_paths
121-
122-
# Build the project using Maven (skip tests for faster build)
123-
# mvn clean package -DskipTests or just make
124-
make
125-
126-
# Run the model (make sure you have downloaded the model file first - see below)
127-
./llama-tornado --gpu --verbose-init --opencl --model beehive-llama-3.2-1b-instruct-fp16.gguf --prompt "tell me a joke"
100+
tornado --devices
128101
```
129-
130-
131102
----------
132103

133104
### TornadoVM-Accelerated Inference Performance and Optimization Status
134105

135106
We are at the early stages of Java entering the AI world with features added to the JVM that enable faster execution such as GPU acceleration, Vector acceleration, high-performance access to off-heap memory and others.
136-
<br><br>This repository provides the first Java-native implementation of Llama3 that automatically compiles and executes Java code on GPUs via TornadoVM.
137-
The baseline numbers presented below provide a solid starting point for achieving more competitive performance compared to llama.cpp or native CUDA implementations.
138-
[Our roadmap](https://github.com/beehive-lab/GPULlama3.java/blob/main/docs/GPULlama3_ROADMAP.md) provides the upcoming set of features that will dramatically improve the numbers below with the clear target being to achieve performance parity with the fastest implementations.
139-
<br><br>
140-
If you achieve additional performance data points (e.g. new hardware or platforms) please let us know to add them below.
141-
<br><br>
142-
In addition, if you are interested to learn more about the challenges of managed programming languages and GPU acceleration, you can read [our book](https://link.springer.com/book/10.1007/978-3-031-49559-5) or consult the [TornadoVM educational pages](https://www.tornadovm.org/resources).
143107

144108

145109
| Vendor / Backend | Hardware | Llama-3.2-1B-Instruct | Llama-3.2-3B-Instruct | Optimizations |

TornadoFlags.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
//JAVA_OPTIONS -XX:+UseParallelGC
1414

1515
// === Native library path ===
16-
//JAVA_OPTIONS -Djava.library.path=${env.TORNADO_SDK}/lib
16+
//JAVA_OPTIONS -Djava.library.path=${env.TORNADOVM_HOME}/lib
1717

1818
// === Tornado runtime classes ===
1919
//JAVA_OPTIONS -Dtornado.load.api.implementation=uk.ac.manchester.tornado.runtime.tasks.TornadoTaskGraph
@@ -23,8 +23,8 @@
2323
//JAVA_OPTIONS -Dtornado.load.annotation.parallel=uk.ac.manchester.tornado.api.annotations.Parallel
2424

2525
// === Module system ===
26-
//JAVA_OPTIONS --module-path ${env.TORNADO_SDK}/share/java/tornado
27-
//JAVA_OPTIONS --upgrade-module-path ${env.TORNADO_SDK}/share/java/graalJars
26+
//JAVA_OPTIONS --module-path ${env.TORNADOVM_HOME}/share/java/tornado
27+
//JAVA_OPTIONS --upgrade-module-path ${env.TORNADOVM_HOME}/share/java/graalJars
2828
//JAVA_OPTIONS --add-modules ALL-SYSTEM,tornado.runtime,tornado.annotation,tornado.drivers.common,tornado.drivers.opencl
2929

3030
// === Common exports ===

llama-tornado

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ class LlamaRunner:
2626

2727
def __init__(self):
2828
self.java_home = os.environ.get("JAVA_HOME")
29-
self.tornado_sdk = os.environ.get("TORNADO_SDK")
29+
self.tornado_sdk = os.environ.get("TORNADOVM_HOME")
3030
self.llama_root = os.environ.get("LLAMA_ROOT")
3131

3232
if not all([self.java_home, self.tornado_sdk, self.llama_root]):
3333
print("Error: Required environment variables not set")
34-
print("Please ensure JAVA_HOME, TORNADO_SDK, and LLAMA_ROOT are defined")
34+
print("Please ensure JAVA_HOME, TORNADOVM_HOME, and LLAMA_ROOT are defined")
3535
print("Note: check set_path in root dir -> source set_path")
3636
sys.exit(1)
3737

3838
def _validate_paths(self):
3939
"""Validate that required paths exist."""
4040
paths_to_check = {
4141
"JAVA_HOME": self.java_home,
42-
"TORNADO_SDK": self.tornado_sdk,
42+
"TORNADOVM_HOME": self.tornado_sdk,
4343
"LLAMA_ROOT": self.llama_root,
4444
}
4545

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,12 @@
5454
<dependency>
5555
<groupId>io.github.beehive-lab</groupId>
5656
<artifactId>tornado-api</artifactId>
57-
<version>2.1.0</version>
57+
<version>2.2.0</version>
5858
</dependency>
5959
<dependency>
6060
<groupId>io.github.beehive-lab</groupId>
6161
<artifactId>tornado-runtime</artifactId>
62-
<version>2.1.0</version>
62+
<version>2.2.0</version>
6363
</dependency>
6464
</dependencies>
6565

set_paths

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
export LLAMA_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
99

1010
# Add TornadoVM and LLaMA bin directories to PATH
11-
export PATH="${PATH}:${TORNADO_SDK}/bin:${LLAMA_ROOT}"
11+
export PATH="${PATH}:${TORNADOVM_HOME}/bin:${LLAMA_ROOT}"
1212

1313
# Optional: Set JAVA_HOME if required
1414
# export JAVA_HOME=/path/to/graalvm
1515
# export PATH="${JAVA_HOME}/bin:${PATH}"
1616

17-
echo "[INFO] Environment configured for LLaMA3 with TornadoVM at: $TORNADO_SDK"
17+
echo "[INFO] Environment configured for LLaMA3 with TornadoVM at: $TORNADOVM_HOME"
1818
# ===== Notes =====
1919
# After sourcing this script:
2020
# 1. TornadoVM will be available for GPU computation

set_paths.cmd

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,8 @@ REM Resolve the absolute path to this script's directory
77
set "LLAMA_ROOT=%~dp0"
88
set "LLAMA_ROOT=%LLAMA_ROOT:~0,-1%"
99

10-
REM Set TornadoVM root and SDK paths
11-
set "TORNADO_ROOT=%LLAMA_ROOT%\external\tornadovm"
12-
set "TORNADO_SDK=%TORNADO_ROOT%\bin\sdk"
13-
1410
REM Add TornadoVM SDK and LLaMA3 bin to PATH
15-
set "PATH=%TORNADO_SDK%;%LLAMA_ROOT%;%PATH%"
11+
set "PATH=%TORNADOVM_HOME%;%LLAMA_ROOT%;%PATH%"
1612

1713
REM Optional: Set JAVA_HOME if needed
1814
REM set "JAVA_HOME=C:\Path\To\GraalVM"

0 commit comments

Comments
 (0)