mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-10-27 08:21:30 +00:00
* ggml: add spacemit backend Change-Id: I249bdc043485d815a9c351867137bc1e27cc2e23 * add new line at end of file Change-Id: I889ed1c85fb45e62350ecde0c06f70450cadfbe2 * add riscv zba extension limit Change-Id: I321eb200f859751727afe5cae13074dfce2bb0ce * fixed for review comments, file renamed and format Change-Id: Ia20b6ec24a36638e62e0fe07cf100916a7cce3ce * fixed for code format, after clang-format Change-Id: I5dc33a0412da3d3f2d77075d8939185d3009eca2 * use _Float16 instead of __fp16 Change-Id: I039fb02bb95270e641bc4442204e658735859d43 * add ci for riscv64-spacemit-ime-native Change-Id: I711c1033061df1a289ea77891b2997599dfe8279 * update debian-13-riscv64-spacemit-ime-native ci label Change-Id: Ifb2b891e2fca57b5da604fce2ac255f27731179a * remove license comment for spacemit ime Change-Id: If0dc3ca30a958631ccca0a28b62e0b825f9fb0c3 * upgrade binutils for gcc ime Change-Id: Ibf2fa74c1064408974cb5b45f044d40987e5fb45 * add spacemit ime cross jobs Change-Id: I80d74909941d41cb9cd09e51d8baf01c985cbfc6 * remove native compile for riscv64-spacemit-ime Change-Id: I01920afafdc73fa7424014fd648d243f8ec9e25e * ci : add caching for spacemit ime cross toolchain Change-Id: Ic54a192019a2fd982bbd58225ce3bbc38f4053de * ci: bug fixed for cache path and env Change-Id: I28c42e10b6fff053bb6580926ca2353448cb042a * Update .github/workflows/build-linux-cross.yml for cache path Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> * bugfixed for build-linux-cross.yml, syntax error Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com> --------- Co-authored-by: cailinxi <linxi.cai@spacemit.com> Co-authored-by: Sigbjørn Skjæret <sigbjorn.skjaeret@scala.com>
300 lines
13 KiB
YAML
300 lines
13 KiB
YAML
name: Build on Linux using cross-compiler
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
|
|
jobs:
|
|
ubuntu-24-riscv64-cpu-cross:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- 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_CURL=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@v4
|
|
# - 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_CURL=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@v4
|
|
# - 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_CURL=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
|
|
container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- 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_CURL=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
|
|
container: debian@sha256:653dfb9f86c3782e8369d5f7d29bb8faba1f4bff9025db46e807fa4c22903671
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- 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_CURL=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:
|
|
SPACEMIT_IME_TOOLCHAIN_VERSION: "1.1.2"
|
|
SPACEMIT_IME_TOOLCHAIN_PATH: "spacemit-toolchain-linux-glibc-x86_64"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Cache Toolchain
|
|
uses: actions/cache@v4
|
|
id: cache-spacemit-ime-cross-toolchain
|
|
with:
|
|
path: ./${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
|
|
key: ${{ runner.os }}-spacemit-ime-toolchain-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}
|
|
|
|
- name: Setup Toolchain
|
|
if: steps.cache-spacemit-ime-cross-toolchain.outputs.cache-hit != 'true'
|
|
run: |
|
|
wget --quiet --no-check-certificate https://archive.spacemit.com/toolchain/spacemit-toolchain-linux-glibc-x86_64-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}.tar.xz -O ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}.tar.xz
|
|
rm -rf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
|
|
mkdir -p ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
|
|
tar xf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}.tar.xz -C ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }} --strip-components=1
|
|
rm -rf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}.tar.xz
|
|
|
|
- name: Build
|
|
run: |
|
|
export RISCV_ROOT_PATH=${PWD}/${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
|
|
cmake -B build -DLLAMA_CURL=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 \
|
|
-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)
|