From 205ba243309baaec4bccfc82229139978d1a354e Mon Sep 17 00:00:00 2001 From: Pablo Marquez Tello Date: Wed, 12 Jul 2023 14:29:58 +0100 Subject: Added S64/U64 support for the input in CLCast * Partially resolves MLCE-1089 Change-Id: Ie3d2fc2f755ae99cdb17b57cc90bb3f99a1843e0 Signed-off-by: Pablo Marquez Tello Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/9909 Tested-by: Arm Jenkins Reviewed-by: Gunes Bayir Comments-Addressed: Arm Jenkins Benchmark: Arm Jenkins --- arm_compute/core/Utils.h | 9 ++++++--- arm_compute/runtime/CL/functions/CLCast.h | 33 +++++++++---------------------- 2 files changed, 15 insertions(+), 27 deletions(-) (limited to 'arm_compute') diff --git a/arm_compute/core/Utils.h b/arm_compute/core/Utils.h index 188ae8cf5b..6fa983d24e 100644 --- a/arm_compute/core/Utils.h +++ b/arm_compute/core/Utils.h @@ -164,6 +164,9 @@ inline size_t element_size_from_data_type(DataType dt) case DataType::S32: case DataType::F32: return 4; + case DataType::U64: + case DataType::S64: + return 8; default: ARM_COMPUTE_ERROR("Undefined element size for given data type"); return 0; @@ -712,7 +715,7 @@ QuantizationInfo get_softmax_output_quantization_info(DataType input_type, bool * * @return The pair with minimum and maximum values */ -std::pair get_quantized_activation_min_max(const ActivationLayerInfo& act_info, DataType data_type, UniformQuantizationInfo oq_info); +std::pair get_quantized_activation_min_max(const ActivationLayerInfo &act_info, DataType data_type, UniformQuantizationInfo oq_info); /** Convert a tensor format into a string. * @@ -749,7 +752,7 @@ const std::string &string_from_data_type(DataType dt); * * @return The string describing the activation function. */ -const std::string &string_from_activation_func(const ActivationFunction& act); +const std::string &string_from_activation_func(const ActivationFunction &act); /** Translates a given interpolation policy to a string. * * @param[in] policy @ref InterpolationPolicy to be translated to string. @@ -798,7 +801,7 @@ bool is_pool_3d_region_entirely_outside_input(const Pooling3dLayerInfo &info); * * @return True if padding is symmetric */ -inline bool is_symmetric(const Padding3D& info) +inline bool is_symmetric(const Padding3D &info) { return ((info.left == info.right) && (info.top == info.bottom) && (info.front == info.back)); } diff --git a/arm_compute/runtime/CL/functions/CLCast.h b/arm_compute/runtime/CL/functions/CLCast.h index d2cea7a8a2..650cd11b9b 100644 --- a/arm_compute/runtime/CL/functions/CLCast.h +++ b/arm_compute/runtime/CL/functions/CLCast.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2021 Arm Limited. + * Copyright (c) 2018-2021, 2023 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -61,43 +61,28 @@ public: * |src |dst | * |:--------------|:--------------------------------------| * |U8 | S8, U16, S16, U32, S32, F16, F32 | + * |S8 | U8, U16, S16, U32, S32, F16, F32 | * |U16 | U8, S8, S16, U32, S32, F16, F32 | * |S16 | U8, S8, U16, U32, S32, F16, F32 | * |U32 | U8, S8, U16, S16, S32, F16, F32 | * |S32 | U8, S8, U16, S16, U32, F16, F32 | - * |F16 | U8, S8, U16, S16, U32, F32 | - * |F32 | U8, S8, U16, S16, U32, F16 | + * |U64 | U8, S8, U16, S16, U32, S32, F16, F32 | + * |S64 | U8, S8, U16, S16, U32, S32, F16, F32 | + * |F16 | U8, S8, U16, S16, S32, U32, F32 | + * |F32 | U8, S8, U16, S16, S32, U32, F16 | * * Input data type must be different than output data type. * - * @param[in] input The input tensor to convert. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32. + * @param[in] input The input tensor to convert. Data types supported: U8/S8/U16/S16/U32/S32/U64/S64/F16/F32. * @param[out] output The output tensor. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32. * @param[in] policy Conversion policy. */ void configure(const ICLTensor *input, ICLTensor *output, ConvertPolicy policy); - /** Initialize the function's source, destination - * - * Input data type must be different than output data type. - * - * Valid conversions Input -> Output : - * - * - U8 -> S8, U16, S16, U32, S32, F16, F32 - * - U16 -> U8, S8, S16, U32, S32, F16, F32 - * - S16 -> U8, S8, U16, U32, S32, F16, F32 - * - U32 -> U8, S8, U16, S16, S32, F16, F32 - * - S32 -> U8, S8, U16, S16, U32, F16, F32 - * - F16 -> U8, S8, U16, S16, U32, F32 - * - F32 -> U8, S8, U16, S16, U32, F16 - * - * @param[in] compile_context The compile context to be used. - * @param[in] input The input tensor to convert. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32. - * @param[out] output The output tensor. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32. - * @param[in] policy Conversion policy. - */ + // Initialize the function's source, destination void configure(const CLCompileContext &compile_context, const ICLTensor *input, ICLTensor *output, ConvertPolicy policy); /** Static function to check if given info will lead to a valid configuration of @ref CLCast * - * @param[in] input Source tensor info. Data types supported: U8/S8/U16/S16/U32/S32/F16/F32. + * @param[in] input Source tensor info. Data types supported: U8/S8/U16/S16/U32/S32/U64/S64/F16/F32. * @param[in] output Destination tensor info. Data type supported: U8/S8/U16/S16/U32/S32/F16/F32. * @param[in] policy Conversion policy. * -- cgit v1.2.1