From 1679dcf47ea660254a7b7ccdbbcbd4d858370d5c Mon Sep 17 00:00:00 2001 From: hongruichen Date: Fri, 19 Jul 2024 22:56:00 +0800 Subject: [PATCH] fix: check all dimentions in `can offload` --- ggml/src/ggml-qnn.cpp | 11 ++++++++++- ggml/src/ggml-qnn/utils.cpp | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ggml/src/ggml-qnn.cpp b/ggml/src/ggml-qnn.cpp index e448d7382..aadf53c35 100644 --- a/ggml/src/ggml-qnn.cpp +++ b/ggml/src/ggml-qnn.cpp @@ -359,7 +359,16 @@ GGML_CALL static bool ggml_backend_qnn_supports_op(ggml_backend_t backend, const GGML_CALL static bool ggml_backend_qnn_offload_op(ggml_backend_t backend, const ggml_tensor *op) { GGML_UNUSED(backend); - return op->ne[0] > 1 && op->ne[1] > 1; + size_t dims = ggml_n_dims(op); + bool can_offload = false; + for (size_t i = 0; i < dims; i++) { + if (op->ne[i] > 1) { + can_offload = true; + break; + } + } + + return can_offload; } static ggml_backend_i ggml_backend_qnn_interface = { diff --git a/ggml/src/ggml-qnn/utils.cpp b/ggml/src/ggml-qnn/utils.cpp index e36142f28..70a898b95 100644 --- a/ggml/src/ggml-qnn/utils.cpp +++ b/ggml/src/ggml-qnn/utils.cpp @@ -153,6 +153,8 @@ const char *opname_from_ggmlop(enum ggml_op ggmlop) { } const char *get_qnn_error_string(Qnn_ErrorHandle_t error) { + // A complete list of error codes can be found at here: + // https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/api_error_codes.html switch (error) { case QNN_SUCCESS: return "QNN_SUCCESS";