Skip to content

Commit 8799390

Browse files
Merge pull request #138 from chaxu01/feature/my-ML-examples
Enable for Linux build
2 parents ba6bcff + c0a196b commit 8799390

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

kleidiai-examples/llama_cpp/0001-Use-KleidiAI-Int4-Matmul-micro-kernels-in-llama.cpp.patch

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,16 @@
1-
From 3eaa2789f0099dbdd2f36efce4d1eeb6edfda033 Mon Sep 17 00:00:00 2001
2-
From: Gian Marco Iodice <gianmarco.iodice@arm.com>
3-
Date: Fri, 14 Jun 2024 14:55:47 +0100
4-
Subject: [PATCH] Use KleidiAI Int4 Matmul micro-kernels in llama.cpp
1+
From 453e52a763043e95b23c88176792e065377189ad Mon Sep 17 00:00:00 2001
2+
From: Charles Xu <chaxu01@e125126.arm.com>
3+
Date: Tue, 9 Jul 2024 08:49:27 +0200
4+
Subject: [PATCH] Updated to be able to build on Linux
55

6-
* Update CMake file to fetch the Int4 micro-kernels from the KleidiAI
7-
repository
8-
* Implement a KleidiAI backend for llama.cpp
9-
10-
Signed-off-by: Gian Marco Iodice <[email protected]>
116
---
127
CMakeLists.txt | 48 ++++
138
ggml-alloc.c | 13 ++
14-
ggml-kleidiai.cpp | 561 ++++++++++++++++++++++++++++++++++++++++++++++
9+
ggml-kleidiai.cpp | 560 ++++++++++++++++++++++++++++++++++++++++++++++
1510
ggml-kleidiai.h | 45 ++++
1611
ggml.c | 27 +++
1712
llama.cpp | 19 +-
18-
6 files changed, 712 insertions(+), 1 deletion(-)
13+
6 files changed, 711 insertions(+), 1 deletion(-)
1914
create mode 100644 ggml-kleidiai.cpp
2015
create mode 100644 ggml-kleidiai.h
2116

@@ -118,10 +113,10 @@ index bd367c42..ed4ce0ae 100644
118113
if (this_size > max_size) {
119114
diff --git a/ggml-kleidiai.cpp b/ggml-kleidiai.cpp
120115
new file mode 100644
121-
index 00000000..9e343c86
116+
index 00000000..aa53086d
122117
--- /dev/null
123118
+++ b/ggml-kleidiai.cpp
124-
@@ -0,0 +1,561 @@
119+
@@ -0,0 +1,560 @@
125120
+/*
126121
+ * Copyright (c) 2024 Arm Limited.
127122
+ *
@@ -146,7 +141,7 @@ index 00000000..9e343c86
146141
+ * SOFTWARE.
147142
+ */
148143
+
149-
+#if defined(__aarch64__) && defined(__ANDROID__)
144+
+#if defined(__aarch64__) && (defined(__ANDROID__) || defined(__linux__))
150145
+#include "ggml-kleidiai.h"
151146
+
152147
+#include "ggml.h"
@@ -681,8 +676,7 @@ index 00000000..9e343c86
681676
+ }
682677
+ extra_mem_idx = 0;
683678
+}
684-
+
685-
+#endif // defined(__aarch64__) && defined(__ANDROID__)
679+
+#endif // defined(__aarch64__) && (defined(__ANDROID__) || defined(__linux__))
686680
diff --git a/ggml-kleidiai.h b/ggml-kleidiai.h
687681
new file mode 100644
688682
index 00000000..a4cdf1fb
@@ -846,5 +840,5 @@ index 05591aa4..735dde04 100644
846840
}
847841

848842
--
849-
2.25.1
843+
2.34.1
850844

kleidiai-examples/llama_cpp/README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,16 @@ mkdir build && cd build
9797

9898
export NDK_PATH="your-android-ndk-path"
9999

100-
cmake -DLLAMA_KLEIDIAI=ON -DLLAMA_OPENMP=OFF -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23 -DCMAKE_C_FLAGS=-march=armv8.2a+i8mm+dotprod -DCMAKE_CXX_FLAGS=-march=armv8.2a+i8mm+dotprod ..
100+
cmake -DLLAMA_KLEIDIAI=ON -DCMAKE_TOOLCHAIN_FILE=${NDK_PATH}/build/cmake/android.toolchain.cmake -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-23 -DCMAKE_C_FLAGS=-march=armv8.2a+i8mm+dotprod -DCMAKE_CXX_FLAGS=-march=armv8.2a+i8mm+dotprod ..
101+
102+
make -j4
103+
```
104+
Build the llama.cpp project for Linux:
105+
106+
```bash
107+
mkdir build && cd build
108+
109+
cmake -DCMAKE_C_FLAGS=-march=armv8.2-a+dotprod+i8mm -DCMAKE_CXX_FLAGS=-march=armv8.2-a+dotprod+i8mm -DLLAMA_KLEIDIAI=ON
101110

102111
make -j4
103112
```

0 commit comments

Comments
 (0)