From: @probiotics_53 Reviewed-by: @zhanghaibo5,@HilbertDavid Signed-off-by: @zhanghaibo5tags/v1.2.0-rc1
| @@ -36,6 +36,7 @@ int CropBaseCPUKernel::ReSize() { | |||||
| auto output_shape = out_tensor->shape(); | auto output_shape = out_tensor->shape(); | ||||
| size_t input_dim = input_shape.size(); | size_t input_dim = input_shape.size(); | ||||
| size_t output_dim = output_shape.size(); | size_t output_dim = output_shape.size(); | ||||
| FreeTmpBuffer(); | |||||
| crop_para_->in_shape_ = reinterpret_cast<int *>(malloc(input_dim * sizeof(int))); | crop_para_->in_shape_ = reinterpret_cast<int *>(malloc(input_dim * sizeof(int))); | ||||
| if (crop_para_->in_shape_ == nullptr) { | if (crop_para_->in_shape_ == nullptr) { | ||||
| @@ -76,4 +77,15 @@ void CropBaseCPUKernel::PadOffset(int input_dim, CropParameter *crop_para) { | |||||
| crop_para->in_offset_[i] = crop_offset; | crop_para->in_offset_[i] = crop_offset; | ||||
| } | } | ||||
| } | } | ||||
| void CropBaseCPUKernel::FreeTmpBuffer() { | |||||
| if (crop_para_->in_shape_ != nullptr) { | |||||
| free(crop_para_->in_shape_); | |||||
| crop_para_->in_shape_ = nullptr; | |||||
| } | |||||
| if (crop_para_->out_shape_ != nullptr) { | |||||
| free(crop_para_->out_shape_); | |||||
| crop_para_->out_shape_ = nullptr; | |||||
| } | |||||
| } | |||||
| } // namespace mindspore::kernel | } // namespace mindspore::kernel | ||||
| @@ -31,20 +31,12 @@ class CropBaseCPUKernel : public LiteKernel { | |||||
| crop_para_ = reinterpret_cast<CropParameter *>(op_parameter_); | crop_para_ = reinterpret_cast<CropParameter *>(op_parameter_); | ||||
| crop_para_->thread_count_ = op_parameter_->thread_num_; | crop_para_->thread_count_ = op_parameter_->thread_num_; | ||||
| } | } | ||||
| ~CropBaseCPUKernel() { | |||||
| if (crop_para_->in_shape_ != nullptr) { | |||||
| free(crop_para_->in_shape_); | |||||
| crop_para_->in_shape_ = nullptr; | |||||
| } | |||||
| if (crop_para_->out_shape_ != nullptr) { | |||||
| free(crop_para_->out_shape_); | |||||
| crop_para_->out_shape_ = nullptr; | |||||
| } | |||||
| } | |||||
| ~CropBaseCPUKernel() = default; | |||||
| int Init() override; | int Init() override; | ||||
| int ReSize() override; | int ReSize() override; | ||||
| int Run() override { return 0; } | int Run() override { return 0; } | ||||
| void FreeTmpBuffer(); | |||||
| protected: | protected: | ||||
| CropParameter *crop_para_; | CropParameter *crop_para_; | ||||
| @@ -31,8 +31,6 @@ int CropFp16CPUKernel::Init() { | |||||
| return ReSize(); | return ReSize(); | ||||
| } | } | ||||
| int CropFp16CPUKernel::ReSize() { return CropBaseCPUKernel::ReSize(); } | |||||
| int CropFp16CPUKernel::DoExecute(int task_id) { | int CropFp16CPUKernel::DoExecute(int task_id) { | ||||
| Fp16Crop(input_ptr_, output_ptr_, task_id, crop_para_); | Fp16Crop(input_ptr_, output_ptr_, task_id, crop_para_); | ||||
| return RET_OK; | return RET_OK; | ||||
| @@ -59,6 +57,7 @@ int CropFp16CPUKernel::Run() { | |||||
| if (ret != RET_OK) { | if (ret != RET_OK) { | ||||
| MS_LOG(ERROR) << "ParallelLaunch failed: " << ret; | MS_LOG(ERROR) << "ParallelLaunch failed: " << ret; | ||||
| } | } | ||||
| FreeTmpBuffer(); | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| @@ -36,7 +36,6 @@ class CropFp16CPUKernel : public CropBaseCPUKernel { | |||||
| ~CropFp16CPUKernel() override = default; | ~CropFp16CPUKernel() override = default; | ||||
| int Init() override; | int Init() override; | ||||
| int ReSize() override; | |||||
| int Run() override; | int Run() override; | ||||
| int DoExecute(int task_id); | int DoExecute(int task_id); | ||||
| @@ -43,8 +43,6 @@ int CropCPUKernel::Init() { | |||||
| return ReSize(); | return ReSize(); | ||||
| } | } | ||||
| int CropCPUKernel::ReSize() { return CropBaseCPUKernel::ReSize(); } | |||||
| int CropCPUKernel::CropParallelRun(int thread_id) { | int CropCPUKernel::CropParallelRun(int thread_id) { | ||||
| auto input = in_tensors_[0]; | auto input = in_tensors_[0]; | ||||
| auto output = out_tensors_[0]; | auto output = out_tensors_[0]; | ||||
| @@ -69,6 +67,7 @@ int CropCPUKernel::Run() { | |||||
| MS_LOG(ERROR) << "Crop launch fail!ret: " << ret; | MS_LOG(ERROR) << "Crop launch fail!ret: " << ret; | ||||
| return RET_ERROR; | return RET_ERROR; | ||||
| } | } | ||||
| FreeTmpBuffer(); | |||||
| return RET_OK; | return RET_OK; | ||||
| } | } | ||||
| @@ -33,7 +33,6 @@ class CropCPUKernel : public CropBaseCPUKernel { | |||||
| : CropBaseCPUKernel(parameter, inputs, outputs, ctx, primitive) {} | : CropBaseCPUKernel(parameter, inputs, outputs, ctx, primitive) {} | ||||
| ~CropCPUKernel() = default; | ~CropCPUKernel() = default; | ||||
| int Init() override; | int Init() override; | ||||
| int ReSize() override; | |||||
| int Run() override; | int Run() override; | ||||
| int CropParallelRun(int thread_id); | int CropParallelRun(int thread_id); | ||||
| }; | }; | ||||