From 002e6530f6218b00a28aef9be8b21efb08cf3602 Mon Sep 17 00:00:00 2001 From: Ramy Elgammal Date: Wed, 11 Jan 2023 18:48:04 +0000 Subject: Implement dynamic fusion softmax operator - Return aux tensorInfo by get_aux_tensors() at runtime to init the aux tensor with the right size. - Keep softmax unfusable for this commit - Hence, added Tensor3D to template writer arguments declaration, for sake of keeping dynamic fusion softmax componenets' kernels matching their cl counterparts. Resolves: COMPMID-5523 Change-Id: I667f39545db925f667036ef448302c79a0330373 Signed-off-by: Ramy Elgammal Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/c/VisualCompute/ComputeLibrary/+/483924 Tested-by: bsgcomp Reviewed-by: Gunes Bayir Comments-Addressed: bsgcomp Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/8986 Comments-Addressed: Arm Jenkins Reviewed-by: Jakub Sujak Tested-by: Arm Jenkins Benchmark: Arm Jenkins --- .../sketch/gpu/template_writer/cl/ClTemplateWriter.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplateWriter.cpp') diff --git a/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplateWriter.cpp b/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplateWriter.cpp index 2ab6316947..eda15f1d95 100644 --- a/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplateWriter.cpp +++ b/src/dynamic_fusion/sketch/gpu/template_writer/cl/ClTemplateWriter.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Arm Limited. + * Copyright (c) 2022-2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -180,7 +180,8 @@ std::string ClTemplateWriter::write_code() } auto arguments = _components.get_argument_tensors(); - std::sort(arguments.begin(), arguments.end(), [](const ITensorInfo *l, const ITensorInfo *r) { + std::sort(arguments.begin(), arguments.end(), [](const ITensorInfo * l, const ITensorInfo * r) + { return l->id() < r->id(); }); code += write_kernel_signature(_vtable.get_variable_list(arguments)); @@ -192,16 +193,16 @@ std::string ClTemplateWriter::write_code() code += " //------------------ END KERNEL_BUILDER_COORDINATE ---------------------\n"; { - const auto tiles = _components.get_tiles(); + const auto tiles = _components.get_tiles(); std::stringstream tiles_ss; tiles_ss << " //------------------ START TILE DECLARATION ---------------------\n"; for(auto tile : tiles) { - const auto var = _vtable.get_variable(tile); + const auto var = _vtable.get_variable(tile); const auto data_type = get_cl_type_from_data_type(tile->data_type()); - const auto var_name = var.uniq_name; + const auto var_name = var.uniq_name; tiles_ss << " TILE(" << data_type << ", M0, N0, " << var_name << ");\n"; } @@ -276,6 +277,11 @@ std::string ClTemplateWriter::write_argument_declaration(const GpuKernelVariable code += "\n TENSOR4D_T(" + var.uniq_name + ", IMAGE)"; break; } + case GpuKernelArgumentInfo::Type::Tensor_3D: + { + code += "\n TENSOR3D_DECLARATION(" + var.uniq_name + ")"; + break; + } default: { ARM_COMPUTE_ERROR("Unsupported declaration generation for GpuKernelArgumentInfo::Type"); -- cgit v1.2.1