From 7a8cc39b5cea392cf1cd6fd95a82fe859f1a05f2 Mon Sep 17 00:00:00 2001 From: chenjianping Date: Wed, 2 Sep 2020 15:18:52 +0800 Subject: [PATCH] stack support one input --- mindspore/lite/nnacl/fp32/stack.c | 4 ++++ mindspore/lite/nnacl/fp32/stack.h | 1 + mindspore/lite/src/ops/stack.cc | 2 +- mindspore/lite/src/runtime/kernel/arm/fp32/stack.cc | 6 ++++++ 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mindspore/lite/nnacl/fp32/stack.c b/mindspore/lite/nnacl/fp32/stack.c index 28182b0b84..ea30d24c2f 100644 --- a/mindspore/lite/nnacl/fp32/stack.c +++ b/mindspore/lite/nnacl/fp32/stack.c @@ -67,3 +67,7 @@ void DoStackInt32(const int32_t *const *inputs, size_t input_num, int *in_shape, in_offset += copy_num; } } + +void DoStackOneInput(const int8_t *input, int8_t *output, size_t data_size) { + memcpy(output, input, data_size); +} diff --git a/mindspore/lite/nnacl/fp32/stack.h b/mindspore/lite/nnacl/fp32/stack.h index 652d4263d8..276cf77243 100644 --- a/mindspore/lite/nnacl/fp32/stack.h +++ b/mindspore/lite/nnacl/fp32/stack.h @@ -29,6 +29,7 @@ extern "C" { void DoStack(const float *const *inputs, size_t input_num, int *in_shape, size_t shape_size, int axis, float *output); void DoStackInt32(const int32_t *const *inputs, size_t input_num, int *in_shape, size_t shape_size, int axis, int32_t *output); +void DoStackOneInput(const int8_t *input, int8_t *output, size_t data_size); #ifdef __cplusplus } #endif diff --git a/mindspore/lite/src/ops/stack.cc b/mindspore/lite/src/ops/stack.cc index f5f0c56df6..219ab72fd3 100644 --- a/mindspore/lite/src/ops/stack.cc +++ b/mindspore/lite/src/ops/stack.cc @@ -58,7 +58,7 @@ int Stack::UnPackToFlatBuilder(const schema::Primitive *primitive, flatbuffers:: namespace { constexpr int kStackOutputNum = 1; -constexpr int kStackMinInputNum = 2; +constexpr int kStackMinInputNum = 1; } // namespace int Stack::InferShape(std::vector inputs, std::vector outputs) { MS_ASSERT(this->primitive_ != nullptr); diff --git a/mindspore/lite/src/runtime/kernel/arm/fp32/stack.cc b/mindspore/lite/src/runtime/kernel/arm/fp32/stack.cc index a6152c2323..72ba9a7127 100644 --- a/mindspore/lite/src/runtime/kernel/arm/fp32/stack.cc +++ b/mindspore/lite/src/runtime/kernel/arm/fp32/stack.cc @@ -48,6 +48,12 @@ int StackCPUKernel::Run() { return ret; } size_t inputs_num = in_tensors_.size(); + auto input0 = in_tensors_[0]; + if (inputs_num == 1) { + auto *output_data = reinterpret_cast(out_tensors_[0]->Data()); + DoStackOneInput(reinterpret_cast(input0->Data()), output_data, input0->Size()); + return RET_OK; + } auto input0_shape = in_tensors_[0]->shape(); if (in_tensors_[0]->data_type() == kNumberTypeFloat32 || in_tensors_[0]->data_type() == kNumberTypeFloat) { auto *output_data = reinterpret_cast(out_tensors_[0]->Data());