Skip to content

Commit 4b224c1

Browse files
authored
Merge branch 'ggml-org:master' into master
2 parents 2df1cf3 + d72f5f7 commit 4b224c1

39 files changed

+4781
-81
lines changed

.github/workflows/build-amd.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: CI (AMD)
2+
3+
on:
4+
workflow_dispatch: # allows manual triggering
5+
push:
6+
branches:
7+
- master
8+
paths: [
9+
'.github/workflows/build-amd.yml',
10+
'**/CMakeLists.txt',
11+
'**/.cmake',
12+
'**/*.h',
13+
'**/*.hpp',
14+
'**/*.c',
15+
'**/*.cpp',
16+
'**/*.cu',
17+
'**/*.cuh',
18+
'**/*.comp'
19+
]
20+
21+
concurrency:
22+
group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }}
23+
cancel-in-progress: true
24+
25+
jobs:
26+
ggml-ci-x64-amd-vulkan:
27+
runs-on: [self-hosted, Linux, X64, AMD]
28+
29+
steps:
30+
- name: Clone
31+
id: checkout
32+
uses: actions/checkout@v4
33+
34+
- name: Test
35+
id: ggml-ci
36+
run: |
37+
vulkaninfo --summary
38+
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp
39+
40+
ggml-ci-x64-amd-rocm:
41+
runs-on: [self-hosted, Linux, X64, AMD]
42+
43+
steps:
44+
- name: Clone
45+
id: checkout
46+
uses: actions/checkout@v4
47+
48+
- name: Test
49+
id: ggml-ci
50+
run: |
51+
amd-smi static
52+
GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS="gfx1101" bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp

.github/workflows/build-linux-cross.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,47 @@ jobs:
253253
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
254254
255255
cmake --build build --config Release -j $(nproc)
256+
257+
ubuntu-24-riscv64-cpu-spacemit-ime-cross:
258+
runs-on: ubuntu-24.04
259+
260+
env:
261+
SPACEMIT_IME_TOOLCHAIN_VERSION: "1.1.2"
262+
SPACEMIT_IME_TOOLCHAIN_PATH: "spacemit-toolchain-linux-glibc-x86_64"
263+
264+
steps:
265+
- uses: actions/checkout@v4
266+
267+
- name: Cache Toolchain
268+
uses: actions/cache@v4
269+
id: cache-spacemit-ime-cross-toolchain
270+
with:
271+
path: ./${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
272+
key: ${{ runner.os }}-spacemit-ime-toolchain-v${{ env.SPACEMIT_IME_TOOLCHAIN_VERSION }}
273+
274+
- name: Setup Toolchain
275+
if: steps.cache-spacemit-ime-cross-toolchain.outputs.cache-hit != 'true'
276+
run: |
277+
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
278+
rm -rf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
279+
mkdir -p ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
280+
tar xf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}.tar.xz -C ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }} --strip-components=1
281+
rm -rf ${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}.tar.xz
282+
283+
- name: Build
284+
run: |
285+
export RISCV_ROOT_PATH=${PWD}/${{ env.SPACEMIT_IME_TOOLCHAIN_PATH }}
286+
cmake -B build -DLLAMA_CURL=OFF \
287+
-DCMAKE_BUILD_TYPE=Release \
288+
-DGGML_OPENMP=OFF \
289+
-DLLAMA_BUILD_EXAMPLES=ON \
290+
-DLLAMA_BUILD_TOOLS=ON \
291+
-DLLAMA_BUILD_TESTS=OFF \
292+
-DGGML_CPU_RISCV64_SPACEMIT=ON \
293+
-DGGML_RVV=ON \
294+
-DGGML_RV_ZFH=ON \
295+
-DGGML_RV_ZICBOP=ON \
296+
-DRISCV64_SPACEMIT_IME_SPEC=RISCV64_SPACEMIT_IME1 \
297+
-DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/riscv64-spacemit-linux-gnu-gcc.cmake
298+
299+
cmake --build build --config Release -j $(nproc)

