Skip to content

Modify tornado SDK verification in workflow #82

Modify tornado SDK verification in workflow

Modify tornado SDK verification in workflow #82

Workflow file for this run

name: GPULlama3 Build & Run
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
types: [opened, synchronize, reopened]
jobs:
build-and-run:
runs-on: self-hosted
outputs:
tornado_sdk: ${{ steps.export_sdk.outputs.tornado_sdk }}
env:
JAVA_HOME: /opt/jenkins/jdks/graal-23.1.0/jdk-21.0.3
TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm
LLAMA_ROOT: ${{ github.workspace }}
steps:
- name: Checkout GPULlama3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check code formatting (Spotless)
run: |
cd ${{ github.workspace }}
#./mvnw -T12C -Pspotless spotless:check
- name: Clone TornadoVM explicitly
run: |
git clone --depth 1 --branch develop \
https://github.com/beehive-lab/TornadoVM.git \
GPULlama3.java/external/tornadovm
- name: Set up Python venv for TornadoVM
run: |
python3 -m venv GPULlama3.java/external/tornadovm/venv
source GPULlama3.java/external/tornadovm/venv/bin/activate
python --version
- name: Build TornadoVM
id: export_sdk
run: |
set -x
cd ${{ github.workspace }}/GPULlama3.java/external/tornadovm
source venv/bin/activate
echo "=== Building TornadoVM ==="
make
echo "=== Searching for TornadoVM SDK directory ==="
SDK_DIR=$(find dist -type d -maxdepth 3 -path "*/tornadovm-*-opencl" | head -n 1)
if [ -z "$SDK_DIR" ]; then
echo "::error::Could not locate TornadoVM SDK directory!"
find dist -maxdepth 5 -type d
exit 1
fi
# Use workspace-relative path to avoid duplication in next job
FULL_SDK="${GITHUB_WORKSPACE}/GPULlama3.java/external/tornadovm/${SDK_DIR}"
echo "Detected TornadoVM SDK: $FULL_SDK"
export TORNADO_SDK="$FULL_SDK"
export PATH="$FULL_SDK/bin:$JAVA_HOME/bin:$PATH"
echo "TORNADO_SDK=$FULL_SDK" >> $GITHUB_ENV
echo "PATH=$PATH" >> $GITHUB_ENV
# Export for downstream jobs
echo "tornado_sdk=$FULL_SDK" >> $GITHUB_OUTPUT
which tornado || { echo "::error::tornado not in PATH"; exit 1; }
tornado --devices
- name: Build GPULlama3
run: |
set -x
cd ${{ github.workspace }}
echo "Using TORNADO_SDK=$TORNADO_SDK"
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
which tornado || { echo "::error::tornado unavailable during GPULlama3 build"; exit 1; }
tornado --version
make
./llama-tornado --help
test-models:
runs-on: self-hosted
needs: build-and-run
strategy:
fail-fast: true
matrix:
model:
- /opt/models/DeepSeek-R1-Distill-Qwen-1.5B-F16.gguf
- /opt/models/DeepSeek-R1-Distill-Qwen-1.5B-Q8_0.gguf
- /opt/models/Llama-3.2-1B-Instruct-F16.gguf
- /opt/models/Llama-3.2-1B-Instruct-Q8_0.gguf
- /opt/models/Llama-3.2-3B-Instruct-F16.gguf
- /opt/models/Llama-3.2-3B-Instruct-Q8_0.gguf
- /opt/models/Mistral-7B-Instruct-v0.3.fp16.gguf
- /opt/models/Mistral-7B-Instruct-v0.3.Q8_0.gguf
- /opt/models/Phi-3-mini-4k-instruct-fp16.gguf
- /opt/models/Phi-3-mini-4k-instruct-Q8_0.gguf
- /opt/models/Qwen2.5-0.5B-Instruct-f16.gguf
- /opt/models/Qwen2.5-0.5B-Instruct-Q8_0.gguf
- /opt/models/qwen2.5-1.5b-instruct-fp16.gguf
- /opt/models/qwen2.5-1.5b-instruct-q8_0.gguf
- /opt/models/Qwen3-0.6B-f16.gguf
- /opt/models/Qwen3-0.6B-Q8_0.gguf
- /opt/models/Qwen3-4B-f16.gguf
- /opt/models/Qwen3-4B-Q8_0.gguf
env:
JAVA_HOME: /opt/jenkins/jdks/graal-23.1.0/jdk-21.0.3
TORNADO_SDK: ${{ needs.build-and-run.outputs.tornado_sdk }}
TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm
LLAMA_ROOT: ${{ github.workspace }}
steps:
- name: Checkout GPULlama3
uses: actions/checkout@v4
- name: Run inference for ${{ matrix.model }}
run: |
set -x
cd ${{ github.workspace }}
echo "Using Tornado SDK: $TORNADO_SDK"
export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH"
# Verify tornado is in PATH
if ! command -v tornado >/dev/null 2>&1; then
echo "::error::tornado not found in PATH"
exit 1
fi
tornado --version
./llama-tornado --gpu --opencl \
--model "${{ matrix.model }}" \
--prompt "Say hello"