From 5190dd46a253904e0f304179a88019221ce92a42 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EC=98=A4=ED=98=95=EC=84=9D/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Thu, 8 Nov 2018 11:44:39 +0900 Subject: [PATCH] Concat elimination in codegen (#3518) Concat elimination in codegen: check output tensor is parent of inputs and do nothing if true Signed-off-by: Hyeongseok Oh --- runtimes/neurun/src/backend/acl_cl/StageGenerator.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc b/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc index b8e5181..b173d5a 100644 --- a/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc +++ b/runtimes/neurun/src/backend/acl_cl/StageGenerator.cc @@ -400,6 +400,22 @@ Stage StageGenerator::generate(const graph::operation::ConcatNode &node) auto tensors = _tensor_builder; return [tensors, param](IExecutionBuilder &builder) { + // If tensor allocator allocate as subtensor + bool canEliminate = true; + for (auto ifm_ind : param.input_indexes) + { + if (!tensors->isSubTensorOf(param.output_index, ifm_ind)) + { + canEliminate = false; + break; + } + } + if (canEliminate) + { + // If concat eliminated, return with nothing to do + return; + } + auto output_alloc = tensors->at(param.output_index).get(); std::vector<::arm_compute::ICLTensor *> input_allocs; -- 2.7.4