Spaces:
Running on Zero
Running on Zero
| name: CI (vulkan) | |
| on: | |
| workflow_dispatch: # allows manual triggering | |
| push: | |
| branches: | |
| - master | |
| paths: [ | |
| '.github/workflows/build-vulkan.yml', | |
| '**/CMakeLists.txt', | |
| '**/.cmake', | |
| '**/*.h', | |
| '**/*.hpp', | |
| '**/*.c', | |
| '**/*.cpp', | |
| '**/*.comp', | |
| '**/*.glsl' | |
| ] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| paths: [ | |
| '.github/workflows/build-vulkan.yml', | |
| 'ggml/src/ggml-vulkan/**' | |
| ] | |
| 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: | |
| ubuntu-arm64: | |
| runs-on: ubuntu-24.04-arm | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| - name: Dependencies | |
| id: depends | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y gcc-14 g++-14 build-essential glslc libvulkan-dev spirv-headers libssl-dev ninja-build | |
| echo "CC=gcc-14" >> "$GITHUB_ENV" | |
| echo "CXX=g++-14" >> "$GITHUB_ENV" | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: vulkan-ubuntu-24.04-arm-new | |
| variant: ccache | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Configure | |
| id: cmake_configure | |
| run: | | |
| cmake -B build \ | |
| -G "Ninja" \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DGGML_VULKAN=ON | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| time cmake --build build -j $(nproc) | |
| ubuntu-llvmpipe: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| - 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: Get latest Vulkan SDK version | |
| id: vulkan_sdk_version | |
| run: | | |
| echo "VULKAN_SDK_VERSION=$(curl https://vulkan.lunarg.com/sdk/latest/linux.txt)" >> "$GITHUB_ENV" | |
| - name: Use Vulkan SDK Cache | |
| uses: actions/cache@v5 | |
| id: cache-sdk | |
| with: | |
| path: ./vulkan_sdk | |
| key: cache-gha-vulkan-sdk-${{ env.VULKAN_SDK_VERSION }}-${{ runner.os }} | |
| - name: Setup Vulkan SDK | |
| if: steps.cache-sdk.outputs.cache-hit != 'true' | |
| uses: ./.github/actions/linux-setup-vulkan | |
| with: | |
| path: ./vulkan_sdk | |
| version: ${{ env.VULKAN_SDK_VERSION }} | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: vulkan-ubuntu-24.04-llvmpipe | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| source ./vulkan_sdk/setup-env.sh | |
| cmake -B build \ | |
| -DGGML_VULKAN=ON | |
| cmake --build build --config Release -j $(nproc) | |
| - name: Test | |
| id: cmake_test | |
| run: | | |
| cd build | |
| export GGML_VK_VISIBLE_DEVICES=0 | |
| export GGML_VK_DISABLE_F16=1 | |
| export GGML_VK_DISABLE_COOPMAT=1 | |
| # 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 | |