Skip to content

Commit 10fd07d

Browse files
committed
ggml-qnn: update script according to ggml-org#12155
1 parent a645a7d commit 10fd07d

File tree

2 files changed

+229
-13
lines changed

2 files changed

+229
-13
lines changed

ggml/src/ggml-qnn/ggml-qnn-ops.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,14 +65,12 @@ static inline bool ggmlqnn_is_valid_params(ggml_backend_qnn_context * ctx, const
6565
*/
6666
void ggml_qnn_general_node(ggml_backend_qnn_context * ctx, ggml_tensor * op) {
6767
Qnn_ErrorHandle_t error = QNN_SUCCESS;
68-
enum ggml_status result = GGML_STATUS_SUCCESS;
6968
bool graph_initialized = false;
7069
qnn_instance * instance = nullptr;
7170
Qnn_GraphHandle_t graph_handle = nullptr;
7271
Qnn_Tensor_t * p_tensor0 = nullptr;
7372
Qnn_Tensor_t * p_tensor1 = nullptr;
7473
Qnn_Tensor_t * p_tensor2 = nullptr;
75-
Qnn_Param_t qnn_params[] = {};
7674
const ggml_tensor * src0 = op->src[0];
7775
const ggml_tensor * src1 = op->src[1];
7876
ggml_tensor * dst = op;
@@ -170,7 +168,7 @@ void ggml_qnn_general_node(ggml_backend_qnn_context * ctx, ggml_tensor * op) {
170168
QNN_OP_PACKAGE_NAME_QTI_AISW,
171169
qnn_op_name,
172170
0,
173-
qnn_params,
171+
nullptr,
174172
2,
175173
tensor_inputs,
176174
1,

scripts/build-run-android.sh

Lines changed: 228 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ function run_llamabench()
168168
}
169169

170170

171-
function run_test-backend-ops()
171+
function run_test-ops()
172172
{
173173
prepare_run_on_phone test-backend-ops
174174

@@ -178,6 +178,38 @@ function run_test-backend-ops()
178178

179179
}
180180

181+
function run_test-op()
182+
{
183+
prepare_run_on_phone test-backend-ops
184+
185+
qnnbackendname=qnn-cpu
186+
case $qnnbackend in
187+
0)
188+
qnnbackendname=qnn-cpu
189+
;;
190+
1)
191+
qnnbackendname=qnn-gpu
192+
;;
193+
2)
194+
qnnbackendname=qnn-npu
195+
;;
196+
*)
197+
qnnbackendname=qnn-cpu
198+
;;
199+
esac
200+
201+
#debug
202+
echo "adb shell cd ${REMOTE_PATH} \
203+
&& export LD_LIBRARY_PATH=${REMOTE_PATH} \
204+
&& ${REMOTE_PATH}/test-backend-ops test -o $opname -b $qnnbackendname "
205+
206+
echo "\n"
207+
adb shell "cd ${REMOTE_PATH} \
208+
&& export LD_LIBRARY_PATH=${REMOTE_PATH} \
209+
&& ${REMOTE_PATH}/test-backend-ops test -o $opname -b $qnnbackendname "
210+
211+
}
212+
181213
function run_ut_add()
182214
{
183215
prepare_run_on_phone ggml-qnn-ut
@@ -208,18 +240,101 @@ function run_ut_mul()
208240

209241
}
210242

243+
function print_oplist()
244+
{
245+
oplist="DUP
246+
ADD
247+
ADD1
248+
ACC
249+
SUB
250+
MUL
251+
DIV
252+
SQR
253+
SQRT
254+
LOG
255+
SIN
256+
COS
257+
SUM
258+
SUM_ROWS
259+
MEAN
260+
ARGMAX
261+
COUNT_EQUAL
262+
REPEAT
263+
REPEAT_BACK
264+
CONCAT
265+
SILU_BACK
266+
NORM
267+
RMS_NORM
268+
RMS_NORM_BACK
269+
GROUP_NORM
270+
271+
MUL_MAT
272+
MUL_MAT_ID
273+
OUT_PROD
274+
275+
SCALE
276+
SET
277+
CPY
278+
CONT
279+
RESHAPE
280+
VIEW
281+
PERMUTE
282+
TRANSPOSE
283+
GET_ROWS
284+
GET_ROWS_BACK
285+
DIAG
286+
DIAG_MASK_INF
287+
DIAG_MASK_ZERO
288+
SOFT_MAX
289+
SOFT_MAX_BACK
290+
ROPE
291+
ROPE_BACK
292+
CLAMP
293+
CONV_TRANSPOSE_1D
294+
IM2COL
295+
IM2COL_BACK
296+
CONV_TRANSPOSE_2D
297+
POOL_1D
298+
POOL_2D
299+
POOL_2D_BACK
300+
UPSCALE
301+
PAD
302+
PAD_REFLECT_1D
303+
ARANGE
304+
TIMESTEP_EMBEDDING
305+
ARGSORT
306+
LEAKY_RELU
307+
308+
FLASH_ATTN_EXT
309+
FLASH_ATTN_BACK
310+
SSM_CONV
311+
SSM_SCAN
312+
WIN_PART
313+
WIN_UNPART
314+
GET_REL_POS
315+
ADD_REL_POS
316+
RWKV_WKV6
317+
GATED_LINEAR_ATTN"
318+
319+
echo "opname list: "
320+
echo ${oplist}
321+
}
211322

