2525 message ("Release mode:${DEBUG_FLAG} " )
2626endif ()
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" )
4746endif ()
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
5057set (HEXAGON_CC "${HEXAGON_SDK_PATH} /tools/HEXAGON_Tools/8.8.06/Tools/bin/hexagon-clang" )
5158set (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)" )
8592endif ()
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
90100file (GLOB HEXAGON_SOURCES "${CMAKE_CURRENT_LIST_DIR} /*.cpp" "${CMAKE_CURRENT_LIST_DIR} /kernels/ggmlop_ap_skel.c" )
91101ggml_add_backend_library(ggml-hexagon ${HEXAGON_SOURCES} )
0 commit comments