From 7d8430e28fd46afe3cdfad21ac5709252647665c Mon Sep 17 00:00:00 2001 From: Chen Lai Date: Thu, 11 Sep 2025 20:27:36 -0700 Subject: [PATCH 1/3] try fix --- runtime/backend/options.h | 6 ++++++ setup.py | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/runtime/backend/options.h b/runtime/backend/options.h index 7ff742f4e8f..803ff0c697f 100644 --- a/runtime/backend/options.h +++ b/runtime/backend/options.h @@ -32,6 +32,12 @@ struct BackendOption { char key[kMaxOptionKeyLength]{}; // value is the value of the backend option, like 4, true, etc OptionValue value; + + BackendOption(const char* k, OptionValue v) { + strncpy(key, k, kMaxOptionKeyLength); + key[kMaxOptionKeyLength - 1] = '\0'; // ensure null-termination + value = v; + } }; /** diff --git a/setup.py b/setup.py index 713bdd47f81..def9b996be0 100644 --- a/setup.py +++ b/setup.py @@ -478,7 +478,6 @@ def run(self): tmp_path = Path(tmpdir) sdk_path = _download_qnn_sdk(dst_folder=tmp_path) - logging.info("sdk_path: ", sdk_path) if not sdk_path: raise RuntimeError( "Qualcomm SDK not found, cannot build backend" @@ -486,7 +485,6 @@ def run(self): # Determine paths prj_root = Path(__file__).parent.resolve() - logging.info("prj_root: ", prj_root) build_sh = prj_root / "backends/qualcomm/scripts/build.sh" build_root = prj_root / "build-x86" From cc86dc195cf7f54fbada041cfcfc6e60cb58328d Mon Sep 17 00:00:00 2001 From: Chen Lai Date: Thu, 11 Sep 2025 20:37:14 -0700 Subject: [PATCH 2/3] try fix call site --- .../qualcomm/runtime/QnnBackendOptions.cpp | 18 +++++++++++++++--- runtime/backend/options.h | 6 ------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/backends/qualcomm/runtime/QnnBackendOptions.cpp b/backends/qualcomm/runtime/QnnBackendOptions.cpp index 17e9975008d..b4ea3186a09 100644 --- a/backends/qualcomm/runtime/QnnBackendOptions.cpp +++ b/backends/qualcomm/runtime/QnnBackendOptions.cpp @@ -21,12 +21,24 @@ T get_option(T aot_option) { executorch::runtime::BackendOption backend_option; if constexpr (std::is_same_v) { - backend_option = {QNN_RUNTIME_LOG_LEVEL, -1}; + std::strncpy( + backend_option.key, QNN_RUNTIME_LOG_LEVEL, kMaxOptionKeyLength); + backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + backend_option.value = -1; } else if constexpr (std::is_same_v) { - backend_option = {QNN_RUNTIME_HTP_PERFORMANCE_MODE, -1}; + std::strncpy( + backend_option.key, + QNN_RUNTIME_HTP_PERFORMANCE_MODE, + kMaxOptionKeyLength); + backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + backend_option.value = -1; } else if constexpr (std::is_same_v) { - backend_option = {QNN_RUNTIME_PROFILE_LEVEL, -1}; + std::strncpy( + backend_option.key, QNN_RUNTIME_PROFILE_LEVEL, kMaxOptionKeyLength); + backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + backend_option.value = -1; } + // This will call get_option under runtime backend interface status = get_option(QNN_BACKEND, backend_option); diff --git a/runtime/backend/options.h b/runtime/backend/options.h index 803ff0c697f..7ff742f4e8f 100644 --- a/runtime/backend/options.h +++ b/runtime/backend/options.h @@ -32,12 +32,6 @@ struct BackendOption { char key[kMaxOptionKeyLength]{}; // value is the value of the backend option, like 4, true, etc OptionValue value; - - BackendOption(const char* k, OptionValue v) { - strncpy(key, k, kMaxOptionKeyLength); - key[kMaxOptionKeyLength - 1] = '\0'; // ensure null-termination - value = v; - } }; /** From b0d9cec2f0b7753c6c8623eba3f83dfcc14c8a70 Mon Sep 17 00:00:00 2001 From: Chen Lai Date: Thu, 11 Sep 2025 20:50:41 -0700 Subject: [PATCH 3/3] fix --- backends/qualcomm/runtime/QnnBackendOptions.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/backends/qualcomm/runtime/QnnBackendOptions.cpp b/backends/qualcomm/runtime/QnnBackendOptions.cpp index b4ea3186a09..1ce48cfcd61 100644 --- a/backends/qualcomm/runtime/QnnBackendOptions.cpp +++ b/backends/qualcomm/runtime/QnnBackendOptions.cpp @@ -22,20 +22,24 @@ T get_option(T aot_option) { if constexpr (std::is_same_v) { std::strncpy( - backend_option.key, QNN_RUNTIME_LOG_LEVEL, kMaxOptionKeyLength); - backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + backend_option.key, + QNN_RUNTIME_LOG_LEVEL, + runtime::kMaxOptionKeyLength); + backend_option.key[runtime::kMaxOptionKeyLength - 1] = '\0'; backend_option.value = -1; } else if constexpr (std::is_same_v) { std::strncpy( backend_option.key, QNN_RUNTIME_HTP_PERFORMANCE_MODE, - kMaxOptionKeyLength); - backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + runtime::kMaxOptionKeyLength); + backend_option.key[runtime::kMaxOptionKeyLength - 1] = '\0'; backend_option.value = -1; } else if constexpr (std::is_same_v) { std::strncpy( - backend_option.key, QNN_RUNTIME_PROFILE_LEVEL, kMaxOptionKeyLength); - backend_option.key[kMaxOptionKeyLength - 1] = '\0'; + backend_option.key, + QNN_RUNTIME_PROFILE_LEVEL, + runtime::kMaxOptionKeyLength); + backend_option.key[runtime::kMaxOptionKeyLength - 1] = '\0'; backend_option.value = -1; }