From df00aee0ff35bb25737ce5259601de8f6d39438f Mon Sep 17 00:00:00 2001 From: zhangyang Date: Fri, 28 Sep 2018 15:40:25 +0800 Subject: [PATCH] correct mistakes for FPGA track --- src/fpga/api.cpp | 2 ++ src/io/executor.cpp | 10 +++++----- src/operators/feed_op.h | 2 +- src/operators/kernel/fpga/concat_kernel.cpp | 2 +- src/operators/kernel/fpga/softmax_kernel.cpp | 4 ++-- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/fpga/api.cpp b/src/fpga/api.cpp index 10787b9155..f10aee5014 100644 --- a/src/fpga/api.cpp +++ b/src/fpga/api.cpp @@ -311,6 +311,8 @@ int get_aligned_filter_num(int num) { void format_filter(framework::Tensor *filter_tensor, float max_value, int group_num) { + filter_tensor->scale[0] = float(max_value / 127.0); + filter_tensor->scale[1] = float(127.0 / max_value); auto dims = filter_tensor->dims(); auto num = dims[0], channel = dims[1], height = dims[2], width = dims[3]; auto data_ptr = filter_tensor->data(); diff --git a/src/io/executor.cpp b/src/io/executor.cpp index c8d8f52a42..d733231ef0 100644 --- a/src/io/executor.cpp +++ b/src/io/executor.cpp @@ -676,11 +676,11 @@ std::shared_ptr Executor::FetchResult(int id) { to_predict_program_->Block(0); auto &ops = ops_of_block_[*to_predict_block.get()]; - PADDLE_MOBILE_ENFORCE(id < ops.size(), "Index out of range"); - auto last_op = id < 0 ? ops[ops.size() - 1] : ops[id]; - auto output_map = last_op->Outputs(); - std::vector out_keys = last_op->GetOutKeys(); - PADDLE_MOBILE_ENFORCE(!out_keys.empty(), "the last op contains no output"); + PADDLE_MOBILE_ENFORCE(id < (int)ops.size(), "Index out of range"); + auto op = id < 0 ? ops[ops.size() - 1] : ops[id]; + auto output_map = op->Outputs(); + std::vector out_keys = op->GetOutKeys(); + PADDLE_MOBILE_ENFORCE(!out_keys.empty(), "this op contains no output"); auto *output_tensor = framework::GetVarValue( out_keys[0], output_map, *(program_.scope)); return std::make_shared(framework::Tensor(*output_tensor)); diff --git a/src/operators/feed_op.h b/src/operators/feed_op.h index cccd4f52eb..1b36461932 100644 --- a/src/operators/feed_op.h +++ b/src/operators/feed_op.h @@ -50,8 +50,8 @@ class FeedOp : public framework::OperatorBase { void RunImpl() const { auto input = (Tensor *)const_cast(param_.InputX()); - auto input_ptr = input->data(); fpga::format_image(input); + auto input_ptr = input->data(); Tensor *output = param_.Out(); auto output_ptr = output->data(); diff --git a/src/operators/kernel/fpga/concat_kernel.cpp b/src/operators/kernel/fpga/concat_kernel.cpp index 86da2833ed..1c48ef0219 100644 --- a/src/operators/kernel/fpga/concat_kernel.cpp +++ b/src/operators/kernel/fpga/concat_kernel.cpp @@ -47,7 +47,7 @@ bool ConcatKernel::Init(ConcatParam *param) { concatArgs.image_num = (uint32_t)image_num; concatArgs.images_in = images_in; concatArgs.scales_in = scales_in; - concatArgs.image_out = (half *)out->mutable_data(); + concatArgs.image_out = (half *)out->data(); concatArgs.scale_out = out->scale; concatArgs.channel_num = channel_num; concatArgs.height = (uint32_t)height; diff --git a/src/operators/kernel/fpga/softmax_kernel.cpp b/src/operators/kernel/fpga/softmax_kernel.cpp index 7cfd0c7d76..ef68cc3c33 100644 --- a/src/operators/kernel/fpga/softmax_kernel.cpp +++ b/src/operators/kernel/fpga/softmax_kernel.cpp @@ -39,8 +39,8 @@ bool SoftmaxKernel::Init(SoftmaxParam *param) { args.image.height = 1; args.image.width = 1; args.image.channels = (uint32_t)input->dims()[1]; - args.output.address = float_input->mutable_data(); - + args.output.address = float_input->data(); + args.output.scale_address = float_input->scale; param->SetFloatInput(float_input); param->SetFpgaArgs(args); return true; -- GitLab