.github/workflows/build-riscv-native.yml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,63 @@ jobs:
5858
-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH
5959
6060
cmake --build build --config Release -j $(nproc)
61+
62+
# debian-13-riscv64-spacemit-ime-native: # Bianbu 2.2
63+
# runs-on: [self-hosted, RISCV64]
64+
65+
# steps:
66+
# - name: Install prerequisites
67+
# run: |
68+
# sudo apt-get update || true
69+
# sudo apt-get install -y libatomic1
70+
# - uses: actions/checkout@v4
71+
# - name: Setup Riscv
72+
# run: |
73+
# sudo apt-get update || true
74+
# sudo apt-get install -y --no-install-recommends \
75+
# build-essential \
76+
# gcc-14-riscv64-linux-gnu \
77+
# g++-14-riscv64-linux-gnu \
78+
# ccache \
79+
# cmake
80+
# sudo apt-get upgrade binutils -y
81+
82+
# - name: Setup ccache
83+
# run: |
84+
# mkdir -p $HOME/.ccache
85+
# ccache -M 5G -d $HOME/.ccache
86+
# export CCACHE_LOGFILE=/home/runneruser/ccache_debug/ccache.log
87+
# export CCACHE_DEBUGDIR="/home/runneruser/ccache_debug"
88+
# echo "$GITHUB_WORKSPACE"
89+
# echo "CCACHE_LOGFILE=$CCACHE_LOGFILE" >> $GITHUB_ENV
90+
# echo "CCACHE_DEBUGDIR=$CCACHE_DEBUGDIR" >> $GITHUB_ENV
91+
# echo "CCACHE_BASEDIR=$GITHUB_WORKSPACE" >> $GITHUB_ENV
92+
# echo "CCACHE_DIR=$HOME/.ccache" >> $GITHUB_ENV
93+
94+
# - name: Build
95+
# run: |
96+
# cmake -B build \
97+
# -DLLAMA_CURL=OFF \
98+
# -DCMAKE_BUILD_TYPE=Release \
99+
# -DGGML_OPENMP=OFF \
100+
# -DLLAMA_BUILD_EXAMPLES=ON \
101+
# -DLLAMA_BUILD_TOOLS=ON \
102+
# -DLLAMA_BUILD_TESTS=OFF \
103+
# -DCMAKE_SYSTEM_NAME=Linux \
104+
# -DCMAKE_SYSTEM_PROCESSOR=riscv64 \
105+
# -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc-14 \
106+
# -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++-14 \
107+
# -DCMAKE_C_COMPILER_LAUNCHER=ccache \
108+
# -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
109+
# -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
110+
# -DCMAKE_FIND_ROOT_PATH=/usr/lib/riscv64-linux-gnu \
111+
# -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
112+
# -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
113+
# -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \
114+
# -DGGML_RVV=ON \
115+
# -DGGML_RV_ZFH=ON \
116+
# -DGGML_RV_ZICBOP=ON \
117+
# -DGGML_CPU_RISCV64_SPACEMIT=ON \
118+
# -DRISCV64_SPACEMIT_IME_SPEC=RISCV64_SPACEMIT_IME1
119+
120+
# cmake --build build --config Release -j $(nproc)

.github/workflows/build.yml

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1461,34 +1461,6 @@ jobs:
14611461
run: |
14621462
bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp
14631463
1464-
# ggml-ci-x64-amd-vulkan:
1465-
# runs-on: [self-hosted, Linux, X64, AMD]
1466-
#
1467-
# steps:
1468-
# - name: Clone
1469-
# id: checkout
1470-
# uses: actions/checkout@v4
1471-
#
1472-
# - name: Test
1473-
# id: ggml-ci
1474-
# run: |
1475-
# vulkaninfo --summary
1476-
# GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp
1477-
#
1478-
# ggml-ci-x64-amd-rocm:
1479-
# runs-on: [self-hosted, Linux, X64, AMD]
1480-
#
1481-
# steps:
1482-
# - name: Clone
1483-
# id: checkout
1484-
# uses: actions/checkout@v4
1485-
#
1486-
# - name: Test
1487-
# id: ggml-ci
1488-
# run: |
1489-
# amd-smi static
1490-
# GG_BUILD_ROCM=1 GG_BUILD_AMDGPU_TARGETS="gfx1101" bash ./ci/run.sh ~/results/llama.cpp /mnt/llama.cpp
1491-
14921464
ggml-ci-mac-metal:
14931465
runs-on: [self-hosted, macOS, ARM64]
14941466

CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
/ggml/src/ggml-blas/ @slaren
5151
/ggml/src/ggml-common.h @ggerganov @slaren
5252
/ggml/src/ggml-cpu/ @ggerganov @slaren
53+
/ggml/src/ggml-cpu/spacemit/ @alex-spacemit
5354
/ggml/src/ggml-cuda/common.cuh @slaren
5455
/ggml/src/ggml-cuda/fattn* @JohannesGaessler
5556
/ggml/src/ggml-cuda/ggml-cuda.cu @slaren

ci/run.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ if [ ! -z ${GG_BUILD_NO_SVE} ]; then
114114
# arm 9 and newer enables sve by default, adjust these flags depending on the cpu used
115115
CMAKE_EXTRA="${CMAKE_EXTRA} -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8.5-a+fp16+i8mm"
116116
fi
117+
117118
## helpers
118119

119120
# download a file if it does not exist or if it is outdated
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
set(CMAKE_SYSTEM_NAME Linux)
2+
set(CMAKE_SYSTEM_PROCESSOR riscv64)
3+
set(CMAKE_SYSTEM_VERSION 1)
4+
5+
if (CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "^(riscv)")
6+
message(STATUS "HOST SYSTEM ${CMAKE_HOST_SYSTEM_PROCESSOR}")
7+
else()
8+
set(GNU_MACHINE riscv64-unknown-linux-gnu CACHE STRING "GNU compiler triple")
9+
if (DEFINED ENV{RISCV_ROOT_PATH})
10+
file(TO_CMAKE_PATH $ENV{RISCV_ROOT_PATH} RISCV_ROOT_PATH)
11+
else()
12+
message(FATAL_ERROR "RISCV_ROOT_PATH env must be defined")
13+
endif()
14+
15+
set(RISCV_ROOT_PATH ${RISCV_ROOT_PATH} CACHE STRING "root path to riscv toolchain")
16+
set(CMAKE_C_COMPILER ${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-gcc)
17+
set(CMAKE_CXX_COMPILER ${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-g++)
18+
set(CMAKE_STRIP ${RISCV_ROOT_PATH}/bin/riscv64-unknown-linux-gnu-strip)
19+
set(CMAKE_FIND_ROOT_PATH "${RISCV_ROOT_PATH}/riscv64-unknown-linux-gnu")
20+
set(CMAKE_SYSROOT "${RISCV_ROOT_PATH}/sysroot")
21+
endif()
22+
23+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
24+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
25+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
26+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
27+
set(CMAKE_C_FLAGS "-march=rv64gcv_zfh_zba_zicbop -mabi=lp64d ${CMAKE_C_FLAGS}")
28+
set(CMAKE_CXX_FLAGS "-march=rv64gcv_zfh_zba_zicbop -mabi=lp64d ${CXX_FLAGS}")
29+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -latomic")

common/chat.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1616,17 +1616,36 @@ static common_chat_params common_chat_params_init_gpt_oss(const common_chat_temp
16161616
);
16171617
});
16181618

1619-
auto recipient_in_role = builder.add_rule("recipient_in_role",
1620-
"\"<|start|>assistant\"? \" to=functions.\" ( " +
1621-
string_join(tool_rules_recipient_in_role, " | ") + " )"
1622-
);
1623-
16241619
auto recipient_in_channel = builder.add_rule("recipient_in_channel",
16251620
channel + " \" to=functions.\" ( " +
16261621
string_join(tool_rules_recipient_in_channel, " | ") + " )"
16271622
);
16281623

1629-
builder.add_rule("root", recipient_in_role + " | " + recipient_in_channel);
1624+
if (data.grammar_lazy) {
1625+
auto recipient_in_role = builder.add_rule("recipient_in_role",
1626+
"\"<|start|>assistant\"? \" to=functions.\" ( " +
1627+
string_join(tool_rules_recipient_in_role, " | ") + " )"
1628+
);
1629+
1630+
builder.add_rule("root", recipient_in_role + " | " + recipient_in_channel);
1631+
} else {
1632+
auto not_end = builder.add_rule("not-end",
1633+
"[^<] | \"<\" [^|] | \"<|\" [^e] | \"<|e\" [^n] | \"<|en\" [^d] | \"<|end\" [^|] | \"<|end|\" [^>]");
1634+
auto analysis = builder.add_rule("analysis",
1635+
"\"<|channel|>analysis<|message|>\" ( " + not_end + " )* \"<|end|>\"");
1636+
auto commentary = builder.add_rule("commentary",
1637+
"\"<|channel|>commentary<|message|>\" ( " + not_end + " )* \"<|end|>\"");
1638+
1639+
auto recipient_in_role = builder.add_rule("recipient_in_role",
1640+
"\" to=functions.\" ( " + string_join(tool_rules_recipient_in_role, " | ") + " )"
1641+
);
1642+
1643+
builder.add_rule("root",
1644+
"( " + analysis + " \"<|start|>assistant\" )? " +
1645+
"( " + commentary + " \"<|start|>assistant\" )? " +
1646+
"( " + recipient_in_role + " | " + recipient_in_channel + " )"
1647+
);
1648+
}
16301649