212323
function show_usage()
213324
{
214325
echo "Usage:"
326+
echo " $0 help"
327+
echo " $0 print_oplist"
215328
echo " $0 build"
216329
echo " $0 updateqnnlib"
217-
echo " $0 run_testop"
218-
echo " $0 run_ut_add 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
219-
echo " $0 run_ut_mulmat 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
220-
echo " $0 run_ut_mul 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
221-
echo " $0 run_llamacli 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
222-
echo " $0 run_llamabench 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
330+
echo " $0 run_testops"
331+
echo " $0 run_testop [ADD/MUL/MUL_MAT] [0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU)]"
332+
echo " $0 run_ut_add 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
333+
echo " $0 run_ut_mulmat 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
334+
echo " $0 run_ut_mul 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
335+
echo " $0 run_llamacli 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
336+
echo " $0 run_llamabench 0 (QNN_CPU) / 1 (QNN_GPU) / 2 (QNN_NPU) / 3 (ggml)"
337+
223338
echo -e "\n\n\n"
224339
}
225340

@@ -238,12 +353,14 @@ elif [ $# == 1 ]; then
238353
elif [ "$1" == "help" ]; then
239354
show_usage
240355
exit 1
356+
elif [ "$1" == "print_oplist" ]; then
357+
print_oplist
358+
exit 1
241359
elif [ "$1" == "build" ]; then
242360
build_ggml_qnn
243361
exit 0
244-
245-
elif [ "$1" == "run_testop" ]; then
246-
run_test-backend-ops
362+
elif [ "$1" == "run_testops" ]; then
363+
run_test-ops
247364
exit 0
248365

249366
elif [ "$1" == "updateqnnlib" ]; then
@@ -276,6 +393,107 @@ elif [ $# == 2 ]; then
276393
run_ut_mul
277394
exit 0
278395
fi
396+
elif [ $# == 3 ]; then
397+
opname=$2
398+
#TODO: check opname in oplist
399+
#opname can be found via print_oplist:
400+
# DUP
401+
# ADD
402+
# ADD1
403+
# ACC
404+
# SUB
405+
# MUL
406+
# DIV
407+
# SQR
408+
# SQRT
409+
# LOG
410+
# SIN
411+
# COS
412+
# SUM
413+
# SUM_ROWS
414+
# MEAN
415+
# ARGMAX
416+
# COUNT_EQUAL
417+
# REPEAT
418+
# REPEAT_BACK
419+
# CONCAT
420+
# SILU_BACK
421+
# NORM
422+
# RMS_NORM
423+
# RMS_NORM_BACK
424+
# GROUP_NORM
425+
#
426+
# MUL_MAT
427+
# MUL_MAT_ID
428+
# OUT_PROD
429+
#
430+
# SCALE
431+
# SET
432+
# CPY
433+
# CONT
434+
# RESHAPE
435+
# VIEW
436+
# PERMUTE
437+
# TRANSPOSE
438+
# GET_ROWS
439+
# GET_ROWS_BACK
440+
# DIAG
441+
# DIAG_MASK_INF
442+
# DIAG_MASK_ZERO
443+
# SOFT_MAX
444+
# SOFT_MAX_BACK
445+
# ROPE
446+
# ROPE_BACK
447+
# CLAMP
448+
# CONV_TRANSPOSE_1D
449+
# IM2COL
450+
# IM2COL_BACK
451+
# CONV_TRANSPOSE_2D
452+
# POOL_1D
453+
# POOL_2D
454+
# POOL_2D_BACK
455+
# UPSCALE
456+
# PAD
457+
# PAD_REFLECT_1D
458+
# ARANGE
459+
# TIMESTEP_EMBEDDING
460+
# ARGSORT
461+
# LEAKY_RELU
462+
#
463+
# FLASH_ATTN_EXT
464+
# FLASH_ATTN_BACK
465+
# SSM_CONV
466+
# SSM_SCAN
467+
# WIN_PART
468+
# WIN_UNPART
469+
# GET_REL_POS
470+
# ADD_REL_POS
471+
# RWKV_WKV6
472+
# GATED_LINEAR_ATTN
473+
#
474+
# UNARY
475+
#
476+
# MAP_UNARY
477+
# MAP_BINARY
478+
#
479+
# MAP_CUSTOM1_F32
480+
# MAP_CUSTOM2_F32
481+
# MAP_CUSTOM3_F32
482+
#
483+
# MAP_CUSTOM1
484+
# MAP_CUSTOM2
485+
# MAP_CUSTOM3
486+
#
487+
# CROSS_ENTROPY_LOSS
488+
# CROSS_ENTROPY_LOSS_BACK
489+
# OPT_STEP_ADAMW
490+
qnnbackend=$3
491+
if [ ${qnnbackend} -gt 3 ]; then
492+
show_usage
493+
exit 1
494+
fi
495+
run_test-op
496+
exit 0
279497
else
280498
show_usage
281499
exit 1

0 commit comments

Comments
 (0)