Skip to content

Commit 9cd4ebc

Browse files
ggerganovCISC
andauthored
ci : split build.yml + server.yml (ggml-org#20546)
* ci : split build.yml * cont : split server.yml * cont : reduce paths * cont : split build-android.yml + update paths * ci : make msys workflows manual (ggml-org#20588) * ci : make cross-build workflows manual (ggml-org#20585) * cont : fix release paths Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> --------- Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
1 parent 89d0aec commit 9cd4ebc

17 files changed

Lines changed: 1253 additions & 962 deletions
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
name: CI (3rd-party)
2+
3+
on:
4+
workflow_dispatch: # allows manual triggering
5+
push:
6+
branches:
7+
- master
8+
paths: [
9+
'.github/workflows/build-3rd-party.yml',
10+
'**/CMakeLists.txt',
11+
'**/.cmake',
12+
'**/*.h',
13+
'**/*.hpp',
14+
'**/*.c',
15+
'**/*.cpp'
16+
]
17+
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
20+
cancel-in-progress: true
21+
22+
env:
23+
GGML_NLOOP: 3
24+
GGML_N_THREADS: 1
25+
LLAMA_LOG_COLORS: 1
26+
LLAMA_LOG_PREFIX: 1
27+
LLAMA_LOG_TIMESTAMPS: 1
28+
29+
jobs:
30+
ubuntu-24-llguidance:
31+
runs-on: ${{ 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
32+
33+
steps:
34+
- name: Clone
35+
id: checkout
36+
uses: actions/checkout@v6
37+
38+
- name: Dependencies
39+
id: depends
40+
run: |
41+
sudo apt-get update
42+
sudo apt-get install build-essential libssl-dev
43+
44+
- name: Build
45+
id: cmake_build
46+
run: |
47+
cmake -B build \
48+
-DLLAMA_FATAL_WARNINGS=ON \
49+
-DLLAMA_LLGUIDANCE=ON
50+
cmake --build build --config Release -j $(nproc)
51+
52+
- name: Test
53+
id: cmake_test
54+
run: |
55+
cd build
56+
ctest -L main --verbose --timeout 900
57+
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
name: CI (android)
2+
3+
on:
4+
workflow_dispatch: # allows manual triggering
5+
push:
6+
branches:
7+
- master
8+
paths: [
9+
'.github/workflows/build-android.yml',
10+
'**/CMakeLists.txt',
11+
'**/.cmake',
12+
'**/*.h',
13+
'**/*.hpp',
14+
'**/*.c',
15+
'**/*.cpp'
16+
]
17+
18+
pull_request:
19+
types: [opened, synchronize, reopened]
20+
paths: [
21+
'.github/workflows/build-android.yml',
22+
'examples/llama.android/**'
23+
]
24+
25+
concurrency:
26+
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
27+
cancel-in-progress: true
28+
29+
env:
30+
GGML_NLOOP: 3
31+
GGML_N_THREADS: 1
32+
LLAMA_LOG_COLORS: 1
33+
LLAMA_LOG_PREFIX: 1
34+
LLAMA_LOG_TIMESTAMPS: 1
35+
36+
jobs:
37+
android:
38+
runs-on: ubuntu-latest
39+
40+
steps:
41+
- name: Clone
42+
uses: actions/checkout@v6
43+
44+
# Disabled due to size (400MB) and always 0 cache hits
45+
# - name: ccache
46+
# uses: ggml-org/ccache-action@v1.2.16
47+
# with:
48+
# key: android-build
49+
# evict-old-files: 1d
50+
51+
- name: Set up JDK
52+
uses: actions/setup-java@v5
53+
with:
54+
java-version: 17
55+
distribution: zulu
56+
57+
- name: Setup Android SDK
58+
uses: android-actions/setup-android@v3
59+
with:
60+
log-accepted-android-sdk-licenses: false
61+
62+
- name: Build
63+
run: |
64+
cd examples/llama.android
65+
./gradlew build --no-daemon
66+
67+
android-ndk:
68+
runs-on: ubuntu-latest
69+
70+
env:
71+
OPENCL_VERSION: 2025.07.22
72+
73+
strategy:
74+
matrix:
75+
include:
76+
- build: 'arm64-cpu'
77+
defines: '-D ANDROID_ABI=arm64-v8a -D ANDROID_PLATFORM=android-31 -D CMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -D GGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8.5-a+fp16+i8mm -G Ninja -D LLAMA_OPENSSL=OFF -D GGML_OPENMP=OFF'
78+
- build: 'arm64-snapdragon'
79+
defines: '--preset arm64-android-snapdragon-release'
80+
81+
steps:
82+
- name: Clone
83+
id: checkout
84+
uses: actions/checkout@v6
85+
86+
- name: Install OpenCL Headers and Libs
87+
id: install_opencl
88+
if: ${{ matrix.build == 'arm64-snapdragon' }}
89+
run: |
90+
mkdir opencl
91+
curl -L -o opencl/clhpp.tar.gz https://github.com/KhronosGroup/OpenCL-CLHPP/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
92+
curl -L -o opencl/headers.tar.gz https://github.com/KhronosGroup/OpenCL-Headers/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
93+
curl -L -o opencl/icd-loader.tar.gz https://github.com/KhronosGroup/OpenCL-ICD-Loader/archive/refs/tags/v${OPENCL_VERSION}.tar.gz
94+
tar -xaf opencl/headers.tar.gz -C opencl
95+
tar -xaf opencl/clhpp.tar.gz -C opencl
96+
tar -xaf opencl/icd-loader.tar.gz -C opencl
97+
sudo cp -r opencl/OpenCL-Headers-${OPENCL_VERSION}/CL ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
98+
sudo cp -r opencl/OpenCL-CLHPP-${OPENCL_VERSION}/include/CL/* ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/CL
99+
cd opencl/OpenCL-ICD-Loader-${OPENCL_VERSION}
100+
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake -DOPENCL_ICD_LOADER_HEADERS_DIR=${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=31 -DANDROID_STL=c++_shared
101+
cmake --build build
102+
sudo cp build/libOpenCL.so ${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android
103+
rm -rf opencl
104+
105+
- name: Install Hexagon SDK
106+
id: install_hexsdk
107+
if: ${{ matrix.build == 'arm64-snapdragon' }}
108+
env:
109+
HEXSDK_VER: 6.4.0.2
110+
HEXTLS_VER: 19.0.04
111+
run: |
112+
curl -L -o hex-sdk.tar.gz https://github.com/snapdragon-toolchain/hexagon-sdk/releases/download/v$HEXSDK_VER/hexagon-sdk-v$HEXSDK_VER-amd64-lnx.tar.xz
113+
mkdir hex-sdk
114+
tar -xaf hex-sdk.tar.gz -C hex-sdk
115+
ls -l hex-sdk
116+
sudo mv hex-sdk /opt/hexagon
117+
echo "HEXAGON_SDK_ROOT=/opt/hexagon/$HEXSDK_VER" >> "$GITHUB_ENV"
118+
echo "HEXAGON_TOOLS_ROOT=/opt/hexagon/$HEXSDK_VER/tools/HEXAGON_Tools/$HEXTLS_VER" >> "$GITHUB_ENV"
119+
echo "DEFAULT_HLOS_ARCH=64" >> "$GITHUB_ENV"
120+
echo "DEFAULT_TOOLS_VARIANT=toolv19" >> "$GITHUB_ENV"
121+
echo "DEFAULT_NO_QURT_INC=0" >> "$GITHUB_ENV"
122+
echo "DEFAULT_DSP_ARCH=v73" >> "$GITHUB_ENV"
123+
124+
- name: Update CMake presets
125+
id: update_presets
126+
if: ${{ matrix.build == 'arm64-snapdragon' }}
127+
run: |
128+
cp docs/backend/snapdragon/CMakeUserPresets.json .
129+
130+
- name: Build
131+
id: ndk_build
132+
run: |
133+
cmake ${{ matrix.defines }} -B build
134+
cmake --build build
135+
cmake --install build --prefix pkg-adb/llama.cpp
136+
137+
- name: Test
138+
id: cmake_test
139+
run: |
140+
echo "FIXME: test on devices"

0 commit comments

Comments
 (0)