Skip to content

Commit 88acf6d

Browse files
author
zhouwg
committed
ggml-hexagon: refine build system in ggml-hexagon
1 parent cb0dfd7 commit 88acf6d

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

CMakeLists.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ set(CMAKE_WARN_UNUSED_CLI YES)
77

88
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
99

10-
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
11-
set(TARGET_SNAPDRAGON8GEN3 ON)
12-
if(TARGET_SNAPDRAGON8GEN3)
13-
#works fine on Snapdragon 8Gen3 with 1.5x(45+ tokens/second)-3x(70+ tokens/second) performance gain through the default ggml backend
14-
add_definitions(-march=armv8.7-a)
15-
add_definitions(-mcpu=cortex-x1)
16-
add_definitions(-mtune=cortex-x1)
17-
endif()
10+
if (${HTP_ARCH_VERSION} STREQUAL "v75" OR ${HTP_ARCH_VERSION} STREQUAL "v79")
11+
#works fine on Snapdragon 8Gen3&8Elite with 1.5x - 3x performance gains with the default ggml backend
12+
set(OPT_FLAG " -O3 -march=armv8.7-a -mcpu=cortex-x1 -mtune=cortex-x1 -fvectorize -ffp-model=fast -fno-finite-math-only")
13+
message("OPT_FLAG:${OPT_FLAG}")
14+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
15+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
16+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
17+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
1818
endif()
1919

2020
if (NOT XCODE AND NOT MSVC AND NOT CMAKE_BUILD_TYPE)

ggml/src/ggml-hexagon/CMakeLists.txt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ else()
2525
message("Release mode:${DEBUG_FLAG}")
2626
endif()
2727

28-
2928
#v68 --- Snapdragon 888
3029
#v69 --- Snapdragon 8 Gen1
3130
#v73 --- Snapdragon 8 Gen2
@@ -46,6 +45,14 @@ if (${CHECK_HTP_ARCH} STREQUAL "WRONG")
4645
message(FATAL_ERROR "ggml-hexagon backend only support htp arch v68,v69,v73,v75,v79")
4746
endif()
4847

48+
#check optimization flags
49+
set(OPT_FLAG " ")
50+
if (${HTP_ARCH_VERSION} STREQUAL "v75" OR ${HTP_ARCH_VERSION} STREQUAL "v79")
51+
#works fine on Snapdragon 8Gen3&8Elite with 1.5x - 3x performance gains with the default ggml backend
52+
set(OPT_FLAG " -O3 -march=armv8.7-a -mcpu=cortex-x1 -mtune=cortex-x1 -fvectorize -fno-finite-math-only -ffp-model=fast ")
53+
endif()
54+
message("OPT_FLAG:${OPT_FLAG}")
55+
4956
#cross compiling for hexagon kernels on cDSP side
5057
set(HEXAGON_CC "${HEXAGON_SDK_PATH}/tools/HEXAGON_Tools/8.8.06/Tools/bin/hexagon-clang")
5158
set(HEXAGON_CXX "${HEXAGON_SDK_PATH}/tools/HEXAGON_Tools/8.8.06/Tools/bin/hexagon-clang")
@@ -84,8 +91,11 @@ else()
8491
message(FATAL_ERROR "ggml-hexagon now only available on Android and Windows(Windows on ARM)")
8592
endif()
8693

87-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGGML_USE_HEXAGON ${DEBUG_FLAG}")
88-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
94+
95+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
96+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
97+
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
98+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DGGML_USE_HEXAGON ${DEBUG_FLAG} ${OPT_FLAG}")
8999

90100
file(GLOB HEXAGON_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.cpp" "${CMAKE_CURRENT_LIST_DIR}/kernels/ggmlop_ap_skel.c")
91101
ggml_add_backend_library(ggml-hexagon ${HEXAGON_SOURCES})

0 commit comments

Comments
 (0)