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