1be168c0dSopenharmony_ciFrom b163f226d50d0b43813c0d61929b39dc8529c52d Mon Sep 17 00:00:00 2001 2be168c0dSopenharmony_ciFrom: chengfeng27 <chengfeng27@huawei.com> 3be168c0dSopenharmony_ciDate: Sat, 15 Jun 2024 21:14:45 +0800 4be168c0dSopenharmony_ciSubject: [PATCH] fix gcn model squeeze/transpose infershape not do 5be168c0dSopenharmony_ci 6be168c0dSopenharmony_ci--- 7be168c0dSopenharmony_ci mindspore/lite/src/litert/executor.cc | 16 +++++++++++++++- 8be168c0dSopenharmony_ci .../src/litert/kernel/cpu/nnacl/nnacl_reshape.cc | 12 ++++++++---- 9be168c0dSopenharmony_ci 2 files changed, 23 insertions(+), 5 deletions(-) 10be168c0dSopenharmony_ci 11be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/executor.cc b/mindspore/lite/src/litert/executor.cc 12be168c0dSopenharmony_ciindex b4e9d1d3..cb6d7451 100644 13be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/executor.cc 14be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/executor.cc 15be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 16be168c0dSopenharmony_ci /** 17be168c0dSopenharmony_ci- * Copyright 2020 Huawei Technologies Co., Ltd 18be168c0dSopenharmony_ci+ * Copyright 2024 Huawei Technologies Co., Ltd 19be168c0dSopenharmony_ci * 20be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 21be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 22be168c0dSopenharmony_ci@@ -31,11 +31,25 @@ int Executor::Run(const std::vector<Tensor *> &in_tensors, const std::vector<Ten 23be168c0dSopenharmony_ci 24be168c0dSopenharmony_ci // clear ref_count 25be168c0dSopenharmony_ci for (auto *kernel : kernels) { 26be168c0dSopenharmony_ci+ CHECK_NULL_RETURN(kernel); 27be168c0dSopenharmony_ci for (auto *tensor : kernel->in_tensors()) { 28be168c0dSopenharmony_ci+ CHECK_NULL_RETURN(tensor); 29be168c0dSopenharmony_ci tensor->set_ref_count(0); 30be168c0dSopenharmony_ci } 31be168c0dSopenharmony_ci } 32be168c0dSopenharmony_ci 33be168c0dSopenharmony_ci+ // clear output ref_couont 34be168c0dSopenharmony_ci+ for (auto output_tensor : out_tensors) { 35be168c0dSopenharmony_ci+ CHECK_NULL_RETURN(output_tensor); 36be168c0dSopenharmony_ci+ if (output_tensor->allocator() != nullptr) { 37be168c0dSopenharmony_ci+ output_tensor->DecRefCount(); 38be168c0dSopenharmony_ci+ } else { 39be168c0dSopenharmony_ci+ /* user set graph->-output-tensor from outside */ 40be168c0dSopenharmony_ci+ output_tensor->set_own_data(false); 41be168c0dSopenharmony_ci+ output_tensor->set_allocator(nullptr); 42be168c0dSopenharmony_ci+ } 43be168c0dSopenharmony_ci+ } 44be168c0dSopenharmony_ci+ 45be168c0dSopenharmony_ci for (auto kernel : kernels) { 46be168c0dSopenharmony_ci int ret = kernel->Execute(before, after); 47be168c0dSopenharmony_ci if (ret != RET_OK) { 48be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/nnacl/nnacl_reshape.cc b/mindspore/lite/src/litert/kernel/cpu/nnacl/nnacl_reshape.cc 49be168c0dSopenharmony_ciindex ef479364..ab7f2796 100644 50be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/kernel/cpu/nnacl/nnacl_reshape.cc 51be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/nnacl/nnacl_reshape.cc 52be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 53be168c0dSopenharmony_ci /** 54be168c0dSopenharmony_ci- * Copyright 2023 Huawei Technologies Co., Ltd 55be168c0dSopenharmony_ci+ * Copyright 2024 Huawei Technologies Co., Ltd 56be168c0dSopenharmony_ci * 57be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 58be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 59be168c0dSopenharmony_ci@@ -41,9 +41,13 @@ int ReshapeKernel::Run() { 60be168c0dSopenharmony_ci return RET_OK; 61be168c0dSopenharmony_ci } 62be168c0dSopenharmony_ci 63be168c0dSopenharmony_ci- if (in_tensor->data_type() != out_tensor->data_type() || in_tensor->data() == nullptr || 64be168c0dSopenharmony_ci- in_tensor->Size() != out_tensor->Size()) { 65be168c0dSopenharmony_ci- MS_LOG(ERROR) << "NNACL check reshape parameter failed. Kernel: " << name(); 66be168c0dSopenharmony_ci+ if (in_tensor->data_type() != out_tensor->data_type()) { 67be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "NNACL check in_tensor and out_tensor dtype failed. Kernel: " << name(); 68be168c0dSopenharmony_ci+ return RET_ERROR; 69be168c0dSopenharmony_ci+ } 70be168c0dSopenharmony_ci+ 71be168c0dSopenharmony_ci+ if (in_tensor->data() == nullptr || in_tensor->Size() != out_tensor->Size()) { 72be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "NNACL check in_tensor and out_tensor size failed, Kernel: " << name(); 73be168c0dSopenharmony_ci return RET_ERROR; 74be168c0dSopenharmony_ci } 75be168c0dSopenharmony_ci 76be168c0dSopenharmony_ci-- 77be168c0dSopenharmony_ci2.17.1 78be168c0dSopenharmony_ci 79