run: |
vulkaninfo --summary
GG_BUILD_VULKAN=1 bash ./ci/run.sh ~/results/llama.cpp ~/mnt/llama.cpp
+
+ ggml-ci-arm64-cpu-kleidiai:
+ runs-on: ubuntu-22.04-arm
+
+ steps:
+ - name: Clone
+ id: checkout
+ uses: actions/checkout@v4
+
+ - name: ccache
+ uses: ggml-org/ccache-action@v1.2.16
+ with:
+ key: ggml-ci-arm64-cpu-kleidiai
+ evict-old-files: 1d
+
+ - name: Dependencies
+ id: depends
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y build-essential libcurl4-openssl-dev
+
+ - name: Test
+ id: ggml-ci
+ run: |
+ GG_BUILD_KLEIDIAI=1 GG_BUILD_EXTRA_TESTS_0=1 bash ./ci/run.sh ./tmp/results ./tmp/mnt
+
# # with MUSA support
# GG_BUILD_MUSA=1 bash ./ci/run.sh ./tmp/results ./tmp/mnt
#
+# # with KLEIDIAI support
+# GG_BUILD_KLEIDIAI=1 bash ./ci/run.sh ./tmp/results ./tmp/mnt
+#
if [ -z "$2" ]; then
echo "usage: $0 <output-dir> <mnt-dir>"
CMAKE_EXTRA="${CMAKE_EXTRA} -DGGML_NATIVE=OFF -DGGML_CPU_ARM_ARCH=armv8.5-a+fp16+i8mm"
fi
+if [ -n "${GG_BUILD_KLEIDIAI}" ]; then
+ echo ">>===== Enabling KleidiAI support"
+
+ CANDIDATES=("armv9-a+dotprod+i8mm" "armv8.6-a+dotprod+i8mm" "armv8.2-a+dotprod")
+ CPU=""
+
+ for cpu in "${CANDIDATES[@]}"; do
+ if echo 'int main(){}' | ${CXX:-c++} -march="$cpu" -x c++ - -c -o /dev/null >/dev/null 2>&1; then
+ CPU="$cpu"
+ break
+ fi
+ done
+
+ if [ -z "$CPU" ]; then
+ echo "ERROR: None of the required ARM baselines (armv9/armv8.6/armv8.2 + dotprod) are supported by this compiler."
+ exit 1
+ fi
+
+ echo ">>===== Using ARM baseline: ${CPU}"
+
+ CMAKE_EXTRA="${CMAKE_EXTRA:+$CMAKE_EXTRA } \
+ -DGGML_NATIVE=OFF \
+ -DGGML_CPU_KLEIDIAI=ON \
+ -DGGML_CPU_AARCH64=ON \
+ -DGGML_CPU_ARM_ARCH=${CPU} \
+ -DBUILD_SHARED_LIBS=OFF"
+fi
+
## helpers
# download a file if it does not exist or if it is outdated