1be168c0dSopenharmony_ciFrom 3ebaf5f8d6d98cbdfe009fc94a378184a77f07fe Mon Sep 17 00:00:00 2001
2be168c0dSopenharmony_ciFrom: chengfeng27 <chengfeng27@huawei.com>
3be168c0dSopenharmony_ciDate: Tue, 3 Sep 2024 21:46:41 +0800
4be168c0dSopenharmony_ciSubject: [PATCH] add compile option SP, extensions white list
5be168c0dSopenharmony_ci
6be168c0dSopenharmony_ci---
7be168c0dSopenharmony_ci mindspore/lite/BUILD.gn                       |  9 +++++++-
8be168c0dSopenharmony_ci mindspore/lite/mindir/BUILD.gn                | 22 +++++++++++++++++--
9be168c0dSopenharmony_ci mindspore/lite/src/litert/c_api/context_c.cc  | 10 +++++++++
10be168c0dSopenharmony_ci .../delegate/nnrt/extension_options_parser.cc |  4 ++--
11be168c0dSopenharmony_ci .../src/litert/delegate/nnrt/nnrt_delegate.cc |  2 +-
12be168c0dSopenharmony_ci mindspore/lite/src/litert/js_api/BUILD.gn     |  6 +++++
13be168c0dSopenharmony_ci 6 files changed, 47 insertions(+), 6 deletions(-)
14be168c0dSopenharmony_ci
15be168c0dSopenharmony_cidiff --git a/mindspore/lite/BUILD.gn b/mindspore/lite/BUILD.gn
16be168c0dSopenharmony_ciindex c7c51620..6deff934 100644
17be168c0dSopenharmony_ci--- a/mindspore/lite/BUILD.gn
18be168c0dSopenharmony_ci+++ b/mindspore/lite/BUILD.gn
19be168c0dSopenharmony_ci@@ -352,6 +352,7 @@ if ((target_cpu == "arm" || target_cpu == "arm64") && !is_emulator) {
20be168c0dSopenharmony_ci }
21be168c0dSopenharmony_ci 
22be168c0dSopenharmony_ci ohos_shared_library("mindspore_lib") {
23be168c0dSopenharmony_ci+  branch_protector_ret = "pac_ret"
24be168c0dSopenharmony_ci   deps = [
25be168c0dSopenharmony_ci     "../ccsrc/plugin/device/cpu/kernel/nnacl/:nnacl_obj",
26be168c0dSopenharmony_ci     "../core/mindrt/:mindrt_obj",
27be168c0dSopenharmony_ci@@ -486,6 +487,7 @@ ohos_shared_library("mindspore_lib") {
28be168c0dSopenharmony_ci 
29be168c0dSopenharmony_ci # NDK lib
30be168c0dSopenharmony_ci ohos_shared_library("mindspore_ndk") {
31be168c0dSopenharmony_ci+  branch_protector_ret = "pac_ret"
32be168c0dSopenharmony_ci   deps = [
33be168c0dSopenharmony_ci     ":mindspore_lib",
34be168c0dSopenharmony_ci     ":mindspore_train_lib",
35be168c0dSopenharmony_ci@@ -664,6 +666,7 @@ not_needed(fp16_train_kernel_sources)
36be168c0dSopenharmony_ci all_train_sources += fp32_train_kernel_sources
37be168c0dSopenharmony_ci 
38be168c0dSopenharmony_ci ohos_shared_library("mindspore_train_lib") {
39be168c0dSopenharmony_ci+  branch_protector_ret = "pac_ret"
40be168c0dSopenharmony_ci   deps = [
41be168c0dSopenharmony_ci     ":mindspore_lib",
42be168c0dSopenharmony_ci   ]
43be168c0dSopenharmony_ci@@ -716,6 +719,7 @@ ohos_shared_library("mindspore_train_lib") {
44be168c0dSopenharmony_ci     ":mindspore_api",
45be168c0dSopenharmony_ci     ":disable_android",
46be168c0dSopenharmony_ci     ":train_kernel_option",
47be168c0dSopenharmony_ci+    ":secure_option",
48be168c0dSopenharmony_ci   ]
49be168c0dSopenharmony_ci 
50be168c0dSopenharmony_ci   remove_configs = [ "//build/config/compiler:no_rtti" ]
51be168c0dSopenharmony_ci@@ -766,7 +770,10 @@ config("disable_android") {
52be168c0dSopenharmony_ci }
53be168c0dSopenharmony_ci 
54be168c0dSopenharmony_ci config("secure_option") {
55be168c0dSopenharmony_ci-  cflags = [ "-fstack-protector-all" ]
56be168c0dSopenharmony_ci+  cflags = [
57be168c0dSopenharmony_ci+    "-fstack-protector-all",
58be168c0dSopenharmony_ci+    "-D_FORTIFY_SOURCE=2",
59be168c0dSopenharmony_ci+  ]
60be168c0dSopenharmony_ci }
61be168c0dSopenharmony_ci 
62be168c0dSopenharmony_ci config("train_kernel_option") {
63be168c0dSopenharmony_cidiff --git a/mindspore/lite/mindir/BUILD.gn b/mindspore/lite/mindir/BUILD.gn
64be168c0dSopenharmony_ciindex 975d201f..a134ddb2 100644
65be168c0dSopenharmony_ci--- a/mindspore/lite/mindir/BUILD.gn
66be168c0dSopenharmony_ci+++ b/mindspore/lite/mindir/BUILD.gn
67be168c0dSopenharmony_ci@@ -26,7 +26,26 @@ config("mindir_config") {
68be168c0dSopenharmony_ci   ]
69be168c0dSopenharmony_ci }
70be168c0dSopenharmony_ci 
71be168c0dSopenharmony_ci+config("mindir_secure_disable_android") {
72be168c0dSopenharmony_ci+  cflags = [
73be168c0dSopenharmony_ci+    "-UANDROID",
74be168c0dSopenharmony_ci+    "-U__ANDROID__",
75be168c0dSopenharmony_ci+    "-U__ANDROID_API__",
76be168c0dSopenharmony_ci+    "-fstack-protector-all",
77be168c0dSopenharmony_ci+    "-D_FORTIFY_SOURCE=2",
78be168c0dSopenharmony_ci+  ]
79be168c0dSopenharmony_ci+  cflags_cc = [
80be168c0dSopenharmony_ci+    "-UANDROID",
81be168c0dSopenharmony_ci+    "-U__ANDROID__",
82be168c0dSopenharmony_ci+    "-U__ANDROID_API__",
83be168c0dSopenharmony_ci+  ]
84be168c0dSopenharmony_ci+  ldflags = [
85be168c0dSopenharmony_ci+    "-Wl,--no-as-needed",
86be168c0dSopenharmony_ci+  ]
87be168c0dSopenharmony_ci+}
88be168c0dSopenharmony_ci+
89be168c0dSopenharmony_ci ohos_shared_library("mindir_lib") {
90be168c0dSopenharmony_ci+  branch_protector_ret = "pac_ret"
91be168c0dSopenharmony_ci   include_dirs = [
92be168c0dSopenharmony_ci     "../",
93be168c0dSopenharmony_ci     "../../core",
94be168c0dSopenharmony_ci@@ -58,8 +77,7 @@ ohos_shared_library("mindir_lib") {
95be168c0dSopenharmony_ci     "flatbuffers:libflatbuffers_static",
96be168c0dSopenharmony_ci   ]
97be168c0dSopenharmony_ci   configs = [
98be168c0dSopenharmony_ci-    "../:disable_android",
99be168c0dSopenharmony_ci-    "../:secure_option",
100be168c0dSopenharmony_ci+    ":mindir_secure_disable_android",
101be168c0dSopenharmony_ci   ]
102be168c0dSopenharmony_ci   public_configs = [ ":mindir_config" ]
103be168c0dSopenharmony_ci   defines = [ "MS_COMPILE_OHOS" ]
104be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/c_api/context_c.cc b/mindspore/lite/src/litert/c_api/context_c.cc
105be168c0dSopenharmony_ciindex ef7d4b6a..88fdc4d0 100644
106be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/c_api/context_c.cc
107be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/c_api/context_c.cc
108be168c0dSopenharmony_ci@@ -525,6 +525,16 @@ OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle devic
109be168c0dSopenharmony_ci     MS_LOG(ERROR) << "Add extension to non-NNRT device is not allowable, ignored";
110be168c0dSopenharmony_ci     return OH_AI_STATUS_LITE_ERROR;
111be168c0dSopenharmony_ci   }
112be168c0dSopenharmony_ci+  static std::vector<std::string> extension_keys = {"CachePath", "CacheVersion", "ModelName", "QuantBuffer",
113be168c0dSopenharmony_ci+                                                     "isProfiling", "opLayout", "InputDims", "DynamicDims", "BandMode",
114be168c0dSopenharmony_ci+                                                     "NPU_FM_SHARED"};
115be168c0dSopenharmony_ci+  auto it = std::find(extension_keys.begin(), extension_keys.end(), std::string(name));
116be168c0dSopenharmony_ci+  if (it == extension_keys.end()) {
117be168c0dSopenharmony_ci+    MS_LOG(ERROR) << "The name of the extension is not allowable, only can be one of {CachePath, CacheVersion,"
118be168c0dSopenharmony_ci+                    << " ModelName, QuantBuffer, isProfiling, opLayout, InputDims, DynamicDims, BandMode,"
119be168c0dSopenharmony_ci+                    << "NPU_FM_SHARED}.";
120be168c0dSopenharmony_ci+    return OH_AI_STATUS_LITE_ERROR;
121be168c0dSopenharmony_ci+  }
122be168c0dSopenharmony_ci   auto impl = reinterpret_cast<mindspore::NNRTDeviceInfo *>(device_info);
123be168c0dSopenharmony_ci   mindspore::Extension extension;
124be168c0dSopenharmony_ci   extension.name = std::string(name);
125be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc b/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc
126be168c0dSopenharmony_ciindex a66cd5ea..6e4c57a4 100644
127be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc
128be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc
129be168c0dSopenharmony_ci@@ -29,7 +29,7 @@ const std::map<std::string, mindspore::lite::HiAI_BandMode> kBandModeMap = {
130be168c0dSopenharmony_ci const std::string kCachePath = "CachePath";
131be168c0dSopenharmony_ci const std::string kCacheVersion = "CacheVersion";
132be168c0dSopenharmony_ci const std::string kBandMode = "BandMode";
133be168c0dSopenharmony_ci-const std::string kQuantConfigData = "QuantConfigData";
134be168c0dSopenharmony_ci+const std::string kQuantBuffer = "QuantBuffer";
135be168c0dSopenharmony_ci const std::string kModelName = "ModelName";
136be168c0dSopenharmony_ci }  // namespace
137be168c0dSopenharmony_ci 
138be168c0dSopenharmony_ci@@ -83,7 +83,7 @@ void ExtensionOptionsParser::DoParseQuantConfig(const std::vector<Extension> &ex
139be168c0dSopenharmony_ci   MS_CHECK_TRUE_RET_VOID(quant_config != nullptr);
140be168c0dSopenharmony_ci   MS_CHECK_TRUE_RET_VOID(num != nullptr);
141be168c0dSopenharmony_ci   auto iter_config = std::find_if(extensions.begin(), extensions.end(), [](const Extension &extension) {
142be168c0dSopenharmony_ci-    return extension.name == kQuantConfigData;
143be168c0dSopenharmony_ci+    return extension.name == kQuantBuffer;
144be168c0dSopenharmony_ci   });
145be168c0dSopenharmony_ci   if (iter_config != extensions.end()) {
146be168c0dSopenharmony_ci     *quant_config = static_cast<void *>(const_cast<uint8_t *>(iter_config->value.data()));
147be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/delegate/nnrt/nnrt_delegate.cc b/mindspore/lite/src/litert/delegate/nnrt/nnrt_delegate.cc
148be168c0dSopenharmony_ciindex a49e7449..ba921da5 100644
149be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/delegate/nnrt/nnrt_delegate.cc
150be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/delegate/nnrt/nnrt_delegate.cc
151be168c0dSopenharmony_ci@@ -546,7 +546,7 @@ Status NNRTDelegate::InitNNCompilation(OH_NNCompilation *nn_compilation) const {
152be168c0dSopenharmony_ci   }
153be168c0dSopenharmony_ci 
154be168c0dSopenharmony_ci #ifdef SUPPORT_NNRT_METAGRAPH
155be168c0dSopenharmony_ci-  if (hiai_handle_ != nullptr) {
156be168c0dSopenharmony_ci+  if (hiai_handle_ != nullptr && IsKirinNPUWithOfflineInference()) {
157be168c0dSopenharmony_ci     if (extension_options_.band_mode != mindspore::lite::HIAI_BANDMODE_UNSET) {
158be168c0dSopenharmony_ci       ret_code = mindspore::lite::HMS_HiAIOptions_SetBandMode(nn_compilation, extension_options_.band_mode);
159be168c0dSopenharmony_ci       if ((ret_code != OH_NN_SUCCESS) && (ret_code != OH_NN_OPERATION_FORBIDDEN)) {
160be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/js_api/BUILD.gn b/mindspore/lite/src/litert/js_api/BUILD.gn
161be168c0dSopenharmony_ciindex f12e4db4..4004cc47 100644
162be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/js_api/BUILD.gn
163be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/js_api/BUILD.gn
164be168c0dSopenharmony_ci@@ -15,6 +15,7 @@ import("//build/ohos.gni")
165be168c0dSopenharmony_ci import("//build/ohos/ace/ace.gni")
166be168c0dSopenharmony_ci 
167be168c0dSopenharmony_ci ohos_shared_library("mindsporelite_napi") {
168be168c0dSopenharmony_ci+  branch_protector_ret = "pac_ret"
169be168c0dSopenharmony_ci   include_dirs = [
170be168c0dSopenharmony_ci     "//third_party/mindspore/mindspore-src/source/",
171be168c0dSopenharmony_ci     "//third_party/mindspore/mindspore-src/source/include/api",
172be168c0dSopenharmony_ci@@ -37,6 +38,11 @@ ohos_shared_library("mindsporelite_napi") {
173be168c0dSopenharmony_ci     "nnrt_device_desc.cc"
174be168c0dSopenharmony_ci   ]
175be168c0dSopenharmony_ci 
176be168c0dSopenharmony_ci+  configs = [
177be168c0dSopenharmony_ci+    "../../../:disable_android",
178be168c0dSopenharmony_ci+    "../../../:secure_option",
179be168c0dSopenharmony_ci+  ]
180be168c0dSopenharmony_ci+
181be168c0dSopenharmony_ci   deps = [
182be168c0dSopenharmony_ci     "../../../:mindspore_lib",
183be168c0dSopenharmony_ci     "../../../:mindspore_ndk"
184be168c0dSopenharmony_ci-- 
185be168c0dSopenharmony_ci2.17.1
186be168c0dSopenharmony_ci
187