Skip to content

Commit e7e4d2e

Browse files
authored
Merge branch 'ggml-org:master' into master
2 parents fa94796 + 0a524f2 commit e7e4d2e

84 files changed

Lines changed: 2506 additions & 489 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-android.yml

Lines changed: 22 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,9 @@ jobs:
4040
steps:
4141
- name: Clone
4242
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
43+
with:
44+
fetch-depth: 0
45+
lfs: false
5046

5147
- name: Set up JDK
5248
uses: actions/setup-java@v5
@@ -66,10 +62,11 @@ jobs:
6662
6763
android-ndk:
6864
runs-on: ubuntu-latest
69-
70-
env:
71-
OPENCL_VERSION: 2025.07.22
72-
65+
container:
66+
image: 'ghcr.io/snapdragon-toolchain/arm64-android:v0.3'
67+
defaults:
68+
run:
69+
shell: bash
7370
strategy:
7471
matrix:
7572
include:
@@ -82,59 +79,23 @@ jobs:
8279
- name: Clone
8380
id: checkout
8481
uses: actions/checkout@v6
82+
with:
83+
fetch-depth: 0
84+
lfs: false
8585

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
86+
- name: Build Llama.CPP for Hexagon Android
87+
id: build_llama_cpp_hexagon_android
13288
run: |
89+
if [[ "${{ matrix.build }}" == "arm64-snapdragon" ]]; then
90+
cp docs/backend/snapdragon/CMakeUserPresets.json .
91+
fi
13392
cmake ${{ matrix.defines }} -B build
13493
cmake --build build
13594
cmake --install build --prefix pkg-adb/llama.cpp
13695
137-
- name: Test
138-
id: cmake_test
139-
run: |
140-
echo "FIXME: test on devices"
96+
- name: Upload Llama.CPP Hexagon Android Build Artifact
97+
if: ${{ always() && steps.build_llama_cpp_hexagon_android.outcome == 'success' }}
98+
uses: actions/upload-artifact@v6
99+
with:
100+
name: llama-cpp-android-${{ matrix.build }}
101+
path: pkg-adb/llama.cpp

.github/workflows/build-self-hosted.yml

Lines changed: 55 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -141,60 +141,61 @@ jobs:
141141
# amd-smi static
142142
# GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS="gfx1101" bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp
143143

144-
ggml-ci-mac-metal:
145-
runs-on: [self-hosted, macOS, ARM64]
146-
147-
steps:
148-
- name: Clone
149-
id: checkout
150-
uses: actions/checkout@v6
151-
152-
- name: Test
153-
id: ggml-ci
154-
run: |
155-
GG_BUILD_METAL=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
156-
157-
ggml-ci-mac-webgpu:
158-
runs-on: [self-hosted, macOS, ARM64]
159-
160-
steps:
161-
- name: Clone
162-
id: checkout
163-
uses: actions/checkout@v6
164-
165-
- name: Dawn Dependency
166-
id: dawn-depends
167-
run: |
168-
DAWN_VERSION="v2.0.0"
169-
DAWN_OWNER="reeselevine"
170-
DAWN_REPO="dawn"
171-
DAWN_ASSET_NAME="Dawn-5e9a4865b1635796ccc77dd30057f2b4002a1355-macos-latest-Release"
172-
echo "Fetching release asset from https://github.com/${DAWN_OWNER}/${DAWN_REPO}/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.zip"
173-
curl -L -o artifact.zip \
174-
"https://github.com/${DAWN_OWNER}/${DAWN_REPO}/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.zip"
175-
mkdir dawn
176-
unzip artifact.zip
177-
tar -xvf ${DAWN_ASSET_NAME}.tar.gz -C dawn --strip-components=1
178-
179-
- name: Test
180-
id: ggml-ci
181-
run: |
182-
GG_BUILD_WEBGPU=1 GG_BUILD_WEBGPU_DAWN_PREFIX="$GITHUB_WORKSPACE/dawn" \
183-
bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
184-
185-
ggml-ci-mac-vulkan:
186-
runs-on: [self-hosted, macOS, ARM64]
187-
188-
steps:
189-
- name: Clone
190-
id: checkout
191-
uses: actions/checkout@v6
192-
193-
- name: Test
194-
id: ggml-ci
195-
run: |
196-
vulkaninfo --summary
197-
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
144+
# TODO: sandbox Mac runners
145+
# ggml-ci-mac-metal:
146+
# runs-on: [self-hosted, macOS, ARM64]
147+
#
148+
# steps:
149+
# - name: Clone
150+
# id: checkout
151+
# uses: actions/checkout@v6
152+
#
153+
# - name: Test
154+
# id: ggml-ci
155+
# run: |
156+
# GG_BUILD_METAL=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
157+
#
158+
# ggml-ci-mac-webgpu:
159+
# runs-on: [self-hosted, macOS, ARM64]
160+
#
161+
# steps:
162+
# - name: Clone
163+
# id: checkout
164+
# uses: actions/checkout@v6
165+
#
166+
# - name: Dawn Dependency
167+
# id: dawn-depends
168+
# run: |
169+
# DAWN_VERSION="v2.0.0"
170+
# DAWN_OWNER="reeselevine"
171+
# DAWN_REPO="dawn"
172+
# DAWN_ASSET_NAME="Dawn-5e9a4865b1635796ccc77dd30057f2b4002a1355-macos-latest-Release"
173+
# echo "Fetching release asset from https://github.com/${DAWN_OWNER}/${DAWN_REPO}/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.zip"
174+
# curl -L -o artifact.zip \
175+
# "https://github.com/${DAWN_OWNER}/${DAWN_REPO}/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.zip"
176+
# mkdir dawn
177+
# unzip artifact.zip
178+
# tar -xvf ${DAWN_ASSET_NAME}.tar.gz -C dawn --strip-components=1
179+
#
180+
# - name: Test
181+
# id: ggml-ci
182+
# run: |
183+
# GG_BUILD_WEBGPU=1 GG_BUILD_WEBGPU_DAWN_PREFIX="$GITHUB_WORKSPACE/dawn" \
184+
# bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
185+
#
186+
# ggml-ci-mac-vulkan:
187+
# runs-on: [self-hosted, macOS, ARM64]
188+
#
189+
# steps:
190+
# - name: Clone
191+
# id: checkout
192+
# uses: actions/checkout@v6
193+
#
194+
# - name: Test
195+
# id: ggml-ci
196+
# run: |
197+
# vulkaninfo --summary
198+
# GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
198199

