name: CI (self-hosted CPU backend) on: workflow_dispatch: # allows manual triggering push: branches: - master paths: [ '.github/workflows/ci-self-hosted-cpu.yml', 'ci/run.sh', '**/CMakeLists.txt', '**/.cmake', '**/*.h', '**/*.hpp', '**/*.c', '**/*.cpp' ] pull_request: types: [opened, synchronize, reopened] paths: [ '.github/workflows/ci-self-hosted-cpu.yml', 'ci/run.sh', '**/CMakeLists.txt', '**/.cmake', 'ggml/src/*', 'ggml/src/ggml-cpu/**' ] concurrency: group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} cancel-in-progress: true env: # note: this is dud token to avoid rate limiting (https://github.com/ggml-org/llama.cpp/pull/25706#issuecomment-4979941302) HF_TOKEN: ${{ secrets.HF_TOKEN_CI }} GGML_NLOOP: 3 GGML_N_THREADS: 1 LLAMA_ARG_LOG_COLORS: 1 LLAMA_ARG_LOG_PREFIX: 1 LLAMA_ARG_LOG_TIMESTAMPS: 1 jobs: cpu-x64-high-perf: runs-on: [self-hosted, Linux, X64] steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Test id: ggml-ci run: | LLAMA_ARG_THREADS=$(nproc) GG_BUILD_HIGH_PERF=1 GG_BUILD_EXTRA_TESTS_0=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp cpu-arm64-high-perf-graviton4: runs-on: ah-ubuntu_24_04-c8g_8x steps: - name: Clone id: checkout uses: actions/checkout@v6 - name: Dependencies id: depends run: | set -euxo pipefail sudo apt-get update sudo DEBIAN_FRONTEND=noninteractive NEEDRESTART_MODE=a \ apt-get install -y \ build-essential \ python3-venv \ gpg \ wget \ time \ git-lfs git lfs install # install the latest cmake sudo install -d /usr/share/keyrings wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc \ | gpg --dearmor \ | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' \ | sudo tee /etc/apt/sources.list.d/kitware.list sudo apt-get update sudo apt-get install -y cmake - name: Test id: ggml-ci run: | LLAMA_ARG_THREADS=$(nproc) \ GG_BUILD_HIGH_PERF=1 \ GG_BUILD_NO_BF16=1 \ GG_BUILD_EXTRA_TESTS_0=1 \ bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp # TODO: provision AMX-compatible machine #cpu-amx: # runs-on: [self-hosted, Linux, CPU, AMX] # steps: # - name: Clone # id: checkout # uses: actions/checkout@v6 # - name: Test # id: ggml-ci # run: | # bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp