From 201e0fee596dafcf9c869a550fae29779aad2394 Mon Sep 17 00:00:00 2001 From: Sang-Hoon Park Date: Wed, 27 Jan 2021 13:14:56 +0000 Subject: Make Softmax kernels on OpenCL stateless * ClSoftmaxKernel and ClSoftmax are created. * ClSoftmaxKernel is now state-less and ClSoftmax handles the internal tensors required for computation. * add_const_tensor() is added to TensorPack not only to have symmetric interface but also to benefit from implicit conversion. Implements: COMPMID-3998 Change-Id: I4f823121777be24260fd12b2cd71a6ff718c4eed Signed-off-by: Sang-Hoon Park Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5087 Reviewed-by: Georgios Pinitas Tested-by: Arm Jenkins Comments-Addressed: Arm Jenkins --- arm_compute/core/ITensorPack.h | 7 +++++++ arm_compute/core/KernelDescriptors.h | 1 + arm_compute/core/experimental/Types.h | 1 + 3 files changed, 9 insertions(+) (limited to 'arm_compute/core') diff --git a/arm_compute/core/ITensorPack.h b/arm_compute/core/ITensorPack.h index c06e1d9a73..8aea880bb6 100644 --- a/arm_compute/core/ITensorPack.h +++ b/arm_compute/core/ITensorPack.h @@ -69,6 +69,13 @@ public: * @param[in] tensor Tensor to add */ void add_tensor(int id, const ITensor *tensor); + + /** Add const tensor to the pack + * + * @param[in] id ID/type of the tensor to add + * @param[in] tensor Tensor to add + */ + void add_const_tensor(int id, const ITensor *tensor); /** Get tensor of a given id from the pac * * @param[in] id ID of tensor to extract diff --git a/arm_compute/core/KernelDescriptors.h b/arm_compute/core/KernelDescriptors.h index e381220695..1f3cee2dd1 100644 --- a/arm_compute/core/KernelDescriptors.h +++ b/arm_compute/core/KernelDescriptors.h @@ -114,6 +114,7 @@ struct SoftmaxKernelInfo float beta{ 1.f }; /**< A scaling factor for the exponent with default value 1.0 */ bool is_log{ false }; /**< Flag used to perform Log Softmax operation */ DataType input_data_type{ DataType::UNKNOWN }; /**< Input tensor data type */ + int32_t axis{ 0 }; /**< The dimension in which to apply softmax. */ }; /** Descriptor used by the direct convolution layer output stage kernels */ diff --git a/arm_compute/core/experimental/Types.h b/arm_compute/core/experimental/Types.h index f615678e31..2a4bd89385 100644 --- a/arm_compute/core/experimental/Types.h +++ b/arm_compute/core/experimental/Types.h @@ -52,6 +52,7 @@ enum TensorType : int32_t ACL_INT_1 = 51, ACL_INT_2 = 52, ACL_INT_3 = 53, + ACL_INT_4 = 54, ACL_SRC_VEC = 256, }; -- cgit v1.2.1