mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2026-07-01 00:10:21 -05:00
* remove redundant apple job openvino gpu and cpu test can share the same build and machine Update build-rpc.yml Update build-openvino.yml cpu any doesnt make sense as we have an arm job already, so do high perf on both x86 and arm remove duplicate x86 vulkan combine backend sampling Update server.yml run server on arm as windows is x86 * emdawn on one machine only * fix openvino, remove cpu tag as we dont have many x64 machines with that tag
174 lines
5.2 KiB
YAML
174 lines
5.2 KiB
YAML
name: CI (webgpu)
|
|
|
|
on:
|
|
workflow_dispatch: # allows manual triggering
|
|
push:
|
|
branches:
|
|
- master
|
|
paths: [
|
|
'.github/workflows/build-webgpu.yml',
|
|
'**/CMakeLists.txt',
|
|
'**/.cmake',
|
|
'**/*.h',
|
|
'**/*.hpp',
|
|
'**/*.c',
|
|
'**/*.cpp',
|
|
'**/*.wgsl'
|
|
]
|
|
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
paths: [
|
|
'.github/workflows/build-webgpu.yml',
|
|
'ggml/src/ggml-webgpu/**'
|
|
]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
GGML_NLOOP: 3
|
|
GGML_N_THREADS: 1
|
|
LLAMA_ARG_LOG_COLORS: 1
|
|
LLAMA_ARG_LOG_PREFIX: 1
|
|
LLAMA_ARG_LOG_TIMESTAMPS: 1
|
|
|
|
jobs:
|
|
macos:
|
|
runs-on: macos-latest
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: ccache
|
|
uses: ggml-org/ccache-action@v1.2.21
|
|
with:
|
|
key: webgpu-macos-latest
|
|
evict-old-files: 1d
|
|
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
- name: Dawn Dependency
|
|
id: dawn-depends
|
|
run: |
|
|
DAWN_VERSION="v20260317.182325"
|
|
DAWN_OWNER="google"
|
|
DAWN_REPO="dawn"
|
|
DAWN_ASSET_NAME="Dawn-18eb229ef5f707c1464cc581252e7603c73a3ef0-macos-latest-Release"
|
|
echo "Fetching release asset from https://github.com/google/dawn/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.tar.gz"
|
|
curl -L -o artifact.tar.gz \
|
|
"https://github.com/google/dawn/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.tar.gz"
|
|
mkdir dawn
|
|
tar -xvf artifact.tar.gz -C dawn --strip-components=1
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
export CMAKE_PREFIX_PATH=dawn
|
|
cmake -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DGGML_WEBGPU=ON -DGGML_METAL=OFF -DGGML_BLAS=OFF
|
|
time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu)
|
|
|
|
- name: Test
|
|
id: cmake_test
|
|
run: |
|
|
cd build
|
|
ctest -L main --verbose --timeout 900
|
|
|
|
ubuntu:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: ccache
|
|
uses: ggml-org/ccache-action@v1.2.21
|
|
with:
|
|
key: webgpu-ubuntu-24.04
|
|
evict-old-files: 1d
|
|
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
- name: Dependencies
|
|
id: depends
|
|
run: |
|
|
sudo add-apt-repository -y ppa:kisak/kisak-mesa
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y build-essential mesa-vulkan-drivers \
|
|
libxcb-xinput0 libxcb-xinerama0 libxcb-cursor-dev libssl-dev
|
|
|
|
- name: Dawn Dependency
|
|
id: dawn-depends
|
|
run: |
|
|
sudo apt-get install -y libxrandr-dev libxinerama-dev libxcursor-dev mesa-common-dev libx11-xcb-dev libxi-dev
|
|
DAWN_VERSION="v20260317.182325"
|
|
DAWN_OWNER="google"
|
|
DAWN_REPO="dawn"
|
|
DAWN_ASSET_NAME="Dawn-18eb229ef5f707c1464cc581252e7603c73a3ef0-ubuntu-latest-Release"
|
|
echo "Fetching release asset from https://github.com/google/dawn/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.tar.gz"
|
|
curl -L -o artifact.tar.gz \
|
|
"https://github.com/google/dawn/releases/download/${DAWN_VERSION}/${DAWN_ASSET_NAME}.tar.gz"
|
|
mkdir dawn
|
|
tar -xvf artifact.tar.gz -C dawn --strip-components=1
|
|
|
|
- name: Build
|
|
id: cmake_build
|
|
run: |
|
|
export Dawn_DIR=dawn/lib64/cmake/Dawn
|
|
cmake -B build \
|
|
-DGGML_WEBGPU=ON
|
|
time cmake --build build --config Release -j $(nproc)
|
|
|
|
- name: Test
|
|
id: cmake_test
|
|
run: |
|
|
cd build
|
|
# This is using llvmpipe and runs slower than other backends
|
|
# test-backend-ops is too slow on llvmpipe, skip it
|
|
ctest -L main -E test-backend-ops --verbose --timeout 900
|
|
|
|
ubuntu-wasm:
|
|
runs-on: ubuntu-24.04-arm
|
|
|
|
steps:
|
|
- name: Clone
|
|
id: checkout
|
|
uses: actions/checkout@v6
|
|
|
|
- name: ccache
|
|
uses: ggml-org/ccache-action@v1.2.21
|
|
with:
|
|
key: webgpu-ubuntu-24.04-arm-wasm
|
|
evict-old-files: 1d
|
|
save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
|
|
|
- name: Install Emscripten
|
|
run: |
|
|
git clone https://github.com/emscripten-core/emsdk.git
|
|
cd emsdk
|
|
./emsdk install latest
|
|
./emsdk activate latest
|
|
|
|
- name: Fetch emdawnwebgpu
|
|
run: |
|
|
DAWN_TAG="v20260317.182325"
|
|
EMDAWN_PKG="emdawnwebgpu_pkg-${DAWN_TAG}.zip"
|
|
echo "Downloading ${EMDAWN_PKG}"
|
|
curl -L -o emdawn.zip \
|
|
"https://github.com/google/dawn/releases/download/${DAWN_TAG}/${EMDAWN_PKG}"
|
|
unzip emdawn.zip
|
|
|
|
- name: Build WASM WebGPU
|
|
run: |
|
|
source emsdk/emsdk_env.sh
|
|
emcmake cmake -B build-wasm \
|
|
-G "Ninja" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DGGML_WEBGPU=ON \
|
|
-DLLAMA_OPENSSL=OFF \
|
|
-DEMDAWNWEBGPU_DIR=emdawnwebgpu_pkg
|
|
|
|
time cmake --build build-wasm --config Release --target test-backend-ops -j $(nproc)
|