|
1 | 1 | name: GPULlama3 Build & Run |
| 2 | + |
2 | 3 | on: |
3 | 4 | push: |
4 | | - branches: |
5 | | - - main |
| 5 | + branches: [ main ] |
6 | 6 | pull_request: |
| 7 | + |
7 | 8 | jobs: |
8 | 9 | build-and-run: |
9 | 10 | runs-on: self-hosted |
| 11 | + |
10 | 12 | env: |
11 | | - # TornadoVM paths |
12 | | - TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm |
13 | | - TORNADO_SDK: ${{ github.workspace }}/GPULlama3.java/external/tornadovm/bin/sdk # Keep this for make |
14 | | - # Java |
15 | 13 | JAVA_HOME: /opt/jenkins/jdks/graal-23.1.0/jdk-21.0.3 |
| 14 | + TORNADO_ROOT: ${{ github.workspace }}/GPULlama3.java/external/tornadovm |
| 15 | + LLAMA_ROOT: ${{ github.workspace }} |
| 16 | + |
16 | 17 | steps: |
17 | 18 | - name: Checkout GPULlama3 |
18 | 19 | uses: actions/checkout@v4 |
19 | 20 | with: |
20 | 21 | fetch-depth: 0 |
| 22 | + |
21 | 23 | - name: Clone TornadoVM explicitly |
22 | 24 | run: | |
23 | | - git clone --branch master https://github.com/beehive-lab/TornadoVM.git GPULlama3.java/external/tornadovm |
24 | | - cd GPULlama3.java/external/tornadovm |
25 | | - git pull origin master |
| 25 | + git clone --depth 1 --branch master \ |
| 26 | + https://github.com/beehive-lab/TornadoVM.git \ |
| 27 | + GPULlama3.java/external/tornadovm |
| 28 | +
|
26 | 29 | - name: Verify Java |
27 | 30 | run: | |
28 | 31 | java -version |
29 | | - echo "JAVA_HOME=$JAVA_HOME" |
| 32 | + echo JAVA_HOME=$JAVA_HOME |
| 33 | +
|
30 | 34 | - name: Set up Python 3 |
31 | 35 | uses: actions/setup-python@v4 |
32 | 36 | with: |
33 | | - python-version: '3.11' |
| 37 | + python-version: "3.11" |
| 38 | + |
34 | 39 | - name: Create Python venv |
35 | 40 | run: | |
36 | 41 | cd GPULlama3.java/external/tornadovm |
37 | 42 | python3 -m venv venv |
38 | | - source venv/bin/activate |
| 43 | +
|
39 | 44 | - name: Build TornadoVM |
40 | 45 | run: | |
| 46 | + set -x |
41 | 47 | cd GPULlama3.java/external/tornadovm |
42 | 48 | source venv/bin/activate |
43 | | - make # Uses the initial TORNADO_SDK from env |
| 49 | + echo "=== Building TornadoVM ===" |
| 50 | + make |
| 51 | + echo "=== Searching for TornadoVM SDK directory ===" |
| 52 | + SDK_DIR=$(find dist -type d -maxdepth 3 -path "*/tornadovm-*-opencl" | head -n 1) |
| 53 | + if [ -z "$SDK_DIR" ]; then |
| 54 | + echo "::error::Could not locate TornadoVM SDK directory!" |
| 55 | + find dist -maxdepth 5 -type d |
| 56 | + exit 1 |
| 57 | + fi |
| 58 | + FULL_SDK="${PWD}/${SDK_DIR}" |
| 59 | + echo "Detected TornadoVM SDK: $FULL_SDK" |
| 60 | + |
| 61 | + # Export for current shell session |
| 62 | + export TORNADO_SDK="$FULL_SDK" |
| 63 | + export PATH="$FULL_SDK/bin:$JAVA_HOME/bin:$PATH" |
44 | 64 | |
45 | | - # After build, find and update TORNADO_SDK to the actual SDK location |
46 | | - TORNADO_SDK_DIR=$(ls -d dist/tornado-sdk/tornado-sdk-* | head -1) |
47 | | - FULL_TORNADO_SDK="${PWD}/${TORNADO_SDK_DIR}" |
48 | | - echo "TORNADO_SDK=${FULL_TORNADO_SDK}" >> $GITHUB_ENV |
49 | | - echo "Updated TORNADO_SDK to: ${FULL_TORNADO_SDK}" |
| 65 | + # Save for subsequent steps |
| 66 | + echo "TORNADO_SDK=$FULL_SDK" >> $GITHUB_ENV |
| 67 | + echo "PATH=$PATH" >> $GITHUB_ENV |
50 | 68 | |
51 | | - # Verify TornadoVM with the updated path |
52 | | - export TORNADO_SDK="${FULL_TORNADO_SDK}" |
53 | | - export PATH="${TORNADO_SDK}/bin:$JAVA_HOME/bin:$PATH" |
| 69 | + echo "=== Checking tornado CLI ===" |
| 70 | + which tornado || { echo "::error::tornado not in PATH"; exit 1; } |
54 | 71 | tornado --devices |
| 72 | +
|
55 | 73 | - name: Build GPULlama3 |
56 | 74 | run: | |
57 | | - export PATH="${TORNADO_SDK}/bin:$JAVA_HOME/bin:$PATH" |
58 | | - echo "Using TORNADO_SDK: $TORNADO_SDK" |
59 | | - pwd |
60 | | - ls -l |
| 75 | + set -x |
| 76 | + cd ${{ github.workspace }} |
| 77 | + echo "Using TORNADO_SDK=$TORNADO_SDK" |
| 78 | + export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH" |
| 79 | + which tornado || { echo "::error::tornado unavailable during GPULlama3 build"; exit 1; } |
| 80 | + tornado --version |
61 | 81 | make |
| 82 | +
|
62 | 83 | - name: Run llama-tornado test prompt |
63 | 84 | run: | |
64 | | - # The TORNADO_SDK variable is available because it was updated via GITHUB_ENV |
65 | | - export PATH="${TORNADO_SDK}/bin:$JAVA_HOME/bin:$PATH" |
66 | | - echo "Using TORNADO_SDK: $TORNADO_SDK" |
67 | | - ./llama-tornado --gpu --opencl --model /home/michalis/models/Llama-3.2-1B-Instruct-F16.gguf --prompt "Say hello" |
68 | | - # - name: Run llama-tornado test prompt |
69 | | - # run: | |
70 | | - # # export PATH="${TORNADO_SDK}/bin:$JAVA_HOME/bin:$PATH" |
71 | | - # echo "Using TORNADO_SDK: $TORNADO_SDK" |
72 | | - # ./llama-tornado --gpu --opencl --model /home/michalis/models/Llama-3.2-1B-Instruct-F16.gguf --prompt "Say hello" |
| 85 | + set -x |
| 86 | + cd ${{ github.workspace }} |
| 87 | + export PATH="$TORNADO_SDK/bin:$JAVA_HOME/bin:$PATH" |
| 88 | + which tornado || { echo "::error::tornado not found at runtime"; exit 1; } |
| 89 | + ./llama-tornado --gpu --opencl \ |
| 90 | + --model /home/michalis/models/Llama-3.2-1B-Instruct-F16.gguf \ |
| 91 | + --prompt "Say hello" |
0 commit comments