diff --git a/mindspore/lite/nnacl/l2_norm_parameter.h b/mindspore/lite/nnacl/l2_norm_parameter.h index d8127dfa88..90a0b491b4 100644 --- a/mindspore/lite/nnacl/l2_norm_parameter.h +++ b/mindspore/lite/nnacl/l2_norm_parameter.h @@ -23,7 +23,7 @@ typedef struct L2NormParameter { // Primitive parameter OpParameter op_parameter_; float epsilon_; - int *axis_; + int axis_[8]; // shape correlative size_t axis_num_; int data_num_; diff --git a/mindspore/lite/nnacl/layer_norm_parameter.h b/mindspore/lite/nnacl/layer_norm_parameter.h index 9c96edfdec..e849c15e7e 100644 --- a/mindspore/lite/nnacl/layer_norm_parameter.h +++ b/mindspore/lite/nnacl/layer_norm_parameter.h @@ -26,7 +26,7 @@ typedef struct LayerNormParameter { float epsilon_; enum ElementwiseMode elementwise_mode_; // shape correlative - int *normalized_shape_; + int normalized_shape_[8]; int normalized_dims_; // other parameter int thread_count_; diff --git a/mindspore/lite/src/ops/populate/l2_norm_populate.cc b/mindspore/lite/src/ops/populate/l2_norm_populate.cc index 1d7921de95..cfcd249873 100644 --- a/mindspore/lite/src/ops/populate/l2_norm_populate.cc +++ b/mindspore/lite/src/ops/populate/l2_norm_populate.cc @@ -40,12 +40,7 @@ OpParameter *PopulateL2NormParameter(const mindspore::lite::PrimitiveC *primitiv free(l2_norm_parameter); return nullptr; } - l2_norm_parameter->axis_ = reinterpret_cast(malloc(axis_vec.size() * sizeof(int))); - if (l2_norm_parameter->axis_ == nullptr) { - MS_LOG(ERROR) << "malloc axis_ data failed"; - free(l2_norm_parameter); - return nullptr; - } + MS_ASSERT(axis_vec.size() < 8); for (size_t i = 0; i < axis_vec.size(); i++) { l2_norm_parameter->axis_[i] = axis_vec[i]; } diff --git a/mindspore/lite/src/ops/populate/layer_norm_populate.cc b/mindspore/lite/src/ops/populate/layer_norm_populate.cc index 66e5c600c1..5e535269ce 100644 --- a/mindspore/lite/src/ops/populate/layer_norm_populate.cc +++ b/mindspore/lite/src/ops/populate/layer_norm_populate.cc @@ -39,12 +39,7 @@ OpParameter *PopulateLayerNormParameter(const mindspore::lite::PrimitiveC *primi free(layer_norm_parameter); return nullptr; } - layer_norm_parameter->normalized_shape_ = reinterpret_cast(malloc(normalized_shape.size() * sizeof(int))); - if (layer_norm_parameter->normalized_shape_ == nullptr) { - MS_LOG(ERROR) << "malloc layer_norm_parameter->normalized_shape_ failed."; - free(layer_norm_parameter); - return nullptr; - } + MS_ASSERT(normalized_shape.size() < 8); for (size_t i = 0; i < normalized_shape.size(); i++) { layer_norm_parameter->normalized_shape_[i] = normalized_shape[i]; } diff --git a/mindspore/lite/src/ops/populate/split_populate.cc b/mindspore/lite/src/ops/populate/split_populate.cc index 880a5ef854..3726dd0451 100644 --- a/mindspore/lite/src/ops/populate/split_populate.cc +++ b/mindspore/lite/src/ops/populate/split_populate.cc @@ -34,21 +34,25 @@ OpParameter *PopulateSplitParameter(const mindspore::lite::PrimitiveC *primitive split_param->num_split_ = param->num_split(); if (split_param->num_split_ > std::numeric_limits::max() / static_cast(sizeof(int))) { MS_LOG(ERROR) << "The value of split_param->num_split_ is too big"; + free(split_param); return nullptr; } - int *split_sizes = reinterpret_cast(malloc(split_param->num_split_ * sizeof(int))); - if (split_sizes == nullptr) { - MS_LOG(ERROR) << "malloc split size of SplitParameter failed."; + + /* free split_sizes_ in split op base */ + split_param->split_sizes_ = reinterpret_cast(malloc(split_param->num_split_ * sizeof(int))); + if (split_param->split_sizes_ == nullptr) { + MS_LOG(ERROR) << "malloc split_param split_sizes_ error"; free(split_param); return nullptr; } - memset(split_sizes, 0, split_param->num_split_ * sizeof(int)); - split_param->split_sizes_ = split_sizes; + memset(split_param->split_sizes_, 0, split_param->num_split_ * sizeof(int)); + auto split_sizes_vector_ = param->size_splits(); - int i = 0; - for (int &iter : split_sizes_vector_) { - split_param->split_sizes_[i++] = iter; + MS_ASSERT(split_sizes_vector_.size() == split_param->num_split_); + for (size_t i = 0; i < split_sizes_vector_.size(); i++) { + split_param->split_sizes_[i] = split_sizes_vector_[i]; } + split_param->split_dim_ = param->GetSplitDim(); return reinterpret_cast(split_param); } diff --git a/mindspore/lite/src/runtime/kernel/arm/base/split_base.cc b/mindspore/lite/src/runtime/kernel/arm/base/split_base.cc index aed5a8d140..0f22e0b9be 100644 --- a/mindspore/lite/src/runtime/kernel/arm/base/split_base.cc +++ b/mindspore/lite/src/runtime/kernel/arm/base/split_base.cc @@ -61,7 +61,6 @@ int SplitBaseCPUKernel::ReSize() { } } - MS_ASSERT(param->num_split_ >= 1 && param->num_split_ <= SPLIT_STRIDES_SIZE); if (param->split_sizes_[param->num_split_ - 1] == -1) { int split_shape_end = input_shape.at(param->split_dim_); for (int i = 0; i < param->num_split_ - 1; i++) { diff --git a/mindspore/lite/src/runtime/kernel/arm/fp32/l2_norm_fp32.h b/mindspore/lite/src/runtime/kernel/arm/fp32/l2_norm_fp32.h index aa462d98fd..4fc2e88f92 100644 --- a/mindspore/lite/src/runtime/kernel/arm/fp32/l2_norm_fp32.h +++ b/mindspore/lite/src/runtime/kernel/arm/fp32/l2_norm_fp32.h @@ -35,12 +35,7 @@ class L2NormCPUKernel : public LiteKernel { : LiteKernel(parameter, inputs, outputs, ctx, primitive) { l2_norm_param_ = reinterpret_cast(op_parameter_); } - ~L2NormCPUKernel() { - FreeTmpBuffer(); - if (l2_norm_param_->axis_ != nullptr) { - free(l2_norm_param_->axis_); - } - } + ~L2NormCPUKernel() { FreeTmpBuffer(); } int CalcSquareSum(int task_id); int DivSqrtSum(int task_id); diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/l2norm_fp32_test.cc b/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/l2norm_fp32_test.cc index dcd35f13f1..1c45310307 100644 --- a/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/l2norm_fp32_test.cc +++ b/mindspore/lite/test/ut/src/runtime/kernel/arm/fp32/l2norm_fp32_test.cc @@ -58,7 +58,6 @@ void TestL2NormFp32::Init(const std::vector &input_shape, const std::vector param_.axis_num_ = axis_num; if (axis_num == 1) { - param_.axis_ = reinterpret_cast(malloc(sizeof(int))); param_.axis_[0] = -1; } param_.epsilon_ = 1e-6; diff --git a/mindspore/lite/test/ut/src/runtime/kernel/arm/int8/l2_norm_int8_tests.cc b/mindspore/lite/test/ut/src/runtime/kernel/arm/int8/l2_norm_int8_tests.cc index 2f76110851..f15631ed0d 100644 --- a/mindspore/lite/test/ut/src/runtime/kernel/arm/int8/l2_norm_int8_tests.cc +++ b/mindspore/lite/test/ut/src/runtime/kernel/arm/int8/l2_norm_int8_tests.cc @@ -46,7 +46,6 @@ TEST_F(TestL2NormInt8, norm) { std::vector outputs = {&out_tensor}; param_.axis_num_ = 1; - param_.axis_ = reinterpret_cast(malloc(sizeof(int))); param_.axis_[0] = -1; param_.epsilon_ = 1e-6; param_.act_type_ = ActType_No; @@ -91,7 +90,6 @@ TEST_F(TestL2NormInt8, norm2) { std::vector outputs = {&out_tensor}; param_.axis_num_ = 1; - param_.axis_ = reinterpret_cast(malloc(sizeof(int))); param_.axis_[0] = -1; param_.epsilon_ = 1e-6; param_.act_type_ = ActType_No;