char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Oliver SimonsCI: Use LLVM's OpenMP over MSVC_DEBUG_non_redist on Windows (#26678)bf0040e15

char/aliceai-t5-moe
3.4 KiB91 linesraw
1ggml_add_backend_library(ggml-zendnn
2                         ggml-zendnn.cpp)
3
4if (NOT DEFINED ZENDNN_ROOT OR ZENDNN_ROOT STREQUAL "")
5    set(ZENDNN_ROOT "$ENV{ZENDNN_ROOT}")
6endif()
7
8if (BUILD_SHARED_LIBS)
9    set(ZENDNN_SHARED_LIB ON)
10    set(ZENDNN_ARCHIVE_LIB OFF)
11else()
12    set(ZENDNN_SHARED_LIB OFF)
13    set(ZENDNN_ARCHIVE_LIB ON)
14endif()
15
16# Download and build ZenDNN if not provided
17if (NOT ZENDNN_ROOT OR ZENDNN_ROOT STREQUAL "" OR ZENDNN_ROOT STREQUAL "OFF")
18    message(STATUS "ZENDNN_ROOT not set. Automatically downloading and building ZenDNN...")
19    message(STATUS "This will take several minutes on first build...")
20
21    include(ExternalProject)
22
23    set(ZENDNN_PREFIX      ${CMAKE_BINARY_DIR}/_deps/zendnn-prefix)
24    set(ZENDNN_SOURCE_DIR  ${ZENDNN_PREFIX}/src/zendnn)
25    set(ZENDNN_BUILD_DIR   ${ZENDNN_PREFIX}/build)
26    set(ZENDNN_INSTALL_DIR ${ZENDNN_BUILD_DIR}/install)
27
28    ExternalProject_Add(
29        zendnn
30        GIT_REPOSITORY https://github.com/amd/ZenDNN.git
31        GIT_TAG 1f399a75cc0993778374a51bea49b64a57879595    # ZenDNN-2026-WW28
32        PREFIX      ${ZENDNN_PREFIX}
33        SOURCE_DIR  ${ZENDNN_SOURCE_DIR}
34        BINARY_DIR  ${ZENDNN_BUILD_DIR}
35        CMAKE_ARGS
36            -DCMAKE_BUILD_TYPE=Release
37            -DCMAKE_INSTALL_PREFIX=${ZENDNN_INSTALL_DIR}
38            -DZENDNNL_BUILD_EXAMPLES=OFF
39            -DZENDNNL_BUILD_DOXYGEN=OFF
40            -DZENDNNL_BUILD_GTEST=OFF
41            -DZENDNNL_BUILD_BENCHDNN=OFF
42            -DZENDNNL_DEPENDS_FBGEMM=OFF
43            -DZENDNNL_LIB_BUILD_ARCHIVE=${ZENDNN_ARCHIVE_LIB}
44            -DZENDNNL_LIB_BUILD_SHARED=${ZENDNN_SHARED_LIB}
45            -DZENDNNL_DEPENDS_AOCLDLP=ON
46            -DZENDNNL_DEPENDS_ONEDNN=ON
47            -DZENDNNL_DEPENDS_LIBXSMM=ON
48        BUILD_COMMAND   ${CMAKE_COMMAND} --build ${ZENDNN_BUILD_DIR} --target zendnnl
49        INSTALL_COMMAND ${CMAKE_COMMAND} --build ${ZENDNN_BUILD_DIR} --target install
50        BUILD_ALWAYS OFF
51        LOG_DOWNLOAD ON
52        LOG_CONFIGURE ON
53        LOG_BUILD ON
54        LOG_INSTALL ON
55    )
56
57    add_dependencies(ggml-zendnn zendnn)
58    set(ZENDNN_ROOT ${ZENDNN_INSTALL_DIR})
59    message(STATUS "ZenDNN will be built to: ${ZENDNN_ROOT}")
60else()
61    message(STATUS "Using custom ZenDNN installation at: ${ZENDNN_ROOT}")
62endif()
63
64target_include_directories(ggml-zendnn PRIVATE
65    ${ZENDNN_ROOT}/zendnnl/include
66    ${ZENDNN_ROOT}/deps/json/include
67    ${ZENDNN_ROOT}/deps/aoclutils/include
68    ${ZENDNN_ROOT}/deps/aocldlp/include
69    ${ZENDNN_ROOT}/deps/onednn/include
70    ${ZENDNN_ROOT}/deps/libxsmm/include)
71
72if (ZENDNN_SHARED_LIB)
73    target_link_directories(ggml-zendnn PRIVATE ${ZENDNN_ROOT}/zendnnl/lib)
74    target_link_libraries(ggml-zendnn PRIVATE zendnnl)
75elseif (ZENDNN_ARCHIVE_LIB)
76    target_link_libraries(ggml-zendnn PRIVATE
77        ${ZENDNN_ROOT}/zendnnl/lib/libzendnnl_archive.a
78        ${ZENDNN_ROOT}/deps/aoclutils/${CMAKE_INSTALL_LIBDIR}/libaoclutils.a
79        ${ZENDNN_ROOT}/deps/aoclutils/${CMAKE_INSTALL_LIBDIR}/libau_cpuid.a
80        ${ZENDNN_ROOT}/deps/aocldlp/lib/libaocl-dlp.a
81        ${ZENDNN_ROOT}/deps/onednn/${CMAKE_INSTALL_LIBDIR}/libdnnl.a
82        ${ZENDNN_ROOT}/deps/libxsmm/lib/libxsmm.a
83        ${ZENDNN_ROOT}/deps/libxsmm/lib/libxsmmext.a
84        ${ZENDNN_ROOT}/deps/libxsmm/lib/libxsmmnoblas.a)
85endif()
86
87target_link_libraries(ggml-zendnn PRIVATE m pthread)
88
89if (GGML_OPENMP_ENABLED)
90    target_link_libraries(ggml-zendnn PRIVATE ${GGML_OPENMP_TARGET_CXX})
91endif()