199200
ggml-ci-linux-intel-vulkan:
200201
runs-on: [self-hosted, Linux, Intel]

.github/workflows/build.yml

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ jobs:
8787
-DGGML_METAL_EMBED_LIBRARY=OFF \
8888
-DGGML_METAL_SHADER_DEBUG=ON \
8989
-DGGML_RPC=ON
90-
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
90+
time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
9191
leaks -atExit -- ./build/bin/test-thread-safety -hf ggml-org/gemma-3-270m-qat-GGUF -ngl 99 -p "$(printf 'hello %.0s' {1..128})" -n 16 -c 512 -ub 32 -np 2 -t 2 -lv 1
9292
9393
- name: Test
@@ -124,7 +124,7 @@ jobs:
124124
-DGGML_METAL=OFF \
125125
-DGGML_RPC=ON \
126126
-DCMAKE_OSX_DEPLOYMENT_TARGET=13.3
127-
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
127+
time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
128128
129129
- name: Test
130130
id: cmake_test
@@ -165,8 +165,8 @@ jobs:
165165
id: cmake_build
166166
run: |
167167
export CMAKE_PREFIX_PATH=dawn
168-
cmake -B build -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF
169-
cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
168+
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF
169+
time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
170170
171171
- name: Test
172172
id: cmake_test
@@ -231,7 +231,7 @@ jobs:
231231
cmake -B build \
232232
-DLLAMA_FATAL_WARNINGS=ON \
233233
-DGGML_RPC=ON
234-
cmake --build build --config Release -j $(nproc)
234+
time cmake --build build --config Release -j $(nproc)
235235
236236
- name: Test
237237
id: cmake_test
@@ -274,14 +274,16 @@ jobs:
274274
id: depends
275275
run: |
276276
sudo apt-get update
277-
sudo apt-get install build-essential libssl-dev
277+
sudo apt-get install build-essential libssl-dev ninja-build
278278
279279
- name: Build
280280
id: cmake_build
281281
run: |
282282
cmake -B build \
283+
-G "Ninja" \
284+
-DCMAKE_BUILD_TYPE=Release \
283285
-DGGML_RPC=ON
284-
cmake --build build --config Release -j $(nproc)
286+
time cmake --build build --config Release -j $(nproc)
285287
286288
- name: Test
287289
id: cmake_test
@@ -300,12 +302,13 @@ jobs:
300302
- name: Dependencies
301303
id: depends
302304
run: |
303-
sudo apt-get install -y glslc libvulkan-dev libssl-dev
305+
sudo apt-get install -y glslc libvulkan-dev libssl-dev ninja-build
304306
305307
- name: Configure
306308
id: cmake_configure
307309
run: |
308310
cmake -B build \
311+
-G "Ninja" \
309312
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
310313
-DGGML_BACKEND_DL=ON \
311314
-DGGML_CPU_ALL_VARIANTS=ON \
@@ -314,7 +317,7 @@ jobs:
314317
- name: Build
315318
id: cmake_build
316319
run: |
317-
cmake --build build -j $(nproc)
320+
time cmake --build build -j $(nproc)
318321
319322
ubuntu-24-webgpu:
320323
runs-on: ubuntu-24.04
@@ -336,7 +339,8 @@ jobs:
336339
run: |
337340
sudo add-apt-repository -y ppa:kisak/kisak-mesa
338341
sudo apt-get update -y
339-
sudo apt-get install -y build-essential mesa-vulkan-drivers libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev libssl-dev
342+
sudo apt-get install -y build-essential mesa-vulkan-drivers \
343+
libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev libssl-dev
340344
341345
- name: Get latest Vulkan SDK version
342346
id: vulkan_sdk_version
@@ -378,7 +382,7 @@ jobs:
378382
export Dawn_DIR=dawn/lib64/cmake/Dawn
379383
cmake -B build \
380384
-DGGML_WEBGPU=ON
381-
cmake --build build --config Release -j $(nproc)
385+
time cmake --build build --config Release -j $(nproc)
382386
383387
- name: Test
384388
id: cmake_test
@@ -415,11 +419,13 @@ jobs:
415419
run: |
416420
source emsdk/emsdk_env.sh
417421
emcmake cmake -B build-wasm \
422+
-G "Ninja" \
423+
-DCMAKE_BUILD_TYPE=Release \
418424
-DGGML_WEBGPU=ON \
419425
-DLLAMA_OPENSSL=OFF \
420426
-DEMDAWNWEBGPU_DIR=emdawnwebgpu_pkg
421427
422-
cmake --build build-wasm --target test-backend-ops -j $(nproc)
428+
time cmake --build build-wasm --config Release --target test-backend-ops -j $(nproc)
423429
424430
ubuntu-22-hip:
425431
runs-on: ubuntu-22.04
@@ -479,7 +485,7 @@ jobs:
479485
run: |
480486
cmake -B build -S . \
481487
-DGGML_MUSA=ON
482-
cmake --build build --config Release -j $(nproc)
488+
time cmake --build build --config Release -j $(nproc)
483489
484490
ubuntu-22-sycl:
485491
runs-on: ubuntu-22.04
@@ -528,7 +534,7 @@ jobs:
528534
-DGGML_SYCL=ON \
529535
-DCMAKE_C_COMPILER=icx \
530536
-DCMAKE_CXX_COMPILER=icpx
531-
cmake --build build --config Release -j $(nproc)
537+
time cmake --build build --config Release -j $(nproc)
532538
533539
ubuntu-22-sycl-fp16:
534540
runs-on: ubuntu-22.04
@@ -551,7 +557,7 @@ jobs:
551557
shell: bash
552558
run: |
553559
sudo apt update
554-
sudo apt install intel-oneapi-compiler-dpcpp-cpp libssl-dev
560+
sudo apt install intel-oneapi-compiler-dpcpp-cpp libssl-dev ninja-build
555561
556562
- name: install oneAPI MKL library
557563
shell: bash
@@ -574,11 +580,13 @@ jobs:
574580
run: |
575581
source /opt/intel/oneapi/setvars.sh
576582
cmake -B build \
583+
-G "Ninja" \
584+
-DCMAKE_BUILD_TYPE=Release \
577585
-DGGML_SYCL=ON \
578586
-DCMAKE_C_COMPILER=icx \
579587
-DCMAKE_CXX_COMPILER=icpx \
580588
-DGGML_SYCL_F16=ON
581-
cmake --build build --config Release -j $(nproc)
589+
time cmake --build build --config Release -j $(nproc)
582590
583591
ubuntu-24-openvino:
584592
name: ubuntu-24-openvino-${{ matrix.openvino_device }}
@@ -648,7 +656,7 @@ jobs:
648656
cmake -B build/ReleaseOV -G Ninja \
649657
-DCMAKE_BUILD_TYPE=Release \
650658
-DGGML_OPENVINO=ON
651-
cmake --build build/ReleaseOV --config Release -j $(nproc)
659+
time cmake --build build/ReleaseOV --config Release -j $(nproc)
652660
653661
- name: Test
654662
id: cmake_test
@@ -1039,7 +1047,7 @@ jobs:
10391047
-DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
10401048
-DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14
10411049
1042-
cmake --build build --config Release -j $(nproc)
1050+
time cmake --build build --config Release -j $(nproc)
10431051
10441052
- name: Test
10451053
id: cmake_test

0 commit comments

Comments
 (0)