16311650
// Trigger on tool calls that appear in the commentary channel
16321651
data.grammar_triggers.push_back({

docs/build-riscv64-spacemit.md

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
> [!IMPORTANT]
2+
> This build documentation is specific only to RISC-V SpacemiT SOCs.
3+
4+
## Build llama.cpp locally (for riscv64)
5+
6+
1. Prepare Toolchain For RISCV
7+
~~~
8+
wget https://archive.spacemit.com/toolchain/spacemit-toolchain-linux-glibc-x86_64-v1.1.2.tar.xz
9+
~~~
10+
11+
2. Build
12+
Below is the build script: it requires utilizing RISC-V vector instructions for acceleration. Ensure the `GGML_CPU_RISCV64_SPACEMIT` compilation option is enabled. The currently supported optimization version is `RISCV64_SPACEMIT_IME1`, corresponding to the `RISCV64_SPACEMIT_IME_SPEC` compilation option. Compiler configurations are defined in the `riscv64-spacemit-linux-gnu-gcc.cmake` file. Please ensure you have installed the RISC-V compiler and set the environment variable via `export RISCV_ROOT_PATH={your_compiler_path}`.
13+
```bash
14+
15+
cmake -B build \
16+
-DCMAKE_BUILD_TYPE=Release \
17+
-DGGML_CPU_RISCV64_SPACEMIT=ON \
18+
-DLLAMA_CURL=OFF \
19+
-DGGML_RVV=ON \
20+
-DGGML_RV_ZFH=ON \
21+
-DGGML_RV_ZICBOP=ON \
22+
-DRISCV64_SPACEMIT_IME_SPEC=RISCV64_SPACEMIT_IME1 \
23+
-DCMAKE_TOOLCHAIN_FILE=${PWD}/cmake/riscv64-spacemit-linux-gnu-gcc.cmake \
24+
-DCMAKE_INSTALL_PREFIX=build/installed
25+
26+
cmake --build build --parallel $(nproc) --config Release
27+
28+
pushd build
29+
make install
30+
popd
31+
```
32+
33+
## Simulation
34+
You can use QEMU to perform emulation on non-RISC-V architectures.
35+
36+
1. Download QEMU
37+
~~~
38+
wget https://archive.spacemit.com/spacemit-ai/qemu/jdsk-qemu-v0.0.14.tar.gz
39+
~~~
40+
41+
2. Run Simulation
42+
After build your llama.cpp, you can run the executable file via QEMU for simulation, for example:
43+
~~~
44+
export QEMU_ROOT_PATH={your QEMU file path}
45+
export RISCV_ROOT_PATH_IME1={your RISC-V compiler path}
46+
47+
${QEMU_ROOT_PATH}/bin/qemu-riscv64 -L ${RISCV_ROOT_PATH_IME1}/sysroot -cpu max,vlen=256,elen=64,vext_spec=v1.0 ${PWD}/build/bin/llama-cli -m ${PWD}/models/Qwen2.5-0.5B-Instruct-Q4_0.gguf -t 1
48+
~~~
49+
## Performance
50+
#### Quantization Support For Matrix
51+
~~~
52+
model name : Spacemit(R) X60
53+
isa : rv64imafdcv_zicbom_zicboz_zicntr_zicond_zicsr_zifencei_zihintpause_zihpm_zfh_zfhmin_zca_zcd_zba_zbb_zbc_zbs_zkt_zve32f_zve32x_zve64d_zve64f_zve64x_zvfh_zvfhmin_zvkt_sscofpmf_sstc_svinval_svnapot_svpbmt
54+
mmu : sv39
55+
uarch : spacemit,x60
56+
mvendorid : 0x710
57+
marchid : 0x8000000058000001
58+
~~~
59+
60+
Q4_0
61+
| Model | Size | Params | backend | threads | test | t/s |
62+
| -----------| -------- | ------ | ------- | ------- | ---- |------|
63+
Qwen2.5 0.5B |403.20 MiB|630.17 M| cpu | 4 | pp512|64.12 ± 0.26|
64+
Qwen2.5 0.5B |403.20 MiB|630.17 M| cpu | 4 | tg128|10.03 ± 0.01|
65+
Qwen2.5 1.5B |1011.16 MiB| 1.78 B | cpu | 4 | pp512|24.16 ± 0.02|
66+
Qwen2.5 1.5B |1011.16 MiB| 1.78 B | cpu | 4 | tg128|3.83 ± 0.06|
67+
Qwen2.5 3B | 1.86 GiB | 3.40 B | cpu | 4 | pp512|12.08 ± 0.02|
68+
Qwen2.5 3B | 1.86 GiB | 3.40 B | cpu | 4 | tg128|2.23 ± 0.02|
69+
70+
Q4_1
71+
| Model | Size | Params | backend | threads | test | t/s |
72+
| -----------| -------- | ------ | ------- | ------- | ---- |------|
73+
Qwen2.5 0.5B |351.50 MiB|494.03 M| cpu | 4 | pp512|62.07 ± 0.12|
74+
Qwen2.5 0.5B |351.50 MiB|494.03 M| cpu | 4 | tg128|9.91 ± 0.01|
75+
Qwen2.5 1.5B |964.06 MiB| 1.54 B | cpu | 4 | pp512|22.95 ± 0.25|
76+
Qwen2.5 1.5B |964.06 MiB| 1.54 B | cpu | 4 | tg128|4.01 ± 0.15|
77+
Qwen2.5 3B | 1.85 GiB | 3.09 B | cpu | 4 | pp512|11.55 ± 0.16|
78+
Qwen2.5 3B | 1.85 GiB | 3.09 B | cpu | 4 | tg128|2.25 ± 0.04|
79+
80+
81+
Q4_K
82+
| Model | Size | Params | backend | threads | test | t/s |
83+
| -----------| -------- | ------ | ------- | ------- | ---- |------|
84+
Qwen2.5 0.5B |462.96 MiB|630.17 M| cpu | 4 | pp512|9.29 ± 0.05|
85+
Qwen2.5 0.5B |462.96 MiB|630.17 M| cpu | 4 | tg128|5.67 ± 0.04|
86+
Qwen2.5 1.5B | 1.04 GiB | 1.78 B | cpu | 4 | pp512|10.38 ± 0.10|
87+
Qwen2.5 1.5B | 1.04 GiB | 1.78 B | cpu | 4 | tg128|3.17 ± 0.08|
88+
Qwen2.5 3B | 1.95 GiB | 3.40 B | cpu | 4 | pp512|4.23 ± 0.04|
89+
Qwen2.5 3B | 1.95 GiB | 3.40 B | cpu | 4 | tg128|1.73 ± 0.00|

ggml/CMakeLists.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ project("ggml" C CXX ASM)
44
### GGML Version
55
set(GGML_VERSION_MAJOR 0)
66
set(GGML_VERSION_MINOR 9)
7-
set(GGML_VERSION_PATCH 0)
8-
set(GGML_VERSION_DEV "-dev") # "-dev" for development, "" for releases
7+
set(GGML_VERSION_PATCH 3)
98
set(GGML_VERSION_BASE "${GGML_VERSION_MAJOR}.${GGML_VERSION_MINOR}.${GGML_VERSION_PATCH}")
109

1110
find_program(GIT_EXE NAMES git git.exe NO_CMAKE_FIND_ROOT_PATH)
@@ -26,8 +25,8 @@ if(GIT_EXE)
2625
)
2726
endif()
2827

29-
# Build the version string with optional -dev suffix and dirty flag
30-
set(GGML_VERSION "${GGML_VERSION_BASE}${GGML_VERSION_DEV}")
28+
# Build the version string with optional dirty flag
29+
set(GGML_VERSION "${GGML_VERSION_BASE}")
3130
if(GGML_GIT_DIRTY AND NOT GGML_GIT_DIRTY EQUAL 0)
3231
set(GGML_VERSION "${GGML_VERSION}-dirty")
3332
endif()

0 commit comments

Comments
 (0)