diff --git a/src/fpga/fpga_quantilization.cpp b/src/fpga/fpga_quantilization.cpp index 34033a60a683183695a79bfafbaf14223e2eebf2..dee3d3abc19e020304ff9e658d40797b6681c43b 100644 --- a/src/fpga/fpga_quantilization.cpp +++ b/src/fpga/fpga_quantilization.cpp @@ -46,8 +46,8 @@ static Dtype find_max(Dtype* data, int num) { return max; } -template -framework::Tensor* quantilize_filter(framework::Tensor* filter) { +// template +framework::Tensor* quantify_filter(framework::Tensor* filter) { float scale = 0; float fix_range = static_cast((1 << (8 - 1)) - 1); @@ -57,7 +57,7 @@ framework::Tensor* quantilize_filter(framework::Tensor* filter) { const int width = filter->dims()[3]; int8_t* int_data = nullptr; - int8_t* tmp_data = new int[filter->numel()]; + int8_t* tmp_data = new int8_t[filter->numel()]; // 32bit filter -> 8bit filter; if (filter->type() == typeid(float)) { diff --git a/src/fpga/fpga_quantilization.h b/src/fpga/fpga_quantilization.h index 8dacd20abdc85da05a451ec763fd01f03f8f4516..56e14f89ac0e7d21e7bbb704df838374be84fbcd 100644 --- a/src/fpga/fpga_quantilization.h +++ b/src/fpga/fpga_quantilization.h @@ -24,7 +24,7 @@ template static void chw_to_hwc(Dtype* data_in, Dtype* data_out, int num, int channel, int height, int width); -template -framework::Tensor* quantilize_filter(framework::Tensor* filter); +// template +framework::Tensor* quantify_filter(framework::Tensor* filter); } // namespace fpga } // namespace paddle_mobile diff --git a/src/operators/kernel/fpga/conv_add_bn_kernel.cpp b/src/operators/kernel/fpga/conv_add_bn_kernel.cpp index b519d6da01467fb248e21dc3af41cfab7fd4b67e..095ae4a6d0c8d642aa1e8225bb69f27fb63091b0 100644 --- a/src/operators/kernel/fpga/conv_add_bn_kernel.cpp +++ b/src/operators/kernel/fpga/conv_add_bn_kernel.cpp @@ -28,7 +28,7 @@ bool ConvAddBNKernel::Init(FusionConvAddBNParam *param) { auto input_ptr = input->data(); const Tensor *bias = param->Bias(); auto bias_ptr = bias->data(); - const Tensor *filter = param->Filter(); + Tensor *filter = param->Filter(); Tensor *out = param->Output(); auto out_ptr = out->mutable_data(); @@ -60,7 +60,7 @@ bool ConvAddBNKernel::Init(FusionConvAddBNParam *param) { param->SetNewScale(new_scale); param->SetNewBias(new_bias); - const Tensor *quant_filter = quantilize_filter(filter); + Tensor *quant_filter = fpga::quantify_filter(filter); // delete original filter? filter = quant_filter; @@ -68,22 +68,22 @@ bool ConvAddBNKernel::Init(FusionConvAddBNParam *param) { auto filter_ptr = filter->data(); fpga::ConvArgs convArgs; convArgs.relu_enabled = relu_enabled; - convArgs.filter_address = reinterpret_cast filter_ptr; + convArgs.filter_address = (void *)filter_ptr; convArgs.filter_num = filter->dims()[0]; convArgs.group_num = param->Groups(); - convArgs.sb_address = reinterpret_cast bs_ptr; + convArgs.sb_address = (void *)bs_ptr; convArgs.kernel.stride_h = param->Strides()[0]; convArgs.kernel.stride_w = param->Strides()[1]; convArgs.kernel.height = filter->dims()[2]; convArgs.kernel.width = filter->dims()[3]; - convArgs.image.address = reinterpret_cast input_ptr; + convArgs.image.address = (void *)input_ptr; convArgs.image.channels = input->dims()[1]; convArgs.image.height = input->dims()[2]; convArgs.image.width = input->dims()[3]; convArgs.image.pad_height = param->Paddings()[0]; convArgs.image.pad_width = param->Paddings()[1]; convArgs.image.scale_address = input->fpga_args().scale_pointer(); - convArgs.output.address = reinterpret_cast out_ptr; + convArgs.output.address = (void *)out_ptr; convArgs.output.scale_address = out->fpga_args().scale_pointer(); param->SetFpgaArgs(convArgs); diff --git a/src/operators/op_param.h b/src/operators/op_param.h index 237b8ea5ba58f5705eec9d0a8c3a8f0c781a4ada..4d1d5af29b81b044ca6d89b4a48a078f73dcabc9 100644 --- a/src/operators/op_param.h +++ b/src/operators/op_param.h @@ -920,7 +920,11 @@ class FusionFcParam : public OpParam { } const Tensor *InputX() const { return input_x_; } +#ifdef PADDLE_MOBILE_FPGA + Tensor *InputY() const { return input_y_; } +#else const Tensor *InputY() const { return input_y_; } +#endif const Tensor *InputZ() const { return input_z_; } @@ -976,7 +980,11 @@ class FusionConvAddParam : public OpParam { const Tensor *Input() const { return input_; } +#ifdef PADDLE_MOBILE_FPGA + Tensor *Filter() const { return filter_; } +#else const Tensor *Filter() const { return filter_; } +#endif Tensor *Output() const { return output_; } @@ -1050,7 +1058,11 @@ class FusionConvAddBNReluParam : public OpParam { const Tensor *Input() const { return input_; } +#ifdef PADDLE_MOBILE_FPGA + Tensor *Filter() const { return filter_; } +#else const Tensor *Filter() const { return filter_; } +#endif Tensor *Output() const { return output_; } @@ -1144,8 +1156,11 @@ class FusionConvAddBNParam : public OpParam { const Tensor *Input() const { return input_; } +#ifdef PADDLE_MOBILE_FPGA + Tensor *Filter() const { return filter_; } +#else const Tensor *Filter() const { return filter_; } - +#endif Tensor *Output() const { return output_y_; } const vector &Strides() const { return strides_; }