CI (cross) #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI (cross) | |
| on: | |
| # only manual triggers due to low-importance of the workflows | |
| # TODO: for regular runs, provision dedicated self-hosted runners | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - master | |
| paths: [ | |
| '.github/workflows/build-cross.yml', | |
| 'ggml/src/spacemit/*', | |
| 'ggml/src/arch/loongarch/*' | |
| ] | |
| # run once every week | |
| schedule: | |
| - cron: '0 0 * * 0' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ubuntu-24-riscv64-cpu-cross: | |
| # runs-on: ubuntu-24.04 | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # - name: Setup Riscv | |
| # run: | | |
| # sudo dpkg --add-architecture riscv64 | |
| # # Add arch-specific repositories for non-amd64 architectures | |
| # cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe | |
| # EOF | |
| # sudo apt-get update || true ;# Prevent failure due to missing URLs. | |
| # sudo apt-get install -y --no-install-recommends \ | |
| # build-essential \ | |
| # gcc-14-riscv64-linux-gnu \ | |
| # g++-14-riscv64-linux-gnu | |
| # - name: Build | |
| # run: | | |
| # cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| # -DCMAKE_BUILD_TYPE=Release \ | |
| # -DGGML_OPENMP=OFF \ | |
| # -DLLAMA_BUILD_EXAMPLES=ON \ | |
| # -DLLAMA_BUILD_TOOLS=ON \ | |
| # -DLLAMA_BUILD_TESTS=OFF \ | |
| # -DCMAKE_SYSTEM_NAME=Linux \ | |
| # -DCMAKE_SYSTEM_PROCESSOR=riscv64 \ | |
| # -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \ | |
| # -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \ | |
| # -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
| # -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH | |
| # cmake --build build --config Release -j $(nproc) | |
| # ubuntu-24-riscv64-vulkan-cross: | |
| # runs-on: ubuntu-24.04 | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # - name: Setup Riscv | |
| # run: | | |
| # sudo dpkg --add-architecture riscv64 | |
| # # Add arch-specific repositories for non-amd64 architectures | |
| # cat << EOF | sudo tee /etc/apt/sources.list.d/riscv64-ports.list | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe | |
| # deb [arch=riscv64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe | |
| # EOF | |
| # sudo apt-get update || true ;# Prevent failure due to missing URLs. | |
| # sudo apt-get install -y --no-install-recommends \ | |
| # build-essential \ | |
| # glslc \ | |
| # gcc-14-riscv64-linux-gnu \ | |
| # g++-14-riscv64-linux-gnu \ | |
| # libvulkan-dev:riscv64 | |
| # - name: Build | |
| # run: | | |
| # cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| # -DCMAKE_BUILD_TYPE=Release \ | |
| # -DGGML_VULKAN=ON \ | |
| # -DGGML_OPENMP=OFF \ | |
| # -DLLAMA_BUILD_EXAMPLES=ON \ | |
| # -DLLAMA_BUILD_TOOLS=ON \ | |
| # -DLLAMA_BUILD_TESTS=OFF \ | |
| # -DCMAKE_SYSTEM_NAME=Linux \ | |
| # -DCMAKE_SYSTEM_PROCESSOR=riscv64 \ | |
| # -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \ | |
| # -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \ | |
| # -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
| # -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH | |
| # cmake --build build --config Release -j $(nproc) | |
| # ubuntu-24-arm64-vulkan-cross: | |
| # runs-on: ubuntu-24.04 | |
| # steps: | |
| # - uses: actions/checkout@v6 | |
| # - name: Setup Arm64 | |
| # run: | | |
| # sudo dpkg --add-architecture arm64 | |
| # # Add arch-specific repositories for non-amd64 architectures | |
| # cat << EOF | sudo tee /etc/apt/sources.list.d/arm64-ports.list | |
| # deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble main universe | |
| # deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-updates main universe | |
| # deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-security main universe | |
| # deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports/ noble-backports main universe | |
| # EOF | |
| # sudo apt-get update || true ;# Prevent failure due to missing URLs. | |
| # sudo apt-get install -y --no-install-recommends \ | |
| # build-essential \ | |
| # glslc \ | |
| # crossbuild-essential-arm64 \ | |
| # libvulkan-dev:arm64 | |
| # - name: Build | |
| # run: | | |
| # cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| # -DCMAKE_BUILD_TYPE=Release \ | |
| # -DGGML_VULKAN=ON \ | |
| # -DGGML_OPENMP=OFF \ | |
| # -DLLAMA_BUILD_EXAMPLES=ON \ | |
| # -DLLAMA_BUILD_TOOLS=ON \ | |
| # -DLLAMA_BUILD_TESTS=OFF \ | |
| # -DCMAKE_SYSTEM_NAME=Linux \ | |
| # -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ | |
| # -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \ | |
| # -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \ | |
| # -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
| # -DCMAKE_FIND_ROOT_PATH=/usr/lib/aarch64-linux-gnu \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ | |
| # -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH | |
| # cmake --build build --config Release -j $(nproc) | |
| debian-13-loongarch64-cpu-cross: | |
| runs-on: ${{ 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} | |
| container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup LoongArch | |
| run: | | |
| rm -f /etc/apt/sources.list.d/* | |
| cat << EOF | tee /etc/apt/sources.list.d/debian-ports.list | |
| deb http://snapshot.debian.org/archive/debian/20250515T202920Z/ trixie main | |
| EOF | |
| ( echo 'quiet "true";'; \ | |
| echo 'APT::Get::Assume-Yes "true";'; \ | |
| echo 'APT::Install-Recommends "false";'; \ | |
| echo 'Acquire::Check-Valid-Until "false";'; \ | |
| echo 'Acquire::Retries "5";'; \ | |
| ) > /etc/apt/apt.conf.d/99snapshot-repos | |
| apt-get update | |
| apt-get install -y ca-certificates debian-ports-archive-keyring cmake git zip | |
| dpkg --add-architecture loong64 | |
| # Add arch-specific repositories for non-amd64 architectures | |
| cat << EOF | tee /etc/apt/sources.list.d/loong64-ports.list | |
| deb [arch=loong64] http://snapshot.debian.org/archive/debian-ports/20250515T194251Z/ sid main | |
| EOF | |
| apt-get update || true ;# Prevent failure due to missing URLs. | |
| apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| gcc-14-loongarch64-linux-gnu \ | |
| g++-14-loongarch64-linux-gnu | |
| - name: Build | |
| run: | | |
| cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DGGML_OPENMP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=ON \ | |
| -DLLAMA_BUILD_TOOLS=ON \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DCMAKE_SYSTEM_NAME=Linux \ | |
| -DCMAKE_SYSTEM_PROCESSOR=loongarch64 \ | |
| -DCMAKE_C_COMPILER=loongarch64-linux-gnu-gcc-14 \ | |
| -DCMAKE_CXX_COMPILER=loongarch64-linux-gnu-g++-14 \ | |
| -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
| -DCMAKE_FIND_ROOT_PATH=/usr/lib/loongarch64-linux-gnu \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH | |
| cmake --build build --config Release -j $(nproc) | |
| debian-13-loongarch64-vulkan-cross: | |
| runs-on: ${{ 'ubuntu-24.04-arm' || 'ubuntu-24.04' }} | |
| container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Setup LoongArch | |
| run: | | |
| rm -f /etc/apt/sources.list.d/* | |
| cat << EOF | tee /etc/apt/sources.list.d/debian-ports.list | |
| deb http://snapshot.debian.org/archive/debian/20250515T202920Z/ trixie main | |
| EOF | |
| ( echo 'quiet "true";'; \ | |
| echo 'APT::Get::Assume-Yes "true";'; \ | |
| echo 'APT::Install-Recommends "false";'; \ | |
| echo 'Acquire::Check-Valid-Until "false";'; \ | |
| echo 'Acquire::Retries "5";'; \ | |
| ) > /etc/apt/apt.conf.d/99snapshot-repos | |
| apt-get update | |
| apt-get install -y ca-certificates debian-ports-archive-keyring cmake git zip | |
| dpkg --add-architecture loong64 | |
| # Add arch-specific repositories for non-amd64 architectures | |
| cat << EOF | tee /etc/apt/sources.list.d/loong64-ports.list | |
| deb [arch=loong64] http://snapshot.debian.org/archive/debian-ports/20250515T194251Z/ sid main | |
| EOF | |
| apt-get update || true ;# Prevent failure due to missing URLs. | |
| apt-get install -y --no-install-recommends \ | |
| build-essential \ | |
| glslc \ | |
| gcc-14-loongarch64-linux-gnu \ | |
| g++-14-loongarch64-linux-gnu \ | |
| libvulkan-dev:loong64 | |
| - name: Build | |
| run: | | |
| cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DGGML_VULKAN=ON \ | |
| -DGGML_OPENMP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=ON \ | |
| -DLLAMA_BUILD_TOOLS=ON \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DCMAKE_SYSTEM_NAME=Linux \ | |
| -DCMAKE_SYSTEM_PROCESSOR=loongarch64 \ | |
| -DCMAKE_C_COMPILER=loongarch64-linux-gnu-gcc-14 \ | |
| -DCMAKE_CXX_COMPILER=loongarch64-linux-gnu-g++-14 \ | |
| -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ | |
| -DCMAKE_FIND_ROOT_PATH=/usr/lib/loongarch64-linux-gnu \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ | |
| -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH | |
| cmake --build build --config Release -j $(nproc) | |
| ubuntu-24-riscv64-cpu-spacemit-ime-cross: | |
| runs-on: ubuntu-24.04 | |
| env: | |
| # Make sure this is in sync with build-cache.yml | |
| SPACEMIT_IME_TOOLCHAIN_VERSION: "1.1.2" | |
| steps: | |
| - uses: actions/checkout@v6 | |
| #- name: Use SpacemiT Toolchain Cache | |
| # uses: actions/cache@v5 | |
| # id: cache-toolchain | |
| # with: | |
| # path: ./spacemit_toolchain | |
| # key: spacemit-ime-toolchain-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}-${{ runner.os }} | |
| - name: Setup SpacemiT Toolchain | |
| #if: steps.cache-toolchain.outputs.cache-hit != 'true' | |
| uses: ./.github/actions/linux-setup-spacemit | |
| with: | |
| path: ./spacemit_toolchain | |
| version: ${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }} | |
| - name: Build | |
| run: | | |
| export RISCV_ROOT_PATH=${PWD}/spacemit_toolchain | |
| cmake -B build -DLLAMA_OPENSSL=OFF \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DGGML_OPENMP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=ON \ | |
| -DLLAMA_BUILD_TOOLS=ON \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DGGML_CPU_RISCV64_SPACEMIT=ON \ | |
| -DGGML_RVV=ON \ | |
| -DGGML_RV_ZFH=ON \ | |
| -DGGML_RV_ZICBOP=ON \ | |
| -DGGML_RV_ZIHINTPAUSE=ON \ | |
| -DRISCV64_SPACEMIT_IME_SPEC=RISCV64_SPACEMIT_IME1 \ | |
| -DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/riscv64-spacemit-linux-gnu-gcc.cmake | |
| cmake --build build --config Release -j $(nproc) |