From b333b06772c89d96aacb5490d6a219fba7c09cc6 Mon Sep 17 00:00:00 2001 From: Mitja Felicijan Date: Thu, 12 Feb 2026 20:57:17 +0100 Subject: Engage! --- llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt (limited to 'llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt') diff --git a/llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt b/llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt new file mode 100644 index 0000000..f5cf6ee --- /dev/null +++ b/llama.cpp/ggml/src/ggml-zendnn/CMakeLists.txt @@ -0,0 +1,92 @@ +ggml_add_backend_library(ggml-zendnn + ggml-zendnn.cpp) + +# Get ZenDNN path +if (NOT DEFINED ZENDNN_ROOT OR ZENDNN_ROOT STREQUAL "") + set(ZENDNN_ROOT "$ENV{ZENDNN_ROOT}") +endif() + +# Check if path is still empty or OFF +if (NOT ZENDNN_ROOT OR ZENDNN_ROOT STREQUAL "" OR ZENDNN_ROOT STREQUAL "OFF") + message(STATUS "ZENDNN_ROOT not set. Automatically downloading and building ZenDNN...") + message(STATUS "This will take several minutes on first build...") + + include(ExternalProject) + + set(ZENDNN_PREFIX ${CMAKE_BINARY_DIR}/_deps/zendnn-prefix) + set(ZENDNN_SOURCE_DIR ${ZENDNN_PREFIX}/src/zendnn) + set(ZENDNN_BUILD_DIR ${ZENDNN_PREFIX}/build) + set(ZENDNN_INSTALL_DIR ${ZENDNN_BUILD_DIR}/install) + + ExternalProject_Add( + zendnn + GIT_REPOSITORY https://github.com/amd/ZenDNN.git + GIT_TAG 21ce8f7879c86bf3637f707fae6f29e0951db5fe + PREFIX ${ZENDNN_PREFIX} + SOURCE_DIR ${ZENDNN_SOURCE_DIR} + BINARY_DIR ${ZENDNN_BUILD_DIR} + CMAKE_ARGS + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=${ZENDNN_INSTALL_DIR} + -DZENDNNL_BUILD_EXAMPLES=OFF + -DZENDNNL_BUILD_DOXYGEN=OFF + -DZENDNNL_BUILD_GTEST=OFF + -DZENDNNL_BUILD_BENCHDNN=OFF + # Enable ALL matmul algorithm backends + -DZENDNNL_DEPENDS_AOCLDLP=ON + -DZENDNNL_DEPENDS_ONEDNN=ON + -DZENDNNL_DEPENDS_LIBXSMM=ON + BUILD_COMMAND ${CMAKE_COMMAND} --build ${ZENDNN_BUILD_DIR} --target zendnnl + INSTALL_COMMAND ${CMAKE_COMMAND} --build ${ZENDNN_BUILD_DIR} --target install + BUILD_ALWAYS OFF + LOG_DOWNLOAD ON + LOG_CONFIGURE ON + LOG_BUILD ON + LOG_INSTALL ON + ) + + # Add dependency so ZenDNN builds before our library + add_dependencies(ggml-zendnn zendnn) + + # Set ZENDNN_ROOT to the installation directory + set(ZENDNN_ROOT ${ZENDNN_INSTALL_DIR}) + + message(STATUS "ZenDNN will be built to: ${ZENDNN_ROOT}") +else() + message(STATUS "Using custom ZenDNN installation at: ${ZENDNN_ROOT}") +endif() + +# ZenDNN headers + libs +target_include_directories(ggml-zendnn PRIVATE + ${ZENDNN_ROOT}/zendnnl/include + ${ZENDNN_ROOT}/deps/aocldlp/include + ${ZENDNN_ROOT}/deps/aoclutils/include + ${ZENDNN_ROOT}/deps/json/include + ${ZENDNN_ROOT}/deps/libxsmm/include + ${ZENDNN_ROOT}/deps/onednn/include +) + +target_link_directories(ggml-zendnn PRIVATE + ${ZENDNN_ROOT}/zendnnl/lib + ${ZENDNN_ROOT}/deps/aocldlp/lib + ${ZENDNN_ROOT}/deps/aoclutils/lib + ${ZENDNN_ROOT}/deps/libxsmm/lib + ${ZENDNN_ROOT}/deps/onednn/lib +) + +target_link_libraries(ggml-zendnn PRIVATE + zendnnl_archive # ZenDNN main + aocl-dlp # AOCL libraries + aoclutils + au_cpuid + dnnl # OneDNN + xsmm # libxsmm small matrix math + xsmmext + xsmmnoblas + m + pthread +) + +if (GGML_OPENMP) + target_link_libraries(ggml-zendnn PRIVATE OpenMP::OpenMP_CXX) +endif() -- cgit v1.2.3