Skip to content

feat: add TornadoVM 3.0 and 4.0 demos with version comparison CI #172

feat: add TornadoVM 3.0 and 4.0 demos with version comparison CI

feat: add TornadoVM 3.0 and 4.0 demos with version comparison CI #172

Workflow file for this run

name: Demos CI
on:
push:
pull_request:
permissions:
contents: read
concurrency:
group: demos-ci-${{ github.ref }}
cancel-in-progress: true
jobs:
graalpy:
name: GraalPy (GraalVM)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up GraalVM
uses: graalvm/setup-graalvm@v1
with:
distribution: graalvm-community
java-version: "21"
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
- name: Ensure executable bits
run: chmod +x gradlew
- name: Build and run GraalPy Java host demo (runtimeCheck only)
run: ./gradlew :demos:graalpy:runtimeCheck -PjavaVersion=21 --no-daemon
tornadovm-baseline:
name: TornadoVM demo (baseline)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Temurin JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Ensure executable bits
run: chmod +x demos/tornadovm/scripts/run-baseline.sh
- name: Compile + run baseline
run: ./demos/tornadovm/scripts/run-baseline.sh --size 100000 --iters 1 --warmup 0
tornadovm-taskgraph:
name: TornadoVM demo (TaskGraph; best-effort run)
runs-on: ubuntu-latest
env:
TORNADOVM_VERSION: "2.2.0"
TORNADOVM_BACKEND: "opencl"
steps:
- uses: actions/checkout@v4
- name: Set up Temurin JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Download and extract TornadoVM SDK
shell: bash
run: |
set -eo pipefail
filename="tornadovm-${TORNADOVM_VERSION}-${TORNADOVM_BACKEND}-linux-amd64.tar.gz"
url="https://github.com/beehive-lab/TornadoVM/releases/download/v${TORNADOVM_VERSION}/${filename}"
echo "Downloading: ${url}"
curl -fL "${url}" -o "/tmp/${filename}"
mkdir -p "${RUNNER_TEMP}/tornadovm"
tar -xzf "/tmp/${filename}" -C "${RUNNER_TEMP}/tornadovm"
# Find the extracted SDK directory
TORNADO_SDK="$(find "${RUNNER_TEMP}/tornadovm" -maxdepth 1 -type d -name 'tornadovm-*' -print -quit)"
echo "TORNADO_SDK=${TORNADO_SDK}" >> "${GITHUB_ENV}"
echo "Found TORNADO_SDK: ${TORNADO_SDK}"
ls -la "${TORNADO_SDK}"
- name: Show TornadoVM and JDK info
shell: bash
run: |
java -version
echo "TORNADO_SDK=${TORNADO_SDK}"
ls -la "${TORNADO_SDK}/share/java/tornado/" || ls -la "${TORNADO_SDK}"
- name: Compile TornadoVM demo (TaskGraph)
shell: bash
run: |
build_dir="demos/tornadovm/build/tornado-ci"
src_dir="demos/tornadovm/src/tornado/java"
rm -rf "${build_dir}"
mkdir -p "${build_dir}/mods"
find "${src_dir}" -name "*.java" > "${build_dir}/sources.txt"
# Find TornadoVM jars
tornado_jars="$(find "${TORNADO_SDK}" -name '*.jar' -print0 | tr '\0' ':')"
echo "TornadoVM jars: ${tornado_jars}"
javac --enable-preview --release 21 \
--module-path "${tornado_jars}" \
-d "${build_dir}/mods/demo.tornadovm" \
@"${build_dir}/sources.txt"
- name: Run TornadoVM demo (best effort; may require GPU/OpenCL drivers)
continue-on-error: true
shell: bash
run: |
build_dir="demos/tornadovm/build/tornado-ci"
tornado_jars="$(find "${TORNADO_SDK}" -name '*.jar' -print0 | tr '\0' ':')"
java --enable-preview \
--module-path "${tornado_jars}:${build_dir}/mods" \
--add-modules ALL-MODULE-PATH \
-m demo.tornadovm/demo.tornadovm.VectorAddTornado \
--size 100000 --iters 1 --warmup 0 --no-verify
jcuda:
name: JCuda (compile + run)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Temurin JDK
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "21"
- name: Set up Gradle
uses: gradle/actions/setup-gradle@v4
- name: Ensure executable bits
run: chmod +x gradlew
- name: Run JCuda demo (requires CUDA - expected to fail on standard runners)
continue-on-error: true
run: ./gradlew :demos:jcuda:run -PjavaVersion=21 --no-daemon