Skip to content

Commit e834c15

Browse files
author
zhouwg
committed
ggml-qnn: Windows port -- step5
1 parent 7bd60ed commit e834c15

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

cmake/aarch64-w64-mingw32.cmake

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#TODO
2+
#not work on Linux
3+
set( CMAKE_SYSTEM_NAME mingw )
4+
set( CMAKE_SYSTEM_PROCESSOR arm64 )
5+
6+
set( target aarch64-w64-mingw32 )
7+
8+
set( CMAKE_C_COMPILER aarch64-w64-mingw32-gcc )
9+
set( CMAKE_CXX_COMPILER aarch64-w64-mingw32-g++ )
10+
11+
set( CMAKE_C_COMPILER_TARGET ${target} )
12+
set( CMAKE_CXX_COMPILER_TARGET ${target} )
13+
14+
#set( arch_c_flags "-march=armv8.7-a -fvectorize -ffp-model=fast -fno-finite-math-only" )
15+
#set( warn_c_flags "-Wno-format -Wno-unused-variable -Wno-unused-function -Wno-gnu-zero-variadic-macro-arguments" )
16+
17+
set( CMAKE_C_FLAGS_INIT "${arch_c_flags} ${warn_c_flags}" )
18+
set( CMAKE_CXX_FLAGS_INIT "${arch_c_flags} ${warn_c_flags}" )

ggml/src/ggml-qnn/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ endif()
2323

2424
message("QNN_SDK_PATH: ${GGML_QNN_SDK_PATH}")
2525

26+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGGML_USE_QNN")
2627
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
2728

2829
file(GLOB QNN_SOURCES "${CMAKE_CURRENT_LIST_DIR}/*.cpp")

scripts/build-run-android.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/bin/bash
2+
# build llama.cpp + ggml-qnn for Snapdragon mobile SoC equipped Android phone on Linux
23

34
set -e
45

scripts/build-run-windows.sh

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
#!/bin/bash
2+
# build llama.cpp or llama.cpp + ggml-qnn for Windows with cygwin on Windows
3+
# build llama.cpp + ggml-qnn for Snapdragon desktop SoC equipped WoA(Windows on ARM) with cygwin on Windows
4+
5+
# items marked TODO has not verified yet
26

37
set -e
48

9+
510
PWD=`pwd`
611
PREFIX_PATH=/cygdrive/c
712
GGUF_MODEL_NAME=${PREFIX_PATH}/qwen1_5-1_8b-chat-q4_0.gguf
13+
PROJECT_HOME_PATH=`pwd`
814

915
#QNN SDK could be found at:
1016
#https://www.qualcomm.com/developer/software/qualcomm-ai-engine-direct-sdk
@@ -38,7 +44,7 @@ function check_qnn_sdk()
3844
function build_windows_x86
3945
{
4046
echo "build_windows_x86-without-qnn"
41-
cmake -H. -B./out/windows_x86 -DCMAKE_BUILD_TYPE=Release
47+
cmake -H. -B./out/windows_x86 -DCMAKE_BUILD_TYPE=Release -DGGML_OPENMP=OFF
4248
cd out/windows_x86
4349
make -j16
4450
show_pwd
@@ -49,18 +55,26 @@ function build_windows_x86
4955
function build_windows_x86_qnn
5056
{
5157
echo "build_windows_x86-with-qnn"
52-
cmake -H. -B./out/windows_x86_qnn -DCMAKE_BUILD_TYPE=Release -DGGML_USE_QNN=ON -DGGML_QNN=ON -DGGML_QNN_SDK_PATH=${QNN_SDK_PATH}
58+
cmake -H. -B./out/windows_x86_qnn -DCMAKE_BUILD_TYPE=Release -DGGML_OPENMP=OFF -DGGML_QNN=ON -DGGML_QNN_SDK_PATH=${QNN_SDK_PATH}
5359
cd out/windows_x86_qnn
5460
make -j16
5561
show_pwd
5662

5763
cd -
5864
}
5965

66+
#TODO
6067
function build_windows_arm64_qnn
6168
{
6269
echo "build_windows_arm64 not supported now"
63-
#cmake -H. -B./out/windows_arm64_qnn -DCMAKE_BUILD_TYPE=Release -DGGML_USE_QNN=ON -DCMAKE_TOOLCHAIN_FILE=${MSSDK}/cmake/arm64-windows-llvm.cmake -DCMAKE_C_FLAGS=-march=armv8.7-a -DGGML_QNN=ON -DGGML_QNN_SDK_PATH=${QNN_SDK_PATH}
70+
return 0
71+
echo "cmake source dir:${PROJECT_HOME_PATH}"
72+
cmake -H. -B./out/windows_arm64_qnn -DCMAKE_BUILD_TYPE=Release -DGGML_OPENMP=OFF -DGGML_QNN=ON -DCMAKE_TOOLCHAIN_FILE=${PROJECT_HOME_PATH}/cmake/arm64-windows-llvm.cmake -DCMAKE_C_FLAGS=-march=armv8.7-a -DGGML_QNN_SDK_PATH=${QNN_SDK_PATH}
73+
cd out/windows_arm64_qnn
74+
make -j16
75+
show_pwd
76+
77+
cd -
6478
}
6579

6680

0 commit comments

Comments
 (0)