1be168c0dSopenharmony_ciFrom 9b1f17ffcb18cd58f796c9f30c0bc37e31347450 Mon Sep 17 00:00:00 2001 2be168c0dSopenharmony_ciFrom: zhangyanhui <zhangyanhui17@huawei.com> 3be168c0dSopenharmony_ciDate: Fri, 21 Jun 2024 16:08:21 +0800 4be168c0dSopenharmony_ciSubject: [PATCH] auto-apply 0002-train-and-build.patch 5be168c0dSopenharmony_ci 6be168c0dSopenharmony_ci--- 7be168c0dSopenharmony_ci .../plugin/device/cpu/kernel/nnacl/BUILD.gn | 16 +- 8be168c0dSopenharmony_ci mindspore/lite/BUILD.gn | 229 +++++++++++++++++- 9be168c0dSopenharmony_ci .../include/registry/opencl_runtime_wrapper.h | 2 +- 10be168c0dSopenharmony_ci mindspore/lite/src/litert/kernel/cpu/BUILD.gn | 1 + 11be168c0dSopenharmony_ci .../litert/kernel/cpu/fp32/oneslike_fp32.cc | 51 ++++ 12be168c0dSopenharmony_ci .../litert/kernel/cpu/fp32/oneslike_fp32.h | 46 ++++ 13be168c0dSopenharmony_ci mindspore/lite/src/litert/lite_model.h | 2 +- 14be168c0dSopenharmony_ci mindspore/lite/src/litert/lite_session.cc | 1 + 15be168c0dSopenharmony_ci mindspore/lite/src/litert/weight_decoder.h | 2 +- 16be168c0dSopenharmony_ci mindspore/lite/src/tensor.h | 2 +- 17be168c0dSopenharmony_ci mindspore/lite/src/tensorlist.h | 2 +- 18be168c0dSopenharmony_ci mindspore/lite/src/train/train_session.cc | 6 +- 19be168c0dSopenharmony_ci .../lite/tools/benchmark_train/net_train.h | 2 +- 20be168c0dSopenharmony_ci .../tools/converter/converter_metagraph.cc | 14 +- 21be168c0dSopenharmony_ci .../tools/converter/graphdef_transform.cc | 4 + 22be168c0dSopenharmony_ci .../legacy_optimizer/graph/CMakeLists.txt | 1 + 23be168c0dSopenharmony_ci .../legacy_optimizer/graph/node_name_pass.cc | 96 ++++++++ 24be168c0dSopenharmony_ci .../legacy_optimizer/graph/node_name_pass.h | 35 +++ 25be168c0dSopenharmony_ci 18 files changed, 493 insertions(+), 19 deletions(-) 26be168c0dSopenharmony_ci create mode 100644 mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.cc 27be168c0dSopenharmony_ci create mode 100644 mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.h 28be168c0dSopenharmony_ci create mode 100644 mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.cc 29be168c0dSopenharmony_ci create mode 100644 mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.h 30be168c0dSopenharmony_ci 31be168c0dSopenharmony_cidiff --git a/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/BUILD.gn b/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/BUILD.gn 32be168c0dSopenharmony_ciindex a1e7908e..7bbc3782 100644 33be168c0dSopenharmony_ci--- a/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/BUILD.gn 34be168c0dSopenharmony_ci+++ b/mindspore/ccsrc/plugin/device/cpu/kernel/nnacl/BUILD.gn 35be168c0dSopenharmony_ci@@ -714,7 +714,17 @@ arm32_assembly_sources = [ 36be168c0dSopenharmony_ci "assembly/arm32/WinogradTransRight.S", 37be168c0dSopenharmony_ci ] 38be168c0dSopenharmony_ci 39be168c0dSopenharmony_ci-fp16_assembly_sources = [ 40be168c0dSopenharmony_ci+arm32_fp16_assembly_sources = [ 41be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/Float16Tofloat32.S", 42be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/Float32ToFloat16.S", 43be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/Matmul12x8Fp16.S", 44be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/MatVecMulFp16.S", 45be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/TiledC4MatmulFp16.S", 46be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/WinogradTransLeft.S", 47be168c0dSopenharmony_ci+ "assembly/arm82_aarch32_fp16/WinogradTransRight.S", 48be168c0dSopenharmony_ci+] 49be168c0dSopenharmony_ci+ 50be168c0dSopenharmony_ci+arm64_fp16_assembly_sources = [ 51be168c0dSopenharmony_ci "assembly/fp16/CalculateMinMaxFp16Count8.S", 52be168c0dSopenharmony_ci "assembly/fp16/ConvDwFp16Border.S", 53be168c0dSopenharmony_ci "assembly/fp16/ConvDwFp16Center.S", 54be168c0dSopenharmony_ci@@ -839,11 +849,13 @@ nnacl_sources += infer_control_sources 55be168c0dSopenharmony_ci 56be168c0dSopenharmony_ci # source files on arm32 57be168c0dSopenharmony_ci arm_only_sources = arm32_assembly_sources 58be168c0dSopenharmony_ci+#arm_only_sources += arm32_fp16_assembly_sources 59be168c0dSopenharmony_ci+not_needed(arm32_fp16_assembly_sources) 60be168c0dSopenharmony_ci 61be168c0dSopenharmony_ci # source files on arm64 62be168c0dSopenharmony_ci arm64_only_sources = fp16_kernel_sources 63be168c0dSopenharmony_ci arm64_only_sources += fp16_grad_sources 64be168c0dSopenharmony_ci-arm64_only_sources += fp16_assembly_sources 65be168c0dSopenharmony_ci+arm64_only_sources += arm64_fp16_assembly_sources 66be168c0dSopenharmony_ci arm64_only_sources += arm64_assembly_sources 67be168c0dSopenharmony_ci arm64_only_sources += optimizing_assembly_sources 68be168c0dSopenharmony_ci arm64_only_sources += arm64_fp32_kernel_sources 69be168c0dSopenharmony_cidiff --git a/mindspore/lite/BUILD.gn b/mindspore/lite/BUILD.gn 70be168c0dSopenharmony_ciindex 6d83e6f9..8a492bf9 100644 71be168c0dSopenharmony_ci--- a/mindspore/lite/BUILD.gn 72be168c0dSopenharmony_ci+++ b/mindspore/lite/BUILD.gn 73be168c0dSopenharmony_ci@@ -74,10 +74,12 @@ import("//build/ohos.gni") 74be168c0dSopenharmony_ci ohos_group("mindspore") { 75be168c0dSopenharmony_ci deps = [ 76be168c0dSopenharmony_ci ":mindspore_lib", 77be168c0dSopenharmony_ci+ ":mindspore_train_lib", 78be168c0dSopenharmony_ci "mindir:mindir_lib", 79be168c0dSopenharmony_ci ] 80be168c0dSopenharmony_ci } 81be168c0dSopenharmony_ci 82be168c0dSopenharmony_ci+# Inference library 83be168c0dSopenharmony_ci cxx_api_sources = [ 84be168c0dSopenharmony_ci "src/litert/cxx_api/cell.cc", 85be168c0dSopenharmony_ci "src/litert/cxx_api/context.cc", 86be168c0dSopenharmony_ci@@ -429,7 +431,6 @@ ohos_shared_library("mindspore_lib") { 87be168c0dSopenharmony_ci SUPPORT_NNRT = true 88be168c0dSopenharmony_ci if (SUPPORT_NNRT) { 89be168c0dSopenharmony_ci sources += [ 90be168c0dSopenharmony_ci- # "mindir/src/mindir_nnrt_lite_graph.cc", 91be168c0dSopenharmony_ci "src/litert/delegate/nnrt/checker/primitive_check.cc", 92be168c0dSopenharmony_ci "src/litert/delegate/nnrt/nnrt_delegate.cc", 93be168c0dSopenharmony_ci "src/litert/delegate/nnrt/nnrt_model_kernel.cc", 94be168c0dSopenharmony_ci@@ -444,8 +445,9 @@ ohos_shared_library("mindspore_lib") { 95be168c0dSopenharmony_ci external_deps += [ "neural_network_runtime:nnrt_target" ] 96be168c0dSopenharmony_ci deps += [ "mindir:mindir_lib" ] 97be168c0dSopenharmony_ci defines += [ "SUPPORT_NNRT" ] 98be168c0dSopenharmony_ci- defines += [ "MSLITE_ENABLE_EXPERIMENTAL_KERNEL" ] 99be168c0dSopenharmony_ci } 100be168c0dSopenharmony_ci+ defines += [ "MSLITE_ENABLE_EXPERIMENTAL_KERNEL" ] 101be168c0dSopenharmony_ci+ defines += [ "SUPPORT_TRAIN" ] 102be168c0dSopenharmony_ci cflags_cc = [ 103be168c0dSopenharmony_ci "-Wno-ignored-qualifiers", 104be168c0dSopenharmony_ci "-Wunused-private-field", 105be168c0dSopenharmony_ci@@ -458,6 +460,225 @@ ohos_shared_library("mindspore_lib") { 106be168c0dSopenharmony_ci subsystem_name = "thirdparty" 107be168c0dSopenharmony_ci } 108be168c0dSopenharmony_ci 109be168c0dSopenharmony_ci+# Train library 110be168c0dSopenharmony_ci+expression_cxx_api_sources = [ 111be168c0dSopenharmony_ci+ "src/litert/cxx_api/expression/net.cc", 112be168c0dSopenharmony_ci+ "src/litert/cxx_api/expression/net_impl.cc", 113be168c0dSopenharmony_ci+ "src/litert/cxx_api/expression/node_impl.cc", 114be168c0dSopenharmony_ci+] 115be168c0dSopenharmony_ci+ 116be168c0dSopenharmony_ci+expression_op_sources = [ 117be168c0dSopenharmony_ci+ "src/expression/ops/activation.cc", 118be168c0dSopenharmony_ci+ "src/expression/ops/adam.cc", 119be168c0dSopenharmony_ci+ "src/expression/ops/addn.cc", 120be168c0dSopenharmony_ci+ "src/expression/ops/arithmetic.cc", 121be168c0dSopenharmony_ci+ "src/expression/ops/arithmetic_self.cc", 122be168c0dSopenharmony_ci+ "src/expression/ops/assign.cc", 123be168c0dSopenharmony_ci+ "src/expression/ops/batchnorm.cc", 124be168c0dSopenharmony_ci+ "src/expression/ops/biasadd.cc", 125be168c0dSopenharmony_ci+ "src/expression/ops/conv.cc", 126be168c0dSopenharmony_ci+ "src/expression/ops/dense.cc", 127be168c0dSopenharmony_ci+ "src/expression/ops/depend.cc", 128be168c0dSopenharmony_ci+ "src/expression/ops/dropout.cc", 129be168c0dSopenharmony_ci+ "src/expression/ops/flatten.cc", 130be168c0dSopenharmony_ci+ "src/expression/ops/pooling.cc", 131be168c0dSopenharmony_ci+ "src/expression/ops/reduce.cc", 132be168c0dSopenharmony_ci+ "src/expression/ops/reshape.cc", 133be168c0dSopenharmony_ci+ "src/expression/ops/softmax.cc", 134be168c0dSopenharmony_ci+ "src/expression/ops/softmaxCE.cc", 135be168c0dSopenharmony_ci+ "src/expression/ops/tile.cc", 136be168c0dSopenharmony_ci+ "src/expression/ops/transpose.cc", 137be168c0dSopenharmony_ci+] 138be168c0dSopenharmony_ci+ 139be168c0dSopenharmony_ci+all_expression_sources = [ 140be168c0dSopenharmony_ci+ "src/expression/export.cc", 141be168c0dSopenharmony_ci+ "src/expression/expr.cc", 142be168c0dSopenharmony_ci+ "src/expression/import.cc", 143be168c0dSopenharmony_ci+ "src/expression/net.cc", 144be168c0dSopenharmony_ci+ "src/expression/node.cc", 145be168c0dSopenharmony_ci+ "src/expression/ops.cc", 146be168c0dSopenharmony_ci+ "src/expression/ops_utils.cc", 147be168c0dSopenharmony_ci+ "src/expression/param.cc", 148be168c0dSopenharmony_ci+ "src/expression/sequential.cc", 149be168c0dSopenharmony_ci+] 150be168c0dSopenharmony_ci+ 151be168c0dSopenharmony_ci+all_expression_sources += expression_cxx_api_sources 152be168c0dSopenharmony_ci+all_expression_sources += expression_op_sources 153be168c0dSopenharmony_ci+ 154be168c0dSopenharmony_ci+all_train_sources = [ 155be168c0dSopenharmony_ci+ # ${API_TRAIN_SRC} is empty. 156be168c0dSopenharmony_ci+ # ${TRAIN_SRC_WITH_MD} is empty. 157be168c0dSopenharmony_ci+ "src/common/quant_utils.cc", 158be168c0dSopenharmony_ci+ "src/litert/cxx_api/metrics/accuracy.cc", 159be168c0dSopenharmony_ci+ "src/litert/cxx_api/train/model_build.cc", 160be168c0dSopenharmony_ci+ "src/litert/cxx_api/train/model_build_impl.cc", 161be168c0dSopenharmony_ci+ "src/litert/cxx_api/train/converters.cc", 162be168c0dSopenharmony_ci+ "src/litert/cxx_api/train/train_support.cc", 163be168c0dSopenharmony_ci+ "src/train/train_populate_parameter.cc", 164be168c0dSopenharmony_ci+ "src/train/train_session.cc", 165be168c0dSopenharmony_ci+ "src/train/graph_fusion.cc", 166be168c0dSopenharmony_ci+ "src/train/graph_dropout.cc", 167be168c0dSopenharmony_ci+ "src/train/transfer_session.cc", 168be168c0dSopenharmony_ci+ "src/train/train_utils.cc", 169be168c0dSopenharmony_ci+ "src/train/loss_monitor.cc", 170be168c0dSopenharmony_ci+ "src/train/lr_scheduler.cc", 171be168c0dSopenharmony_ci+ "src/train/accuracy_metrics.cc", 172be168c0dSopenharmony_ci+# "src/train/accuracy_monitor.cc", # depends on minddata header, not compiled 173be168c0dSopenharmony_ci+ "src/train/classification_train_accuracy_monitor.cc", 174be168c0dSopenharmony_ci+ "src/train/train_export.cc", 175be168c0dSopenharmony_ci+ "src/train/opt_allocator.cc", 176be168c0dSopenharmony_ci+ "src/train/optimizer/common/fusion_utils.cc", 177be168c0dSopenharmony_ci+ "src/train/optimizer/fusion/matmul_activation_fusion_pass.cc", 178be168c0dSopenharmony_ci+ "src/train/optimizer/fusion/reshape_gather_reshape_fusion_pass.cc", 179be168c0dSopenharmony_ci+ "src/train/optimizer/fusion/gru_fusion_pass.cc", 180be168c0dSopenharmony_ci+ "src/common/storage.cc", 181be168c0dSopenharmony_ci+ "tools/converter/optimizer.cc", 182be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/fusion/fusion_pass.cc", 183be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/fusion/fusion_pattern.cc", 184be168c0dSopenharmony_ci+ "tools/common/meta_graph_utils.cc", 185be168c0dSopenharmony_ci+ "tools/common/statistic_utils.cc", 186be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/fusion/matmul_biasadd_fusion_pass.cc", 187be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/graph/dropout_node_remove_pass.cc", 188be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/graph/isolated_node_remove_pass.cc", 189be168c0dSopenharmony_ci+ "tools/converter/legacy_optimizer/graph/subgraph_node_pass.cc", 190be168c0dSopenharmony_ci+] 191be168c0dSopenharmony_ci+ 192be168c0dSopenharmony_ci+all_train_sources += all_expression_sources 193be168c0dSopenharmony_ci+ 194be168c0dSopenharmony_ci+fp16_train_kernel_sources = [ 195be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/activation_fp16_grad.cc", 196be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/arithmetic_fp16_grad.cc", 197be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/arithmetic_fp16_self_grad.cc", 198be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/bias_fp16_grad.cc", 199be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/bn_fp16_grad.cc", 200be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/convolution_fp16_grad_filter.cc", 201be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/convolution_fp16_grad_input.cc", 202be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/dropout_fp16_grad.cc", 203be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/layernorm_fp16_grad.cc", 204be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/neg_fp16_grad.cc", 205be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/pooling_fp16_grad.cc", 206be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/resize_fp16_grad.cc", 207be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/strided_slice_fp16_grad.cc", 208be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp16_grad/unsorted_segment_sum_fp16.cc", 209be168c0dSopenharmony_ci+] 210be168c0dSopenharmony_ci+ 211be168c0dSopenharmony_ci+fp32_train_kernel_sources = [ 212be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/activation_grad.cc", 213be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/adam.cc", 214be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/adam_weight_decay.cc", 215be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/apply_momentum.cc", 216be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/arithmetic_grad.cc", 217be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/arithmetic_self_grad.cc", 218be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/assign.cc", 219be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/bias_grad.cc", 220be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/bn_grad.cc", 221be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/convolution.cc", 222be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/convolution_grad_filter.cc", 223be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/convolution_grad_input.cc", 224be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/deconvolution_grad_filter.cc", 225be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/dropout.cc", 226be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/dropout_grad.cc", 227be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/layernorm_grad.cc", 228be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/lstm_grad_data_fp32.cc", 229be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/lstm_grad_fp32.cc", 230be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/lstm_grad_weight_fp32.cc", 231be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/neg_grad.cc", 232be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/nllloss_grad.cc", 233be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/pooling_grad.cc", 234be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/power_grad.cc", 235be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/resize_grad.cc", 236be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/sgd.cc", 237be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/sigmoid_cross_entropy_with_logits.cc", 238be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/sigmoid_cross_entropy_with_logits_grad.cc", 239be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/smooth_l1_loss.cc", 240be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/smooth_l1_loss_grad.cc", 241be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/softmax_cross_entropy_with_logits.cc", 242be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/softmax_grad.cc", 243be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/sparse_softmax_cross_entropy_with_logits.cc", 244be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/strided_slice_grad.cc", 245be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/unsorted_segment_sum.cc", 246be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/binary_cross_entropy.cc", 247be168c0dSopenharmony_ci+ "src/litert/kernel/cpu/fp32_grad/binary_cross_entropy_grad.cc", 248be168c0dSopenharmony_ci+] 249be168c0dSopenharmony_ci+ 250be168c0dSopenharmony_ci+#all_train_sources += fp16_train_kernel_sources 251be168c0dSopenharmony_ci+not_needed(fp16_train_kernel_sources) 252be168c0dSopenharmony_ci+all_train_sources += fp32_train_kernel_sources 253be168c0dSopenharmony_ci+ 254be168c0dSopenharmony_ci+ohos_shared_library("mindspore_train_lib") { 255be168c0dSopenharmony_ci+ deps = [ 256be168c0dSopenharmony_ci+ ":mindspore_lib", 257be168c0dSopenharmony_ci+ ] 258be168c0dSopenharmony_ci+ 259be168c0dSopenharmony_ci+ sources = all_train_sources 260be168c0dSopenharmony_ci+ 261be168c0dSopenharmony_ci+ include_dirs = [ 262be168c0dSopenharmony_ci+ "//base/hiviewdfx/hilog/interfaces/native/innerkits/include", 263be168c0dSopenharmony_ci+ "//third_party/flatbuffers/include", 264be168c0dSopenharmony_ci+ "./", 265be168c0dSopenharmony_ci+ "../", 266be168c0dSopenharmony_ci+ "../../", 267be168c0dSopenharmony_ci+ "../core", 268be168c0dSopenharmony_ci+ "src", 269be168c0dSopenharmony_ci+ "src/c_api/", 270be168c0dSopenharmony_ci+ "../ccsrc/plugin/device/cpu/kernel/", 271be168c0dSopenharmony_ci+ "../core/mindrt/src/", 272be168c0dSopenharmony_ci+ "../core/mindrt/include/", 273be168c0dSopenharmony_ci+ "../../third_party/", 274be168c0dSopenharmony_ci+ "./schema/", 275be168c0dSopenharmony_ci+ "../ccsrc/", 276be168c0dSopenharmony_ci+ ] 277be168c0dSopenharmony_ci+ 278be168c0dSopenharmony_ci+ defines = [ 279be168c0dSopenharmony_ci+ "ENABLE_MINDRT", 280be168c0dSopenharmony_ci+ "MS_COMPILE_OHOS", 281be168c0dSopenharmony_ci+ "PRIMITIVE_WRITEABLE", 282be168c0dSopenharmony_ci+ "VERSION_STR=\"2.1.0\"", 283be168c0dSopenharmony_ci+ ] 284be168c0dSopenharmony_ci+ 285be168c0dSopenharmony_ci+ if (target_cpu == "arm") { 286be168c0dSopenharmony_ci+ defines += [ 287be168c0dSopenharmony_ci+ "ENABLE_ARM", 288be168c0dSopenharmony_ci+ "ENABLE_ARM32", 289be168c0dSopenharmony_ci+ "ENABLE_NEON", 290be168c0dSopenharmony_ci+ ] 291be168c0dSopenharmony_ci+ } else if (target_cpu == "arm64") { 292be168c0dSopenharmony_ci+ defines += [ 293be168c0dSopenharmony_ci+ "ENABLE_ARM", 294be168c0dSopenharmony_ci+ "ENABLE_ARM64", 295be168c0dSopenharmony_ci+ "ENABLE_NEON", 296be168c0dSopenharmony_ci+ "ENABLE_FP16", 297be168c0dSopenharmony_ci+ "USE_OPENCL_WRAPPER", 298be168c0dSopenharmony_ci+ "MS_OPENCL_PROFILE=false", 299be168c0dSopenharmony_ci+ "CL_TARGET_OPENCL_VERSION=200", 300be168c0dSopenharmony_ci+ "CL_HPP_TARGET_OPENCL_VERSION=120", 301be168c0dSopenharmony_ci+ "CL_HPP_MINIMUM_OPENCL_VERSION=120", 302be168c0dSopenharmony_ci+ ] 303be168c0dSopenharmony_ci+ } 304be168c0dSopenharmony_ci+ configs = [ 305be168c0dSopenharmony_ci+ ":mindspore_api", 306be168c0dSopenharmony_ci+ ":disable_android", 307be168c0dSopenharmony_ci+ ":train_kernel_option", 308be168c0dSopenharmony_ci+ ] 309be168c0dSopenharmony_ci+ 310be168c0dSopenharmony_ci+ remove_configs = [ "//build/config/compiler:no_rtti" ] 311be168c0dSopenharmony_ci+ external_deps = [ "hilog:libhilog" ] 312be168c0dSopenharmony_ci+ innerapi_tags = [ "platformsdk" ] 313be168c0dSopenharmony_ci+ output_name = "libmindspore-lite-train" 314be168c0dSopenharmony_ci+ output_extension = "so" 315be168c0dSopenharmony_ci+ defines += [ "SUPPORT_TRAIN" ] 316be168c0dSopenharmony_ci+ cflags_cc = [ 317be168c0dSopenharmony_ci+ "-Wno-ignored-qualifiers", 318be168c0dSopenharmony_ci+ "-Wunused-private-field", 319be168c0dSopenharmony_ci+ "-Wno-unused-private-field", 320be168c0dSopenharmony_ci+ "-Wno-inconsistent-missing-override", 321be168c0dSopenharmony_ci+ "-Wno-macro-redefined", 322be168c0dSopenharmony_ci+ "-Wno-constant-conversion", 323be168c0dSopenharmony_ci+ ] 324be168c0dSopenharmony_ci+ part_name = "mindspore" 325be168c0dSopenharmony_ci+} 326be168c0dSopenharmony_ci+ 327be168c0dSopenharmony_ci+# Build configurations 328be168c0dSopenharmony_ci config("opencl_option") { 329be168c0dSopenharmony_ci cflags_cc = [ "-Wno-missing-braces" ] 330be168c0dSopenharmony_ci } 331be168c0dSopenharmony_ci@@ -482,3 +703,7 @@ config("disable_android") { 332be168c0dSopenharmony_ci config("secure_option") { 333be168c0dSopenharmony_ci cflags = [ "-fstack-protector-all" ] 334be168c0dSopenharmony_ci } 335be168c0dSopenharmony_ci+ 336be168c0dSopenharmony_ci+config("train_kernel_option") { 337be168c0dSopenharmony_ci+ cflags_cc = [ "-fno-finite-math-only" ] 338be168c0dSopenharmony_ci+} 339be168c0dSopenharmony_cidiff --git a/mindspore/lite/include/registry/opencl_runtime_wrapper.h b/mindspore/lite/include/registry/opencl_runtime_wrapper.h 340be168c0dSopenharmony_ciindex fb647d37..b55554e4 100644 341be168c0dSopenharmony_ci--- a/mindspore/lite/include/registry/opencl_runtime_wrapper.h 342be168c0dSopenharmony_ci+++ b/mindspore/lite/include/registry/opencl_runtime_wrapper.h 343be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 344be168c0dSopenharmony_ci /** 345be168c0dSopenharmony_ci- * Copyright 2021 Huawei Technologies Co., Ltd 346be168c0dSopenharmony_ci+ * Copyright 2021-2023 Huawei Technologies Co., Ltd 347be168c0dSopenharmony_ci * 348be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 349be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 350be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/BUILD.gn b/mindspore/lite/src/litert/kernel/cpu/BUILD.gn 351be168c0dSopenharmony_ciindex b34e0427..48308425 100644 352be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/kernel/cpu/BUILD.gn 353be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/BUILD.gn 354be168c0dSopenharmony_ci@@ -112,6 +112,7 @@ cpu_kernel_sources = [ 355be168c0dSopenharmony_ci "fp32/uniform_real_fp32.cc", 356be168c0dSopenharmony_ci "fp32/unstack_fp32.cc", 357be168c0dSopenharmony_ci "fp32/where_fp32.cc", 358be168c0dSopenharmony_ci+ "fp32/oneslike_fp32.cc", 359be168c0dSopenharmony_ci "fp32/online_fusion/cast_gather_reduce_fp32.cc", 360be168c0dSopenharmony_ci "fp32/online_fusion/reduce_concat_fp32.cc", 361be168c0dSopenharmony_ci "fp32/online_fusion/split_reduce_concat_fp32.cc", 362be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.cc b/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.cc 363be168c0dSopenharmony_cinew file mode 100644 364be168c0dSopenharmony_ciindex 00000000..b4c3bf7e 365be168c0dSopenharmony_ci--- /dev/null 366be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.cc 367be168c0dSopenharmony_ci@@ -0,0 +1,51 @@ 368be168c0dSopenharmony_ci+/** 369be168c0dSopenharmony_ci+ * Copyright 2022 Huawei Technologies Co., Ltd 370be168c0dSopenharmony_ci+ * 371be168c0dSopenharmony_ci+ * Licensed under the Apache License, Version 2.0 (the "License"); 372be168c0dSopenharmony_ci+ * you may not use this file except in compliance with the License. 373be168c0dSopenharmony_ci+ * You may obtain a copy of the License at 374be168c0dSopenharmony_ci+ * 375be168c0dSopenharmony_ci+ * http://www.apache.org/licenses/LICENSE-2.0 376be168c0dSopenharmony_ci+ * 377be168c0dSopenharmony_ci+ * Unless required by applicable law or agreed to in writing, software 378be168c0dSopenharmony_ci+ * distributed under the License is distributed on an "AS IS" BASIS, 379be168c0dSopenharmony_ci+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 380be168c0dSopenharmony_ci+ * See the License for the specific language governing permissions and 381be168c0dSopenharmony_ci+ * limitations under the License. 382be168c0dSopenharmony_ci+ */ 383be168c0dSopenharmony_ci+ 384be168c0dSopenharmony_ci+#include "src/litert/kernel/cpu/fp32/oneslike_fp32.h" 385be168c0dSopenharmony_ci+#include "schema/model_generated.h" 386be168c0dSopenharmony_ci+#include "src/litert/kernel_registry.h" 387be168c0dSopenharmony_ci+#include "include/errorcode.h" 388be168c0dSopenharmony_ci+ 389be168c0dSopenharmony_ci+using mindspore::kernel::KERNEL_ARCH; 390be168c0dSopenharmony_ci+using mindspore::lite::KernelRegistrar; 391be168c0dSopenharmony_ci+using mindspore::lite::RET_ERROR; 392be168c0dSopenharmony_ci+using mindspore::lite::RET_OK; 393be168c0dSopenharmony_ci+using mindspore::schema::PrimitiveType_OnesLike; 394be168c0dSopenharmony_ci+ 395be168c0dSopenharmony_ci+namespace mindspore::kernel { 396be168c0dSopenharmony_ci+int OnesLikeCPUKernel::Prepare() { 397be168c0dSopenharmony_ci+ CHECK_LESS_RETURN(in_tensors_.size(), 1); 398be168c0dSopenharmony_ci+ CHECK_LESS_RETURN(out_tensors_.size(), 1); 399be168c0dSopenharmony_ci+ return RET_OK; 400be168c0dSopenharmony_ci+} 401be168c0dSopenharmony_ci+ 402be168c0dSopenharmony_ci+int OnesLikeCPUKernel::Run() { 403be168c0dSopenharmony_ci+ auto output = out_tensors_[0]; 404be168c0dSopenharmony_ci+ CHECK_NULL_RETURN(output); 405be168c0dSopenharmony_ci+ if (output->data_type() == kNumberTypeInt32) { 406be168c0dSopenharmony_ci+ ApproximateOnesLike(static_cast<int *>(output->data()), output->ElementsNum()); 407be168c0dSopenharmony_ci+ } else if (output->data_type() == kNumberTypeFloat32) { 408be168c0dSopenharmony_ci+ ApproximateOnesLike(static_cast<float *>(output->data()), output->ElementsNum()); 409be168c0dSopenharmony_ci+ } 410be168c0dSopenharmony_ci+ return RET_OK; 411be168c0dSopenharmony_ci+} 412be168c0dSopenharmony_ci+ 413be168c0dSopenharmony_ci+REG_KERNEL(kCPU, kNumberTypeInt32, PrimitiveType_OnesLike, LiteKernelCreator<OnesLikeCPUKernel>) 414be168c0dSopenharmony_ci+REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_OnesLike, LiteKernelCreator<OnesLikeCPUKernel>) 415be168c0dSopenharmony_ci+#ifdef ENABLE_FP16 416be168c0dSopenharmony_ci+REG_KERNEL(kCPU, kNumberTypeFloat16, PrimitiveType_OnesLike, LiteKernelCreator<OnesLikeCPUKernel>) 417be168c0dSopenharmony_ci+#endif 418be168c0dSopenharmony_ci+} // namespace mindspore::kernel 419be168c0dSopenharmony_ci\ No newline at end of file 420be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.h b/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.h 421be168c0dSopenharmony_cinew file mode 100644 422be168c0dSopenharmony_ciindex 00000000..f90aebed 423be168c0dSopenharmony_ci--- /dev/null 424be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/kernel/cpu/fp32/oneslike_fp32.h 425be168c0dSopenharmony_ci@@ -0,0 +1,46 @@ 426be168c0dSopenharmony_ci+/** 427be168c0dSopenharmony_ci+ * Copyright 2022 Huawei Technologies Co., Ltd 428be168c0dSopenharmony_ci+ * 429be168c0dSopenharmony_ci+ * Licensed under the Apache License, Version 2.0 (the "License"); 430be168c0dSopenharmony_ci+ * you may not use this file except in compliance with the License. 431be168c0dSopenharmony_ci+ * You may obtain a copy of the License at 432be168c0dSopenharmony_ci+ * 433be168c0dSopenharmony_ci+ * http://www.apache.org/licenses/LICENSE-2.0 434be168c0dSopenharmony_ci+ * 435be168c0dSopenharmony_ci+ * Unless required by applicable law or agreed to in writing, software 436be168c0dSopenharmony_ci+ * distributed under the License is distributed on an "AS IS" BASIS, 437be168c0dSopenharmony_ci+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 438be168c0dSopenharmony_ci+ * See the License for the specific language governing permissions and 439be168c0dSopenharmony_ci+ * limitations under the License. 440be168c0dSopenharmony_ci+ */ 441be168c0dSopenharmony_ci+#ifndef MINDSPORE_LITE_SRC_RUNTIME_KERNEL_CPU_FP32_ONESLike_FP32_H_ 442be168c0dSopenharmony_ci+#define MINDSPORE_LITE_SRC_RUNTIME_KERNEL_CPU_FP32_ONESLike_FP32_H_ 443be168c0dSopenharmony_ci+ 444be168c0dSopenharmony_ci+#include <vector> 445be168c0dSopenharmony_ci+#include "src/litert/lite_kernel.h" 446be168c0dSopenharmony_ci+ 447be168c0dSopenharmony_ci+namespace mindspore::kernel { 448be168c0dSopenharmony_ci+class OnesLikeCPUKernel : public LiteKernel { 449be168c0dSopenharmony_ci+ public: 450be168c0dSopenharmony_ci+ OnesLikeCPUKernel(OpParameter *parameter, const std::vector<lite::Tensor *> &inputs, 451be168c0dSopenharmony_ci+ const std::vector<lite::Tensor *> &outputs, const lite::InnerContext *ctx) 452be168c0dSopenharmony_ci+ : LiteKernel(parameter, inputs, outputs, ctx) {} 453be168c0dSopenharmony_ci+ 454be168c0dSopenharmony_ci+ ~OnesLikeCPUKernel() = default; 455be168c0dSopenharmony_ci+ 456be168c0dSopenharmony_ci+ int Prepare() override; 457be168c0dSopenharmony_ci+ int ReSize() override { return lite::RET_OK; } 458be168c0dSopenharmony_ci+ int Run() override; 459be168c0dSopenharmony_ci+ 460be168c0dSopenharmony_ci+ private: 461be168c0dSopenharmony_ci+ template <typename T> 462be168c0dSopenharmony_ci+ void ApproximateOnesLike(T *output, int data_size) { 463be168c0dSopenharmony_ci+ for (int i = 0; i < data_size; ++i) { 464be168c0dSopenharmony_ci+ output[i] = 1; 465be168c0dSopenharmony_ci+ } 466be168c0dSopenharmony_ci+ return; 467be168c0dSopenharmony_ci+ } 468be168c0dSopenharmony_ci+}; 469be168c0dSopenharmony_ci+} // namespace mindspore::kernel 470be168c0dSopenharmony_ci+ 471be168c0dSopenharmony_ci+#endif // MINDSPORE_LITE_SRC_RUNTIME_KERNEL_CPU_FP32_ONESLike_FP32_H_ 472be168c0dSopenharmony_ci\ No newline at end of file 473be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/lite_model.h b/mindspore/lite/src/litert/lite_model.h 474be168c0dSopenharmony_ciindex 2b5422fa..635b529a 100644 475be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/lite_model.h 476be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/lite_model.h 477be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 478be168c0dSopenharmony_ci /** 479be168c0dSopenharmony_ci- * Copyright 2020 Huawei Technologies Co., Ltd 480be168c0dSopenharmony_ci+ * Copyright 2020-2023 Huawei Technologies Co., Ltd 481be168c0dSopenharmony_ci * 482be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 483be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 484be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/lite_session.cc b/mindspore/lite/src/litert/lite_session.cc 485be168c0dSopenharmony_ciindex ded4d761..8f54879e 100644 486be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/lite_session.cc 487be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/lite_session.cc 488be168c0dSopenharmony_ci@@ -2022,6 +2022,7 @@ int lite::LiteSession::LoadModelAndCompileByPath(const std::string &model_path, 489be168c0dSopenharmony_ci delete model; 490be168c0dSopenharmony_ci return RET_ERROR; 491be168c0dSopenharmony_ci } 492be168c0dSopenharmony_ci+ model->Free(); 493be168c0dSopenharmony_ci set_model(model); 494be168c0dSopenharmony_ci return RET_OK; 495be168c0dSopenharmony_ci } 496be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/litert/weight_decoder.h b/mindspore/lite/src/litert/weight_decoder.h 497be168c0dSopenharmony_ciindex 9afaca55..9fbcefde 100644 498be168c0dSopenharmony_ci--- a/mindspore/lite/src/litert/weight_decoder.h 499be168c0dSopenharmony_ci+++ b/mindspore/lite/src/litert/weight_decoder.h 500be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 501be168c0dSopenharmony_ci /** 502be168c0dSopenharmony_ci- * Copyright 2020-2022 Huawei Technologies Co., Ltd 503be168c0dSopenharmony_ci+ * Copyright 2020-2023 Huawei Technologies Co., Ltd 504be168c0dSopenharmony_ci * 505be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 506be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 507be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/tensor.h b/mindspore/lite/src/tensor.h 508be168c0dSopenharmony_ciindex 838892cf..f2eb4d1a 100644 509be168c0dSopenharmony_ci--- a/mindspore/lite/src/tensor.h 510be168c0dSopenharmony_ci+++ b/mindspore/lite/src/tensor.h 511be168c0dSopenharmony_ci@@ -69,7 +69,7 @@ enum CompressType { 512be168c0dSopenharmony_ci kFSEInfer = 6 513be168c0dSopenharmony_ci }; 514be168c0dSopenharmony_ci 515be168c0dSopenharmony_ci-class Tensor { 516be168c0dSopenharmony_ci+class MS_API Tensor { 517be168c0dSopenharmony_ci public: 518be168c0dSopenharmony_ci Tensor() { tensor_c_ = {false, kTypeUnknown, NHWC, VarTensor, nullptr, 0}; } 519be168c0dSopenharmony_ci 520be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/tensorlist.h b/mindspore/lite/src/tensorlist.h 521be168c0dSopenharmony_ciindex bdfdda02..6925cc95 100644 522be168c0dSopenharmony_ci--- a/mindspore/lite/src/tensorlist.h 523be168c0dSopenharmony_ci+++ b/mindspore/lite/src/tensorlist.h 524be168c0dSopenharmony_ci@@ -56,7 +56,7 @@ namespace mindspore::lite { 525be168c0dSopenharmony_ci * 526be168c0dSopenharmony_ci * See the code for other constructors. 527be168c0dSopenharmony_ci */ 528be168c0dSopenharmony_ci-class TensorList : public Tensor { 529be168c0dSopenharmony_ci+class MS_API TensorList : public Tensor { 530be168c0dSopenharmony_ci public: 531be168c0dSopenharmony_ci TensorList() { tensor_list_c_ = {false, kObjectTypeTensorType, DEFAULT_FORMAT, 0, kTypeUnknown, -1, nullptr, 0, 0}; } 532be168c0dSopenharmony_ci 533be168c0dSopenharmony_cidiff --git a/mindspore/lite/src/train/train_session.cc b/mindspore/lite/src/train/train_session.cc 534be168c0dSopenharmony_ciindex ef3c71f3..ce6a6437 100644 535be168c0dSopenharmony_ci--- a/mindspore/lite/src/train/train_session.cc 536be168c0dSopenharmony_ci+++ b/mindspore/lite/src/train/train_session.cc 537be168c0dSopenharmony_ci@@ -248,8 +248,8 @@ static int ReshapeWeightTensor(Tensor *orig_tensor, lite::Tensor *new_tensor) { 538be168c0dSopenharmony_ci 539be168c0dSopenharmony_ci int TrainSession::UpdateWeights(std::vector<lite::Tensor *> modify_tensors) { 540be168c0dSopenharmony_ci unsigned int num_of_found_tensors = 0; 541be168c0dSopenharmony_ci- for (auto tensor : tensors_) { 542be168c0dSopenharmony_ci- for (auto modify : modify_tensors) { 543be168c0dSopenharmony_ci+ for (auto modify : modify_tensors) { 544be168c0dSopenharmony_ci+ for (auto tensor : tensors_) { 545be168c0dSopenharmony_ci if (modify == nullptr) { 546be168c0dSopenharmony_ci MS_LOG(ERROR) << "Tensor is nullptr"; 547be168c0dSopenharmony_ci return RET_PARAM_INVALID; 548be168c0dSopenharmony_ci@@ -1346,7 +1346,7 @@ int TrainSession::ExportWeightsCollaborateWithMicro(const std::string &file_name 549be168c0dSopenharmony_ci std::vector<lite::Tensor *> TrainSession::GetFeatureMaps() const { 550be168c0dSopenharmony_ci std::vector<lite::Tensor *> features; 551be168c0dSopenharmony_ci for (auto cur_tensor : this->tensors_) { 552be168c0dSopenharmony_ci- if (cur_tensor->IsConst() && cur_tensor->data_type() == kNumberTypeFloat32) { 553be168c0dSopenharmony_ci+ if (cur_tensor->category() == lite::Category::CONST_TENSOR && cur_tensor->data_type() == kNumberTypeFloat32) { 554be168c0dSopenharmony_ci features.push_back(cur_tensor); 555be168c0dSopenharmony_ci } 556be168c0dSopenharmony_ci } 557be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/benchmark_train/net_train.h b/mindspore/lite/tools/benchmark_train/net_train.h 558be168c0dSopenharmony_ciindex 43853e99..67e58a04 100644 559be168c0dSopenharmony_ci--- a/mindspore/lite/tools/benchmark_train/net_train.h 560be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/benchmark_train/net_train.h 561be168c0dSopenharmony_ci@@ -1,5 +1,5 @@ 562be168c0dSopenharmony_ci /** 563be168c0dSopenharmony_ci- * Copyright 2020 Huawei Technologies Co., Ltd 564be168c0dSopenharmony_ci+ * Copyright 2020-2023 Huawei Technologies Co., Ltd 565be168c0dSopenharmony_ci * 566be168c0dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 567be168c0dSopenharmony_ci * you may not use this file except in compliance with the License. 568be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/converter/converter_metagraph.cc b/mindspore/lite/tools/converter/converter_metagraph.cc 569be168c0dSopenharmony_ciindex 6ffff71c..46a66128 100644 570be168c0dSopenharmony_ci--- a/mindspore/lite/tools/converter/converter_metagraph.cc 571be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/converter/converter_metagraph.cc 572be168c0dSopenharmony_ci@@ -104,12 +104,14 @@ schema::MetaGraphT *ConverterToMetaGraph::Build(const std::shared_ptr<ConverterP 573be168c0dSopenharmony_ci return nullptr; 574be168c0dSopenharmony_ci } 575be168c0dSopenharmony_ci 576be168c0dSopenharmony_ci- // output name will be modified by Transform 577be168c0dSopenharmony_ci- status = UpdateMetaGraphOutputName(meta_graph, output_tensor_name); 578be168c0dSopenharmony_ci- if (status != RET_OK) { 579be168c0dSopenharmony_ci- MS_LOG(ERROR) << "UpdateGraphOutputName failed."; 580be168c0dSopenharmony_ci- delete meta_graph; 581be168c0dSopenharmony_ci- return nullptr; 582be168c0dSopenharmony_ci+ if (!param->train_model) { 583be168c0dSopenharmony_ci+ // output name will be modified by Transform 584be168c0dSopenharmony_ci+ status = UpdateMetaGraphOutputName(meta_graph, output_tensor_name); 585be168c0dSopenharmony_ci+ if (status != RET_OK) { 586be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "UpdateGraphOutputName failed."; 587be168c0dSopenharmony_ci+ delete meta_graph; 588be168c0dSopenharmony_ci+ return nullptr; 589be168c0dSopenharmony_ci+ } 590be168c0dSopenharmony_ci } 591be168c0dSopenharmony_ci 592be168c0dSopenharmony_ci return meta_graph; 593be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/converter/graphdef_transform.cc b/mindspore/lite/tools/converter/graphdef_transform.cc 594be168c0dSopenharmony_ciindex d571b532..90b744e5 100644 595be168c0dSopenharmony_ci--- a/mindspore/lite/tools/converter/graphdef_transform.cc 596be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/converter/graphdef_transform.cc 597be168c0dSopenharmony_ci@@ -26,6 +26,7 @@ 598be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/dropout_node_remove_pass.h" 599be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/topological_sort_pass.h" 600be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/tensor_name_pass.h" 601be168c0dSopenharmony_ci+#include "tools/converter/legacy_optimizer/graph/node_name_pass.h" 602be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/set_unused_quant_param_to_default_pass.h" 603be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/convert_fp32_to_fp16_pass.h" 604be168c0dSopenharmony_ci #include "tools/converter/legacy_optimizer/graph/subgraph_node_pass.h" 605be168c0dSopenharmony_ci@@ -136,6 +137,9 @@ int GraphDefTransform::Transform(const std::shared_ptr<ConverterPara> ¶m) { 606be168c0dSopenharmony_ci Optimizer forming_model_optimizer; 607be168c0dSopenharmony_ci forming_model_optimizer.AddPass(new (std::nothrow) InferShapePass(param->fmk_type)); 608be168c0dSopenharmony_ci forming_model_optimizer.AddPass(new (std::nothrow) SetUnusedQuantParamToDefaultPass(param)); 609be168c0dSopenharmony_ci+ if (param->train_model) { 610be168c0dSopenharmony_ci+ forming_model_optimizer.AddPass(new (std::nothrow) NodeNamePass()); 611be168c0dSopenharmony_ci+ } 612be168c0dSopenharmony_ci forming_model_optimizer.AddPass(new (std::nothrow) TensorNamePass()); 613be168c0dSopenharmony_ci forming_model_optimizer.AddPass(new (std::nothrow) ConvertFP32ToFP16Pass(param->weight_fp16)); 614be168c0dSopenharmony_ci status = forming_model_optimizer.Run(graph_defT_); 615be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/converter/legacy_optimizer/graph/CMakeLists.txt b/mindspore/lite/tools/converter/legacy_optimizer/graph/CMakeLists.txt 616be168c0dSopenharmony_ciindex 9b16f4f8..30bccbde 100644 617be168c0dSopenharmony_ci--- a/mindspore/lite/tools/converter/legacy_optimizer/graph/CMakeLists.txt 618be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/converter/legacy_optimizer/graph/CMakeLists.txt 619be168c0dSopenharmony_ci@@ -9,6 +9,7 @@ file(GLOB GRAPH_PASS 620be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/convert_fp32_to_fp16_pass.cc 621be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/set_unused_quant_param_to_default_pass.cc 622be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/tensor_name_pass.cc 623be168c0dSopenharmony_ci+ ${CMAKE_CURRENT_SOURCE_DIR}/node_name_pass.cc 624be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/subgraph_node_pass.cc 625be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/subgraph_tensor_pass.cc 626be168c0dSopenharmony_ci ${CMAKE_CURRENT_SOURCE_DIR}/const_node_reorder_pass.cc 627be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.cc b/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.cc 628be168c0dSopenharmony_cinew file mode 100644 629be168c0dSopenharmony_ciindex 00000000..712927b0 630be168c0dSopenharmony_ci--- /dev/null 631be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.cc 632be168c0dSopenharmony_ci@@ -0,0 +1,96 @@ 633be168c0dSopenharmony_ci+/** 634be168c0dSopenharmony_ci+ * Copyright 2022 Huawei Technologies Co., Ltd 635be168c0dSopenharmony_ci+ * 636be168c0dSopenharmony_ci+ * Licensed under the Apache License, Version 2.0 (the "License"); 637be168c0dSopenharmony_ci+ * you may not use this file except in compliance with the License. 638be168c0dSopenharmony_ci+ * You may obtain a copy of the License at 639be168c0dSopenharmony_ci+ * 640be168c0dSopenharmony_ci+ * http://www.apache.org/licenses/LICENSE-2.0 641be168c0dSopenharmony_ci+ * 642be168c0dSopenharmony_ci+ * Unless required by applicable law or agreed to in writing, software 643be168c0dSopenharmony_ci+ * distributed under the License is distributed on an "AS IS" BASIS, 644be168c0dSopenharmony_ci+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 645be168c0dSopenharmony_ci+ * See the License for the specific language governing permissions and 646be168c0dSopenharmony_ci+ * limitations under the License. 647be168c0dSopenharmony_ci+ */ 648be168c0dSopenharmony_ci+ 649be168c0dSopenharmony_ci+#include "tools/converter/legacy_optimizer/graph/node_name_pass.h" 650be168c0dSopenharmony_ci+#include <string> 651be168c0dSopenharmony_ci+#include <vector> 652be168c0dSopenharmony_ci+#include "tools/converter/converter_context.h" 653be168c0dSopenharmony_ci+ 654be168c0dSopenharmony_ci+namespace mindspore::lite { 655be168c0dSopenharmony_ci+std::string CutShortName(const std::string &fullname, const std::string &delimiter) { 656be168c0dSopenharmony_ci+ size_t end_pos = fullname.find_last_of(delimiter); 657be168c0dSopenharmony_ci+ std::string name = ""; 658be168c0dSopenharmony_ci+ if (end_pos != std::string::npos) { 659be168c0dSopenharmony_ci+ name = fullname.substr(end_pos + 1); 660be168c0dSopenharmony_ci+ } 661be168c0dSopenharmony_ci+ if ((fullname.find("op") != std::string::npos) && (name.find("op") == std::string::npos) && 662be168c0dSopenharmony_ci+ (end_pos != std::string::npos)) { 663be168c0dSopenharmony_ci+ size_t pos = fullname.rfind(delimiter, end_pos - 1); 664be168c0dSopenharmony_ci+ if (pos != std::string::npos) { 665be168c0dSopenharmony_ci+ name.insert(0, fullname.substr(pos + 1, end_pos - pos)); 666be168c0dSopenharmony_ci+ } else { 667be168c0dSopenharmony_ci+ name.insert(0, fullname.substr(0, end_pos + 1)); 668be168c0dSopenharmony_ci+ } 669be168c0dSopenharmony_ci+ } 670be168c0dSopenharmony_ci+ 671be168c0dSopenharmony_ci+ const std::vector<std::string> loss_names = {"loss_fct", "_loss_fn", "SigmoidCrossEntropy"}; 672be168c0dSopenharmony_ci+ for (auto &s : loss_names) { 673be168c0dSopenharmony_ci+ if (fullname.find(s) != std::string::npos) { 674be168c0dSopenharmony_ci+ name.insert(0, s + "/"); 675be168c0dSopenharmony_ci+ break; 676be168c0dSopenharmony_ci+ } 677be168c0dSopenharmony_ci+ } 678be168c0dSopenharmony_ci+ 679be168c0dSopenharmony_ci+ if (fullname.find("Gradients") != std::string::npos) { 680be168c0dSopenharmony_ci+ size_t pos = fullname.find(delimiter); 681be168c0dSopenharmony_ci+ if (pos != std::string::npos) { 682be168c0dSopenharmony_ci+ name.insert(0, fullname.substr(0, pos + 1)); 683be168c0dSopenharmony_ci+ } 684be168c0dSopenharmony_ci+ } 685be168c0dSopenharmony_ci+ return name; 686be168c0dSopenharmony_ci+} 687be168c0dSopenharmony_ci+ 688be168c0dSopenharmony_ci+STATUS NodeNamePass::Run(schema::MetaGraphT *graph) { 689be168c0dSopenharmony_ci+ if (graph == nullptr) { 690be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "graph is nullptr"; 691be168c0dSopenharmony_ci+ return RET_NULL_PTR; 692be168c0dSopenharmony_ci+ } 693be168c0dSopenharmony_ci+ 694be168c0dSopenharmony_ci+ std::string delimiter = "/"; 695be168c0dSopenharmony_ci+ for (auto &node : graph->nodes) { 696be168c0dSopenharmony_ci+ if (node == nullptr || node->primitive == nullptr) { 697be168c0dSopenharmony_ci+ MS_LOG(ERROR) << "node or node->primitive is nullptr"; 698be168c0dSopenharmony_ci+ return RET_NULL_PTR; 699be168c0dSopenharmony_ci+ } 700be168c0dSopenharmony_ci+ std::string node_name = CutShortName(node->name, delimiter); 701be168c0dSopenharmony_ci+ node->name = node_name != "" ? node_name : node->name; 702be168c0dSopenharmony_ci+ 703be168c0dSopenharmony_ci+ for (int i = 0; i < static_cast<int>(node->inputIndex.size()); i++) { 704be168c0dSopenharmony_ci+ auto tensor_id = node->inputIndex.at(i); 705be168c0dSopenharmony_ci+ auto &tensor = graph->allTensors.at(tensor_id); 706be168c0dSopenharmony_ci+ if (tensor->name.empty()) { 707be168c0dSopenharmony_ci+ MS_LOG(DEBUG) << "input tensor (id = " << tensor_id << ") name is null"; 708be168c0dSopenharmony_ci+ tensor->name = node->name + "/input-" + std::to_string(i); 709be168c0dSopenharmony_ci+ } else { 710be168c0dSopenharmony_ci+ std::string in_tensor_name = CutShortName(tensor->name, delimiter); 711be168c0dSopenharmony_ci+ tensor->name = in_tensor_name != "" ? in_tensor_name : tensor->name; 712be168c0dSopenharmony_ci+ } 713be168c0dSopenharmony_ci+ } 714be168c0dSopenharmony_ci+ 715be168c0dSopenharmony_ci+ for (int i = 0; i < static_cast<int>(node->outputIndex.size()); i++) { 716be168c0dSopenharmony_ci+ auto tensor_id = node->outputIndex.at(i); 717be168c0dSopenharmony_ci+ auto &tensor = graph->allTensors.at(tensor_id); 718be168c0dSopenharmony_ci+ if (tensor->name.empty()) { 719be168c0dSopenharmony_ci+ tensor->name = node->name + "/output-" + std::to_string(i); 720be168c0dSopenharmony_ci+ } else { 721be168c0dSopenharmony_ci+ std::string out_tensor_name = CutShortName(tensor->name, delimiter); 722be168c0dSopenharmony_ci+ tensor->name = out_tensor_name != "" ? out_tensor_name : tensor->name; 723be168c0dSopenharmony_ci+ } 724be168c0dSopenharmony_ci+ } 725be168c0dSopenharmony_ci+ } 726be168c0dSopenharmony_ci+ return RET_OK; 727be168c0dSopenharmony_ci+} 728be168c0dSopenharmony_ci+} // namespace mindspore::lite 729be168c0dSopenharmony_ci\ No newline at end of file 730be168c0dSopenharmony_cidiff --git a/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.h b/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.h 731be168c0dSopenharmony_cinew file mode 100644 732be168c0dSopenharmony_ciindex 00000000..4e58e5c7 733be168c0dSopenharmony_ci--- /dev/null 734be168c0dSopenharmony_ci+++ b/mindspore/lite/tools/converter/legacy_optimizer/graph/node_name_pass.h 735be168c0dSopenharmony_ci@@ -0,0 +1,35 @@ 736be168c0dSopenharmony_ci+/** 737be168c0dSopenharmony_ci+ * Copyright 2022 Huawei Technologies Co., Ltd 738be168c0dSopenharmony_ci+ * 739be168c0dSopenharmony_ci+ * Licensed under the Apache License, Version 2.0 (the "License"); 740be168c0dSopenharmony_ci+ * you may not use this file except in compliance with the License. 741be168c0dSopenharmony_ci+ * You may obtain a copy of the License at 742be168c0dSopenharmony_ci+ * 743be168c0dSopenharmony_ci+ * http://www.apache.org/licenses/LICENSE-2.0 744be168c0dSopenharmony_ci+ * 745be168c0dSopenharmony_ci+ * Unless required by applicable law or agreed to in writing, software 746be168c0dSopenharmony_ci+ * distributed under the License is distributed on an "AS IS" BASIS, 747be168c0dSopenharmony_ci+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 748be168c0dSopenharmony_ci+ * See the License for the specific language governing permissions and 749be168c0dSopenharmony_ci+ * limitations under the License. 750be168c0dSopenharmony_ci+ */ 751be168c0dSopenharmony_ci+#ifndef MINDSPORE_LITE_TOOLS_CONVERTER_LEGACY_OPTIMIZER_GRAPH_NODE_NAME_PASS_H_ 752be168c0dSopenharmony_ci+#define MINDSPORE_LITE_TOOLS_CONVERTER_LEGACY_OPTIMIZER_GRAPH_NODE_NAME_PASS_H_ 753be168c0dSopenharmony_ci+ 754be168c0dSopenharmony_ci+#include <memory> 755be168c0dSopenharmony_ci+#include "tools/converter/optimizer.h" 756be168c0dSopenharmony_ci+#include "tools/common/graph_util.h" 757be168c0dSopenharmony_ci+ 758be168c0dSopenharmony_ci+namespace mindspore { 759be168c0dSopenharmony_ci+namespace lite { 760be168c0dSopenharmony_ci+class NodeNamePass : public GraphPass { 761be168c0dSopenharmony_ci+ public: 762be168c0dSopenharmony_ci+ NodeNamePass() {} 763be168c0dSopenharmony_ci+ 764be168c0dSopenharmony_ci+ ~NodeNamePass() override = default; 765be168c0dSopenharmony_ci+ 766be168c0dSopenharmony_ci+ STATUS Run(schema::MetaGraphT *graph) override; 767be168c0dSopenharmony_ci+}; 768be168c0dSopenharmony_ci+} // namespace lite 769be168c0dSopenharmony_ci+} // namespace mindspore 770be168c0dSopenharmony_ci+#endif // MINDSPORE_LITE_TOOLS_CONVERTER_LEGACY_OPTIMIZER_GRAPH_NODE_NAME_PASS_H_ 771be168c0dSopenharmony_ci-- 772be168c0dSopenharmony_ci2.25.1 773be168c0dSopenharmony_ci 774