forked from mindspore-Ecosystem/mindspore
[MSLITE] ops populate memory leak
This commit is contained in:
parent
3f0aeaa8fc
commit
02d0ed81bd
|
@ -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_;
|
||||
|
|
|
@ -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_;
|
||||
|
|
|
@ -40,12 +40,7 @@ OpParameter *PopulateL2NormParameter(const mindspore::lite::PrimitiveC *primitiv
|
|||
free(l2_norm_parameter);
|
||||
return nullptr;
|
||||
}
|
||||
l2_norm_parameter->axis_ = reinterpret_cast<int *>(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];
|
||||
}
|
||||
|
|
|
@ -39,12 +39,7 @@ OpParameter *PopulateLayerNormParameter(const mindspore::lite::PrimitiveC *primi
|
|||
free(layer_norm_parameter);
|
||||
return nullptr;
|
||||
}
|
||||
layer_norm_parameter->normalized_shape_ = reinterpret_cast<int *>(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];
|
||||
}
|
||||
|
|
|
@ -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<int>::max() / static_cast<int>(sizeof(int))) {
|
||||
MS_LOG(ERROR) << "The value of split_param->num_split_ is too big";
|
||||
return nullptr;
|
||||
}
|
||||
int *split_sizes = reinterpret_cast<int *>(malloc(split_param->num_split_ * sizeof(int)));
|
||||
if (split_sizes == nullptr) {
|
||||
MS_LOG(ERROR) << "malloc split size of SplitParameter failed.";
|
||||
free(split_param);
|
||||
return nullptr;
|
||||
}
|
||||
memset(split_sizes, 0, split_param->num_split_ * sizeof(int));
|
||||
split_param->split_sizes_ = split_sizes;
|
||||
auto split_sizes_vector_ = param->size_splits();
|
||||
int i = 0;
|
||||
for (int &iter : split_sizes_vector_) {
|
||||
split_param->split_sizes_[i++] = iter;
|
||||
|
||||
/* free split_sizes_ in split op base */
|
||||
split_param->split_sizes_ = reinterpret_cast<int *>(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_param->split_sizes_, 0, split_param->num_split_ * sizeof(int));
|
||||
|
||||
auto split_sizes_vector_ = param->size_splits();
|
||||
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<OpParameter *>(split_param);
|
||||
}
|
||||
|
|
|
@ -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++) {
|
||||
|
|
|
@ -35,12 +35,7 @@ class L2NormCPUKernel : public LiteKernel {
|
|||
: LiteKernel(parameter, inputs, outputs, ctx, primitive) {
|
||||
l2_norm_param_ = reinterpret_cast<L2NormParameter *>(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);
|
||||
|
|
|
@ -58,7 +58,6 @@ void TestL2NormFp32::Init(const std::vector<int> &input_shape, const std::vector
|
|||
|
||||
param_.axis_num_ = axis_num;
|
||||
if (axis_num == 1) {
|
||||
param_.axis_ = reinterpret_cast<int *>(malloc(sizeof(int)));
|
||||
param_.axis_[0] = -1;
|
||||
}
|
||||
param_.epsilon_ = 1e-6;
|
||||
|
|
|
@ -46,7 +46,6 @@ TEST_F(TestL2NormInt8, norm) {
|
|||
std::vector<lite::Tensor *> outputs = {&out_tensor};
|
||||
|
||||
param_.axis_num_ = 1;
|
||||
param_.axis_ = reinterpret_cast<int *>(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<lite::Tensor *> outputs = {&out_tensor};
|
||||
|
||||
param_.axis_num_ = 1;
|
||||
param_.axis_ = reinterpret_cast<int *>(malloc(sizeof(int)));
|
||||
param_.axis_[0] = -1;
|
||||
param_.epsilon_ = 1e-6;
|
||||
param_.act_type_ = ActType_No;
|
||||
|
|
Loading…
Reference in New Issue