1be168c0dSopenharmony_ciFrom e9a9786e9619b6fcb8637eaf1331829793ccc351 Mon Sep 17 00:00:00 2001 2be168c0dSopenharmony_ciFrom: chengfeng27 <chengfeng27@huawei.com> 3be168c0dSopenharmony_ciDate: Thu, 12 Sep 2024 10:38:08 +0800 4be168c0dSopenharmony_ciSubject: [PATCH] context nullptr return, remote std::cout 5be168c0dSopenharmony_ci 6be168c0dSopenharmony_ci--- 7be168c0dSopenharmony_ci .../nnacl/infer/sparse_segment_sum_infer.c | 1 - 8be168c0dSopenharmony_ci .../src/common/hi_app_event/handler_thread.cc | 5 ++-- 9be168c0dSopenharmony_ci mindspore/lite/src/litert/c_api/context_c.cc | 5 ++-- 10be168c0dSopenharmony_ci .../delegate/nnrt/extension_options_parser.cc | 3 ++- 11be168c0dSopenharmony_ci mindspore/lite/src/litert/inner_allocator.cc | 2 +- 12be168c0dSopenharmony_ci .../kernel/cpu/base/scatter_nd_binary.cc | 24 +++++++++++++++++-- 13be168c0dSopenharmony_ci mindspore/lite/src/litert/lite_session.cc | 1 - 14be168c0dSopenharmony_ci 7 files changed, 31 insertions(+), 10 deletions(-) 15be168c0dSopenharmony_ci 16be168c0dSopenharmony_cidiff --git a/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/infer/sparse_segment_sum_infer.c b/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/infer/sparse_segment_sum_infer.c 17be168c0dSopenharmony_ciindex 34069304..c8160bf6 100644 18be168c0dSopenharmony_ci--- a/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/infer/sparse_segment_sum_infer.c 19be168c0dSopenharmony_ci+++ b/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/infer/sparse_segment_sum_infer.c 20be168c0dSopenharmony_ci@@ -32,7 +32,6 @@ int SparseSegmentSumInferShape(const TensorC *const *inputs, size_t inputs_size, 21be168c0dSopenharmony_ci } 22be168c0dSopenharmony_ci 23be168c0dSopenharmony_ci return NNACL_INFER_INVALID; 24be168c0dSopenharmony_ci- // return NNACL_OK; 25be168c0dSopenharmony_ci } 26be168c0dSopenharmony_ci 27be168c0dSopenharmony_ci REG_INFER(SparseSegmentSum, PrimType_SparseSegmentSum, SparseSegmentSumInferShape) 28be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/common/hi_app_event/handler_thread.cc b/mindspore/lite/src/common/hi_app_event/handler_thread.cc 29be168c0dSopenharmony_ciindex a84504c0..1cf32bca 100644 30be168c0dSopenharmony_ci--- a/mindspore/lite/src/common/hi_app_event/handler_thread.cc 31be168c0dSopenharmony_ci+++ b/mindspore/lite/src/common/hi_app_event/handler_thread.cc 32be168c0dSopenharmony_ci@@ -15,6 +15,7 @@ 33be168c0dSopenharmony_ci */ 34be168c0dSopenharmony_ci 35be168c0dSopenharmony_ci #include "handler_thread.h" 36be168c0dSopenharmony_ci+#include "src/common/log.h" 37be168c0dSopenharmony_ci 38be168c0dSopenharmony_ci namespace mindspore { 39be168c0dSopenharmony_ci namespace lite { 40be168c0dSopenharmony_ci@@ -121,8 +122,8 @@ public: 41be168c0dSopenharmony_ci 42be168c0dSopenharmony_ci bool HandlerThread::Post(std::string key, Runnable && aRunnable) 43be168c0dSopenharmony_ci { 44be168c0dSopenharmony_ci- if (not Running()) { 45be168c0dSopenharmony_ci- std::cout << "Denying insertion, as the looper is not running.\n"; 46be168c0dSopenharmony_ci+ if (!Running()) { 47be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "Denying insertion, as the looper is not running."; 48be168c0dSopenharmony_ci return false; 49be168c0dSopenharmony_ci } 50be168c0dSopenharmony_ci 51be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/c_api/context_c.cc b/mindspore/lite/src/litert/c_api/context_c.cc 52be168c0dSopenharmony_ciindex 5418c46a..92085960 100644 53be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/c_api/context_c.cc 54be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/c_api/context_c.cc 55be168c0dSopenharmony_ci@@ -41,6 +41,7 @@ OH_AI_ContextHandle OH_AI_ContextCreate() { 56be168c0dSopenharmony_ci if (impl->context_ == nullptr) { 57be168c0dSopenharmony_ci MS_LOG(ERROR) << "memory allocation failed."; 58be168c0dSopenharmony_ci delete impl; 59be168c0dSopenharmony_ci+ return nullptr; 60be168c0dSopenharmony_ci } 61be168c0dSopenharmony_ci impl->owned_by_model_ = false; 62be168c0dSopenharmony_ci return static_cast<OH_AI_ContextHandle>(impl); 63be168c0dSopenharmony_ci@@ -536,8 +537,8 @@ OH_AI_API OH_AI_Status OH_AI_DeviceInfoAddExtension(OH_AI_DeviceInfoHandle devic 64be168c0dSopenharmony_ci return OH_AI_STATUS_LITE_ERROR; 65be168c0dSopenharmony_ci } 66be168c0dSopenharmony_ci static std::vector<std::string> extension_keys = {"CachePath", "CacheVersion", "ModelName", "QuantBuffer", 67be168c0dSopenharmony_ci- "isProfiling", "opLayout", "InputDims", "DynamicDims", "BandMode", 68be168c0dSopenharmony_ci- "NPU_FM_SHARED"}; 69be168c0dSopenharmony_ci+ "QuantConfigData", "isProfiling", "opLayout", "InputDims", 70be168c0dSopenharmony_ci+ "DynamicDims", "BandMode", "NPU_FM_SHARED"}; 71be168c0dSopenharmony_ci auto it = std::find(extension_keys.begin(), extension_keys.end(), std::string(name)); 72be168c0dSopenharmony_ci if (it == extension_keys.end()) { 73be168c0dSopenharmony_ci MS_LOG(ERROR) << "The name of the extension is not allowable, only can be one of {CachePath, CacheVersion," 74be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc b/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc 75be168c0dSopenharmony_ciindex 6e4c57a4..b2a01592 100644 76be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc 77be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/delegate/nnrt/extension_options_parser.cc 78be168c0dSopenharmony_ci@@ -30,6 +30,7 @@ const std::string kCachePath = "CachePath"; 79be168c0dSopenharmony_ci const std::string kCacheVersion = "CacheVersion"; 80be168c0dSopenharmony_ci const std::string kBandMode = "BandMode"; 81be168c0dSopenharmony_ci const std::string kQuantBuffer = "QuantBuffer"; 82be168c0dSopenharmony_ci+const std::string kQuantConfigData = "QuantConfigData"; 83be168c0dSopenharmony_ci const std::string kModelName = "ModelName"; 84be168c0dSopenharmony_ci } // namespace 85be168c0dSopenharmony_ci 86be168c0dSopenharmony_ci@@ -83,7 +84,7 @@ void ExtensionOptionsParser::DoParseQuantConfig(const std::vector<Extension> &ex 87be168c0dSopenharmony_ci MS_CHECK_TRUE_RET_VOID(quant_config != nullptr); 88be168c0dSopenharmony_ci MS_CHECK_TRUE_RET_VOID(num != nullptr); 89be168c0dSopenharmony_ci auto iter_config = std::find_if(extensions.begin(), extensions.end(), [](const Extension &extension) { 90be168c0dSopenharmony_ci- return extension.name == kQuantBuffer; 91be168c0dSopenharmony_ci+ return extension.name == kQuantBuffer || extension.name == kQuantConfigData; 92be168c0dSopenharmony_ci }); 93be168c0dSopenharmony_ci if (iter_config != extensions.end()) { 94be168c0dSopenharmony_ci *quant_config = static_cast<void *>(const_cast<uint8_t *>(iter_config->value.data())); 95be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/inner_allocator.cc b/mindspore/lite/src/litert/inner_allocator.cc 96be168c0dSopenharmony_ciindex 9bd0c017..c80c7de9 100644 97be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/inner_allocator.cc 98be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/inner_allocator.cc 99be168c0dSopenharmony_ci@@ -54,11 +54,11 @@ void *DefaultAllocator::Malloc(size_t size) { 100be168c0dSopenharmony_ci MS_LOG(ERROR) << "MallocData out of max_size, size: " << size; 101be168c0dSopenharmony_ci return nullptr; 102be168c0dSopenharmony_ci } 103be168c0dSopenharmony_ci+ Lock(); 104be168c0dSopenharmony_ci if (this->total_size_ >= max_malloc_size_) { 105be168c0dSopenharmony_ci MS_LOG(ERROR) << "Memory pool is exhausted"; 106be168c0dSopenharmony_ci return nullptr; 107be168c0dSopenharmony_ci } 108be168c0dSopenharmony_ci- Lock(); 109be168c0dSopenharmony_ci auto iter = freeList_.lower_bound(size); 110be168c0dSopenharmony_ci if (iter != freeList_.end() && ReuseMemory(iter->second->size, size)) { 111be168c0dSopenharmony_ci auto membuf = iter->second; 112be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/base/scatter_nd_binary.cc b/mindspore/lite/src/litert/kernel/cpu/base/scatter_nd_binary.cc 113be168c0dSopenharmony_ciindex 0c98fedc..23e6b4cd 100644 114be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/kernel/cpu/base/scatter_nd_binary.cc 115be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/base/scatter_nd_binary.cc 116be168c0dSopenharmony_ci@@ -31,6 +31,14 @@ int ScatterNDBinaryCPUKernel::Prepare() { 117be168c0dSopenharmony_ci return ReSize(); 118be168c0dSopenharmony_ci } 119be168c0dSopenharmony_ci 120be168c0dSopenharmony_ci+/** 121be168c0dSopenharmony_ci+ * ScatterND equation is like follows: 122be168c0dSopenharmony_ci+ * 123be168c0dSopenharmony_ci+ * output = np.copy(input) 124be168c0dSopenharmony_ci+ * update_indices = indices.shape[:-1] 125be168c0dSopenharmony_ci+ * for idx in np.ndindex(update_indices): 126be168c0dSopenharmony_ci+ * output[indices[idx]] = updates[idx] 127be168c0dSopenharmony_ci+ */ 128be168c0dSopenharmony_ci int ScatterNDBinaryCPUKernel::ReSize() { 129be168c0dSopenharmony_ci auto input = in_tensors_.at(kScatterUpdateInputIndex); 130be168c0dSopenharmony_ci auto indices = in_tensors_.at(kScatterIndicesIndex); 131be168c0dSopenharmony_ci@@ -90,7 +98,13 @@ int ScatterNDBinaryCPUKernel::ReSize() { 132be168c0dSopenharmony_ci for (int i = 0; i < param_->num_unit; i++) { 133be168c0dSopenharmony_ci int tmp_stride = 0; 134be168c0dSopenharmony_ci for (int j = 0; j < indices_unit_rank; j++) { 135be168c0dSopenharmony_ci- tmp_stride += indices_data[i * indices_unit_rank + j] * out_strides.at(j) * param_->unit_size; 136be168c0dSopenharmony_ci+ int index = indices_data[i * indices_unit_rank + j]; 137be168c0dSopenharmony_ci+ if ((index < -input_shape[j]) || (index >= input_shape[j])) { 138be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "illegal index: " << index << ", should in [" << -input_shape[j] << ", " << input_shape[j] 139be168c0dSopenharmony_ci+ << ")"; 140be168c0dSopenharmony_ci+ return RET_ERROR; 141be168c0dSopenharmony_ci+ } 142be168c0dSopenharmony_ci+ tmp_stride += index * out_strides.at(j) * param_->unit_size; 143be168c0dSopenharmony_ci } 144be168c0dSopenharmony_ci output_unit_offsets_.push_back(tmp_stride); 145be168c0dSopenharmony_ci } 146be168c0dSopenharmony_ci@@ -99,7 +113,13 @@ int ScatterNDBinaryCPUKernel::ReSize() { 147be168c0dSopenharmony_ci for (int i = 0; i < param_->num_unit; i++) { 148be168c0dSopenharmony_ci int tmp_stride = 0; 149be168c0dSopenharmony_ci for (int j = 0; j < indices_unit_rank; j++) { 150be168c0dSopenharmony_ci- tmp_stride += indices_data[i * indices_unit_rank + j] * out_strides.at(j) * param_->unit_size; 151be168c0dSopenharmony_ci+ int64_t index = indices_data[i * indices_unit_rank + j]; 152be168c0dSopenharmony_ci+ if ((index < -input_shape[j]) || (index >= input_shape[j])) { 153be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "illegal index: " << index << ", should in [" << -input_shape[j] << ", " << input_shape[j] 154be168c0dSopenharmony_ci+ << ")"; 155be168c0dSopenharmony_ci+ return RET_ERROR; 156be168c0dSopenharmony_ci+ } 157be168c0dSopenharmony_ci+ tmp_stride += index * out_strides.at(j) * param_->unit_size; 158be168c0dSopenharmony_ci } 159be168c0dSopenharmony_ci output_unit_offsets_.push_back(tmp_stride); 160be168c0dSopenharmony_ci } 161be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/lite_session.cc b/mindspore/lite/src/litert/lite_session.cc 162be168c0dSopenharmony_ciindex 7502ec27..69c292e9 100644 163be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/lite_session.cc 164be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/lite_session.cc 165be168c0dSopenharmony_ci@@ -1104,7 +1104,6 @@ int LiteSession::CreateNNRTDelegate() { 166be168c0dSopenharmony_ci MS_LOG(ERROR) << "New NNRT delegate failed"; 167be168c0dSopenharmony_ci return RET_ERROR; 168be168c0dSopenharmony_ci } 169be168c0dSopenharmony_ci-// ((NNRTDelegate *)(delegate_.get()))->SetMetaGraph(this->model_->buf); 170be168c0dSopenharmony_ci delegate_device_type_ = DT_NNRT; 171be168c0dSopenharmony_ci this->context_->delegate = delegate_; 172be168c0dSopenharmony_ci #endif 173be168c0dSopenharmony_ci-- 174be168c0dSopenharmony_ci2.17.1 175be168c0dSopenharmony_ci 176