char-fork/llama.cpp

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

Max Krasnyanskyhexagon: MUL_MAT and MUL_MAT_ID rework : 32x32 tiled weight repack, kernel-params, cached graphs (#24954)8be759e6f

char/aliceai-t5-moe
5.4 KiB155 linesraw
1if (HEXAGON_TOOLCHAIN_INCLUDED)
2  return()
3endif()
4set(HEXAGON_TOOLCHAIN_INCLUDED true)
5
6# Cross Compiling for Hexagon
7set(HEXAGON TRUE)
8set(CMAKE_SYSTEM_NAME QURT)
9set(CMAKE_SYSTEM_PROCESSOR Hexagon)
10set(CMAKE_SYSTEM_VERSION "1") #${HEXAGON_PLATFORM_LEVEL})
11set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
12set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
13set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
14set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
15set(CUSTOM_RUNELF_PATH "")
16
17if (NOT HEXAGON_SDK_ROOT)
18    set(HEXAGON_SDK_ROOT $ENV{HEXAGON_SDK_ROOT})
19endif()
20
21if (NOT HEXAGON_TOOLS_ROOT)
22    if (DEFINED ENV{HEXAGON_TOOLS_ROOT})
23        set(HEXAGON_TOOLS_ROOT $ENV{HEXAGON_TOOLS_ROOT})
24    endif()
25    if(NOT HEXAGON_TOOLS_ROOT)
26        set(HEXAGON_TOOLS_ROOT $ENV{DEFAULT_HEXAGON_TOOLS_ROOT})
27    endif()
28endif()
29
30file(TO_CMAKE_PATH "${HEXAGON_TOOLS_ROOT}" HEXAGON_TOOLS_ROOT)
31file(TO_CMAKE_PATH "${HEXAGON_SDK_ROOT}"   HEXAGON_SDK_ROOT)
32
33if(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
34    set(HEXAGON_TOOLCHAIN_SUFFIX .exe)
35endif()
36message(DEBUG "CMAKE_HOST_SYSTEM_NAME:${CMAKE_HOST_SYSTEM_NAME}")
37
38include(${HEXAGON_SDK_ROOT}/build/cmake/hexagon_arch.cmake)
39
40set(HEXAGON_TOOLCHAIN ${HEXAGON_TOOLS_ROOT})
41set(HEXAGON_LIB_DIR "${HEXAGON_TOOLCHAIN}/Tools/target/hexagon/lib")
42set(HEXAGON_ISS_DIR ${HEXAGON_TOOLCHAIN}/Tools/lib/iss)
43
44set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
45    HEXAGON_SDK_ROOT
46    HEXAGON_TOOLS_ROOT
47)
48
49# QURT Related includes and linker flags
50set(V_ARCH ${HEXAGON_ARCH})
51set(_QURT_INSTALL_DIR "${HEXAGON_SDK_ROOT}/rtos/qurt/ADSP${V_ARCH}MP${V_ARCH_EXTN}")
52set(_QURT_INSTALL_DIR "${HEXAGON_SDK_ROOT}/rtos/qurt/compute${V_ARCH}${V_ARCH_EXTN}")
53
54if (${TREE} MATCHES PAKMAN)
55    set(_QURT_INSTALL_DIR "${QURT_IMAGE_DIR}/compute${V_ARCH}${V_ARCH_EXTN}")
56endif()
57message(DEBUG "_QURT_INSTALL_DIR:${_QURT_INSTALL_DIR}")
58set(RTOS_DIR ${_QURT_INSTALL_DIR})
59set(QCC_DIR "${HEXAGON_QCC_DIR}/${V_ARCH}/G0")
60set(TARGET_DIR "${HEXAGON_LIB_DIR}/${V_ARCH}/G0")
61
62include_directories(
63    ${_QURT_INSTALL_DIR}/include
64    ${_QURT_INSTALL_DIR}/include/qurt
65    ${_QURT_INSTALL_DIR}/include/posix
66    )
67
68set(QURT_START_LINK_LIBS)
69set(QURT_START_LINK_LIBS
70    "${TARGET_DIR}/init.o"
71    "${RTOS_DIR}/lib/crt1.o"
72    "${RTOS_DIR}/lib/debugmon.o"
73    "${RTOS_DIR}/lib/libqurt.a"
74    "${TARGET_DIR}/libc.a"
75    "${TARGET_DIR}/libqcc.a"
76    "${TARGET_DIR}/libhexagon.a"
77    "${RTOS_DIR}/lib/libqurtcfs.a"
78    "${RTOS_DIR}/lib/libtimer_island.a"
79    "${RTOS_DIR}/lib/libtimer_main.a"
80    "${RTOS_DIR}/lib/libposix.a"
81    )
82STRING(REPLACE ";" " " QURT_START_LINK_LIBS "${QURT_START_LINK_LIBS}")
83
84set(QURT_END_LINK_LIBS ${TARGET_DIR}/fini.o)
85
86# Non QURT related includes and linker flags
87
88set(TARGET_DIR_NOOS "${HEXAGON_TOOLCHAIN}/Tools/target/hexagon/lib/${HEXAGON_ARCH}")
89
90if (NOT NO_WRAP_MEM_API)
91    set(WRAP_MALLOC   -Wl,--wrap=malloc)
92    set(WRAP_CALLOC   -Wl,--wrap=calloc)
93    set(WRAP_FREE     -Wl,--wrap=free)
94    set(WRAP_REALLOC  -Wl,--wrap=realloc)
95    set(WRAP_MEMALIGN -Wl,--wrap=memalign)
96endif()
97
98set(ARCH_FLAGS "-mcpu=${V_ARCH} -m${V_ARCH} -mhvx=${V_ARCH} -mhmx")
99
100set(PIC_SHARED_LD_FLAGS
101    ${ARCH_FLAGS}
102    -G0
103    -fpic
104    -Wl,-Bsymbolic
105    -Wl,-L${TARGET_DIR_NOOS}/G0/pic
106    -Wl,-L${HEXAGON_TOOLCHAIN}/Tools/target/hexagon/lib/
107    -Wl,--no-threads ${WRAP_MALLOC} ${WRAP_CALLOC} ${WRAP_FREE} ${WRAP_REALLOC} ${WRAP_MEMALIGN}
108    -shared
109    "-o <TARGET> <SONAME_FLAG><TARGET_SONAME>"
110    "<LINK_FLAGS>"
111    -Wl,--start-group
112    "<OBJECTS>"
113    "<LINK_LIBRARIES>"
114    -Wl,--end-group
115    -lc
116    )
117STRING(REPLACE ";" " " PIC_SHARED_LD_FLAGS "${PIC_SHARED_LD_FLAGS}")
118
119set(HEXAGON_PIC_SHARED_LINK_OPTIONS "${PIC_SHARED_LD_FLAGS}")
120
121# System include paths
122include_directories(SYSTEM ${HEXAGON_SDK_ROOT}/incs)
123include_directories(SYSTEM ${HEXAGON_SDK_ROOT}/incs/stddef)
124include_directories(SYSTEM ${HEXAGON_SDK_ROOT}/ipc/fastrpc/incs)
125
126# LLVM toolchain setup
127# Compiler paths, options and architecture
128set(CMAKE_C_COMPILER ${HEXAGON_TOOLCHAIN}/Tools/bin/hexagon-clang${HEXAGON_TOOLCHAIN_SUFFIX})
129set(CMAKE_CXX_COMPILER ${HEXAGON_TOOLCHAIN}/Tools/bin/hexagon-clang++${HEXAGON_TOOLCHAIN_SUFFIX})
130set(CMAKE_AR ${HEXAGON_TOOLCHAIN}/Tools/bin/hexagon-ar${HEXAGON_TOOLCHAIN_SUFFIX})
131set(CMAKE_ASM_COMPILER ${HEXAGON_TOOLCHAIN}/Tools/bin/hexagon-clang++${HEXAGON_TOOLCHAIN_SUFFIX})
132set(HEXAGON_LINKER ${CMAKE_C_COMPILER})
133set(CMAKE_PREFIX_PATH ${HEXAGON_TOOLCHAIN}/Tools/target/hexagon)
134
135set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG   "-Wl,-soname,")
136set(CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,")
137
138# Compiler Options
139set(COMMON_FLAGS "${ARCH_FLAGS} -fvectorize -flto -Wall -Werror -fno-zero-initialized-in-bss -G0 -fdata-sections -fpic ${XQF_ARGS}")
140
141set(CMAKE_CXX_FLAGS_DEBUG          "${COMMON_FLAGS} -O0 -D_DEBUG -g")
142set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${COMMON_FLAGS} -O2 -g")
143set(CMAKE_CXX_FLAGS_RELEASE        "${COMMON_FLAGS} -O2")
144
145set(CMAKE_C_FLAGS_DEBUG            "${COMMON_FLAGS} -O0 -D_DEBUG -g")
146set(CMAKE_C_FLAGS_RELWITHDEBINFO   "${COMMON_FLAGS} -O2 -g")
147set(CMAKE_C_FLAGS_RELEASE          "${COMMON_FLAGS} -O2")
148
149set(CMAKE_ASM_FLAGS_DEBUG          "${COMMON_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
150set(CMAKE_ASM_FLAGS_RELEASE        "${COMMON_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
151set(CMAKE_ASM_FLAGS_RELWITHDEBINFO "${COMMON_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" )
152
153#Linker Options
154set(CMAKE_C_CREATE_SHARED_LIBRARY   "${HEXAGON_LINKER} ${HEXAGON_PIC_SHARED_LINK_OPTIONS}")
155set(CMAKE_CXX_CREATE_SHARED_LIBRARY "${HEXAGON_LINKER} ${HEXAGON_PIC_SHARED_LINK_OPTIONS}")