!8369 [MS][LITE][CPU]optimize int8 resize bilinear

From: @fuzhiye
Reviewed-by: @zhanghaibo5,@zhang_xue_tong
Signed-off-by:
pull/8369/MERGE
mindspore-ci-bot 4 years ago committed by Gitee
commit 0cbc4a022a

File diff suppressed because it is too large Load Diff

@ -27,23 +27,12 @@
#ifdef __cplusplus
extern "C" {
#endif
int ResizeBilinearInt8(const int8_t *input_data, int8_t *output_data, const int *input_shape, const int *output_shape,
const bool align_corners, QuantArg *quant_in, QuantArg *quant_out, const QuantMulArg *mul_arg,
int tid, int thread_num);
int ResizeBilinearInt8(const int8_t *input_ptr, int8_t *output_ptr, int batch, int in_h, int in_w, int out_h, int out_w,
int channel, int index, int count, ResizeQuantArg quant_arg);
int ResizeBilinearInt8WithFloatWeight(const int8_t *input_data, int8_t *output_data, const int *input_shape,
const int *output_shape, const bool align_corners, QuantArg *quant_in,
QuantArg *quant_out, const QuantMulArg *mul_arg, int tid, int thread_num);
void ComputeScale(const int32_t in_value, const int32_t out_value, const bool align_corners, int32_t *scale);
void ComputeInterpolationArgs(const int32_t pos, const int32_t scale, const int32_t size, int32_t *scaled_pos,
int32_t *low, int32_t *scaled_low_weight, int32_t *high, int32_t *scaled_high_weight);
int ComputeScaleFloat(const int32_t in_value, const int32_t out_value, const bool align_corners, float *scale);
void ComputeInterpolationArgsFloatWeight(const int32_t pos, const float scale, const int32_t size, float *actual_pos,
int32_t *low, float *low_weight, int32_t *high, float *high_weight);
int ResizeBilinearWithFloatScaleInt8(const int8_t *input_ptr, int8_t *output_ptr, int batch, int in_h, int in_w,
int out_h, int out_w, int channel, int index, int count,
ResizeFloatScaleQuantArg quant_arg);
int ResizeNearestNeighborInt8Simple(const int8_t *input_data, int8_t *output_data, const int *input_shape,
const int *output_shape, const bool align_corners, int tid, int thread_num);

@ -260,6 +260,28 @@ typedef struct LeakyReluQuantArg {
int element_num;
} LeakyReluQuantArg;
typedef struct ResizeQuantArg {
int32_t ratio_x_;
int32_t ratio_y_;
int32_t *x_axis_index_;
int32_t *x_axis_lower_;
int32_t *x_axis_upper_;
int32_t *y_axis_index_;
int32_t *y_axis_lower_;
int32_t *y_axis_upper_;
} ResizeQuantArg;
typedef struct ResizeFloatScaleQuantArg {
float ratio_x_;
float ratio_y_;
float *x_axis_index_;
int32_t *x_axis_lower_;
int32_t *x_axis_upper_;
float *y_axis_index_;
int32_t *y_axis_lower_;
int32_t *y_axis_upper_;
} ResizeFloatScaleQuantArg;
#ifdef __cplusplus
extern "C" {
#endif

File diff suppressed because it is too large Load Diff

@ -32,17 +32,20 @@ class ResizeInt8CPUKernel : public ResizeBaseCPUKernel {
const mindspore::lite::PrimitiveC *primitive)
: ResizeBaseCPUKernel(parameter, inputs, outputs, ctx, primitive) {}
~ResizeInt8CPUKernel() {
delete quant_out_;
quant_out_ = nullptr;
delete quant_in_;
quant_in_ = nullptr;
delete multiplier_;
multiplier_ = nullptr;
}
~ResizeInt8CPUKernel() override;
int Init() override;
int ReSize() override { return 0; };
int ReSize() override;
int InitResizeBiLinear();
int InitFloatResizeBiLinear();
int InitResizeQuantArg();
int CalRatio();
int CalInterpolationRange();
void FreeResizeBiLinear();
int InitResizeFloatQuantArg();
int CalFloatRatio();
int CalFloatInterpolationRange();
void FreeFloatResizeBiLinear();
int Run() override;
int RunImpl(int task_id);
@ -50,6 +53,8 @@ class ResizeInt8CPUKernel : public ResizeBaseCPUKernel {
QuantArg *quant_in_;
QuantArg *quant_out_;
QuantMulArg *multiplier_;
ResizeQuantArg resize_quant_arg_;
ResizeFloatScaleQuantArg resize_float_quant_arg_;
};
} // namespace mindspore::kernel

Loading…
Cancel
Save