diff options
author | Sang-Hoon Park <sang-hoon.park@arm.com> | 2021-03-31 15:18:16 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2021-04-19 07:35:54 +0000 |
commit | c6fcfb4adc37a6cf09472168dc177234d4fabdfa (patch) | |
tree | b67afd4c8d1594053395394b24406334e66e0791 /src/c/AclTensor.cpp | |
parent | fe56edb4fd7a620fea4b6002d87a9763bdf8791a (diff) | |
download | ComputeLibrary-c6fcfb4adc37a6cf09472168dc177234d4fabdfa.tar.gz |
Add Tensor related utilities to the new API
A couple of utility functions to get the information
about tensors are added. Those functions are placed
at an additional header file for better grouping.
Related test cases are also added.
Resolves: COMPMID-4376
Change-Id: I6bd09cbf60fddcf4fe651906982397afb0451392
Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5405
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/c/AclTensor.cpp')
-rw-r--r-- | src/c/AclTensor.cpp | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/c/AclTensor.cpp b/src/c/AclTensor.cpp index 0d884b1ec3..8f6ce45628 100644 --- a/src/c/AclTensor.cpp +++ b/src/c/AclTensor.cpp @@ -22,11 +22,13 @@ * SOFTWARE. */ #include "arm_compute/AclEntrypoints.h" -#include "src/common/ITensor.h" +#include "arm_compute/AclUtils.h" +#include "src/common/ITensorV2.h" #include "src/common/utils/Macros.h" namespace { +using namespace arm_compute; /**< Maximum allowed dimensions by Compute Library */ constexpr int32_t max_allowed_dims = 6; @@ -55,6 +57,12 @@ bool is_desc_valid(const AclTensorDescriptor &desc) } return true; } + +StatusCode convert_and_validate_tensor(AclTensor tensor, ITensorV2 **internal_tensor) +{ + *internal_tensor = get_internal(tensor); + return detail::validate_internal_tensor(*internal_tensor); +} } // namespace extern "C" AclStatus AclCreateTensor(AclTensor *external_tensor, @@ -146,3 +154,37 @@ extern "C" AclStatus AclDestroyTensor(AclTensor external_tensor) return AclSuccess; } + +extern "C" AclStatus AclGetTensorSize(AclTensor tensor, uint64_t *size) +{ + using namespace arm_compute; + + if(size == nullptr) + { + return AclStatus::AclInvalidArgument; + } + + ITensorV2 *internal_tensor{ nullptr }; + auto status = convert_and_validate_tensor(tensor, &internal_tensor); + ARM_COMPUTE_RETURN_CENUM_ON_FAILURE(status); + + *size = internal_tensor->get_size(); + return utils::as_cenum<AclStatus>(status); +} + +extern "C" AclStatus AclGetTensorDescriptor(AclTensor tensor, AclTensorDescriptor *desc) +{ + using namespace arm_compute; + + if(desc == nullptr) + { + return AclStatus::AclInvalidArgument; + } + + ITensorV2 *internal_tensor{ nullptr }; + const auto status = convert_and_validate_tensor(tensor, &internal_tensor); + ARM_COMPUTE_RETURN_CENUM_ON_FAILURE(status); + + *desc = internal_tensor->get_descriptor(); + return utils::as_cenum<AclStatus>(status); +}
\ No newline at end of file |