Skip to content

Compile bug: Build Llama.cpp failed for Windows on ARM with KLEIDIAI enabled. #15653

@quic-zhanweiw

Description

@quic-zhanweiw

Git commit

The latest version.

Operating systems

Windows

GGML backends

CPU

Problem description & steps to reproduce

I'm trying to build ARM64 Llama.cpp on Surface Laptop with below command in 'ARM64 Native Tools Command Prompt for VS 2022' environment:

cmake -B build --preset arm64-windows-llvm-release -D GGML_OPENMP=OFF -DGGML_CPU_KLEIDIAI=ON -DLLAMA_CURL=OFF
cmake --build build --config Release

There're many error while compile 'kleidiai'. How should I fix these issues?
Here is the complete compile failed log:
compile_failed.txt

First Bad Commit

No response

Compile command

cmake -B build --preset arm64-windows-llvm-release -D GGML_OPENMP=OFF -DGGML_CPU_KLEIDIAI=ON -DLLAMA_CURL=OFF
cmake --build build --config Release

Relevant log output

[52/226] Linking CXX shared library bin\ggml-cpu.dll
FAILED: bin/ggml-cpu.dll ggml/src/ggml-cpu.lib
C:\Windows\system32\cmd.exe /C "cd . && C:\PROGRA~1\MICROS~4\2022\COMMUN~1\VC\Tools\Llvm\ARM64\bin\CLANG_~1.EXE --target=arm64-pc-windows-msvc -nostartfiles -nostdlib -march=armv8.7-a -fvectorize -ffp-model=fast -fno-finite-math-only -Wno-format -Wno-unused-variable -Wno-unused-function -Wno-gnu-zero-variadic-macro-arguments -O2 -DNDEBUG -g -Xclang -gcodeview -D_DLL -D_MT -Xclang --dependent-lib=msvcrt  -fuse-ld=lld-link -shared -o bin\ggml-cpu.dll  -Xlinker /MANIFEST:EMBED -Xlinker /implib:ggml\src\ggml-cpu.lib -Xlinker /pdb:bin\ggml-cpu.pdb -Xlinker /version:0.0 ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ggml-cpu.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ggml-cpu.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/repack.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/hbm.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/quants.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/traits.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/amx/amx.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/amx/mmq.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/binary-ops.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/unary-ops.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/vec.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/ops.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/llamafile/sgemm.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/arch/arm/quants.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/arch/arm/repack.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kleidiai.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj ggml/src/CMakeFiles/ggml-cpu.dir/__/__/_deps/kleidiai_download-src/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32p_f32.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/__/__/_deps/kleidiai_download-src/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4c32ps1s0scalef16_qsu4c32s16s0_neon.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/__/__/_deps/kleidiai_download-src/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32p_f32_neon.c.obj ggml/src/CMakeFiles/ggml-cpu.dir/__/__/_deps/kleidiai_download-src/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4c32pscalef16_qsu4c32s16s0.c.obj  ggml/src/ggml-base.lib  -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -loldnames  && cd ."
lld-link: error: undefined symbol: kai_get_m_step_matmul_clamp_f32_qsi8d32p4x8_qsi4c32p4x8_16x4_neon_i8mm
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)

lld-link: error: undefined symbol: kai_get_n_step_matmul_clamp_f32_qsi8d32p4x8_qsi4c32p4x8_16x4_neon_i8mm
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)

lld-link: error: undefined symbol: kai_get_mr_matmul_clamp_f32_qsi8d32p4x8_qsi4c32p4x8_16x4_neon_i8mm
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)
>>> referenced by C:\Source\Projects\llama.cpp\ggml\src\ggml-cpu\kleidiai\kernels.cpp:0
>>>               ggml/src/CMakeFiles/ggml-cpu.dir/ggml-cpu/kleidiai/kernels.cpp.obj:(_GLOBAL__sub_I_kernels.cpp)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions