File tree Expand file tree Collapse file tree 4 files changed +17
-7
lines changed Expand file tree Collapse file tree 4 files changed +17
-7
lines changed Original file line number Diff line number Diff line change @@ -15402,8 +15402,10 @@ struct llama_context * llama_new_context_with_model(
15402
15402
}
15403
15403
#elif defined(GGML_USE_QNN)
15404
15404
if (model->n_gpu_layers > 0) {
15405
- //the second param is package name of Andorid app, can be got by JNI from Java layer
15406
- ggml_backend_t backend = ggml_backend_qnn_init(model->main_gpu, "/data/data/com.ggml.llamacpp/");
15405
+ //the second param is data path of prebuit QNN libs provided by Qualcomm
15406
+ //in Andorid APP mode, can be obtained through JNI from Java layer
15407
+ //in Andorid terminal mode, can be hardcoded to "/data/local/tmp"
15408
+ ggml_backend_t backend = ggml_backend_qnn_init(model->main_gpu, "/data/local/tmp/");
15407
15409
if (nullptr == backend) {
15408
15410
LLAMA_LOG_ERROR("%s: failed to initialize QNN backend\n", __func__);
15409
15411
llama_free(ctx);
Original file line number Diff line number Diff line change 1
1
cmake_minimum_required (VERSION 3.22.1 )
2
- project (ggml-qnn )
2
+ project (ggml-qnn-test )
3
3
4
4
set (CMAKE_VERBOSE_MAKEFILE on )
5
5
set (CMAKE_CXX_STANDARD 17 )
6
6
set (CMAKE_CXX_STANDARD_REQUIRED ON )
7
7
set (CMAKE_POSITION_INDEPENDENT_CODE ON )
8
8
9
+ #set to ON if target Android phone is based on Qualcomm Snapdragon 8 Gen 3
9
10
set (TARGET_SNAPDRAGON_8_GEN3 OFF )
10
11
11
12
set (LLAMACPP_SRC_PATH ${PROJECT_ROOT_PATH} )
@@ -37,8 +38,10 @@ message("target name : ${TARGET_NAME}")
37
38
add_definitions (-D__ARM_NEON )
38
39
add_definitions (-DGGML_USE_QNN )
39
40
41
+ if (CMAKE_BUILD_TYPE STREQUAL "release" )
40
42
add_definitions (-DNDEBUG )
41
43
add_definitions (-O3 )
44
+ endif ()
42
45
43
46
if (TARGET_SNAPDRAGON_8_GEN3 )
44
47
# the below build optimization only works well on Qualcomm SM8650-AB Snapdragon 8 Gen 3
Original file line number Diff line number Diff line change @@ -10,12 +10,15 @@ QNN_SDK_PATH=/opt/qcom/aistack/qnn/2.20.0.240223/
10
10
11
11
12
12
ANDROID_NDK=` pwd` /android-ndk-r26c
13
+ ANDROID_PLATFORM=android-34
14
+ # BUILD_TYPE=release
15
+ BUILD_TYPE=debug
13
16
TARGET=ggml-qnn-test
14
17
15
18
16
19
function dump_vars()
17
20
{
18
- echo -e " PROJECT_ROOT_PATH : ${PROJECT_ROOT_PATH }"
21
+ echo -e " LLAMACPP_ROOT_PATH : ${LLAMACPP_ROOT_PATH }"
19
22
echo -e " ANDROID_NDK: ${ANDROID_NDK} "
20
23
echo -e " QNN_SDK_PATH: ${QNN_SDK_PATH} "
21
24
}
@@ -61,7 +64,7 @@ function check_and_download_ndk()
61
64
62
65
function build_arm64
63
66
{
64
- cmake -H. -B./out/arm64-v8a -DPROJECT_ROOT_PATH=${LLAMACPP_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${PROJECT_BUILD_TYPE } -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK} /build/cmake/android.toolchain.cmake -DQNN_SDK_PATH=${QNN_SDK_PATH}
67
+ cmake -H. -B./out/arm64-v8a -DPROJECT_ROOT_PATH=${LLAMACPP_ROOT_PATH} -DTARGET_NAME=${TARGET} -DCMAKE_BUILD_TYPE=${BUILD_TYPE } -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=${ANDROID_PLATFORM} -DANDROID_NDK=${ANDROID_NDK} -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK} /build/cmake/android.toolchain.cmake -DQNN_SDK_PATH=${QNN_SDK_PATH}
65
68
66
69
cd ./out/arm64-v8a
67
70
make
Original file line number Diff line number Diff line change 1
1
#! /bin/bash
2
2
3
- # modify following lines to adapt to local dev envs
3
+ # modify following line to adapt to local dev envs
4
+ # https://qpm.qualcomm.com/#/main/tools/details/qualcomm_ai_engine_direct
5
+ # https://developer.qualcomm.com/software/hexagon-dsp-sdk/tools
4
6
QNN_SDK_PATH=/opt/qcom/aistack/qnn/2.20.0.240223/
5
7
6
8
GGML_QNN_TEST=ggml-qnn-test
@@ -10,7 +12,7 @@ adb push ${GGML_QNN_TEST} ${REMOTE_PATH}
10
12
11
13
adb shell ls ${REMOTE_PATH} /libQnnCpu.so
12
14
if [ $? -eq 0 ]; then
13
- printf " QNN libs already exist\n"
15
+ printf " QNN libs already exist on Android phone \n"
14
16
else
15
17
adb push ${QNN_SDK_PATH} /lib/aarch64-android/libQnnSystem.so ${REMOTE_PATH} /
16
18
adb push ${QNN_SDK_PATH} /lib/aarch64-android/libQnnCpu.so ${REMOTE_PATH} /
You can’t perform that action at this time.
0 commit comments