aboutsummaryrefslogtreecommitdiff
path: root/src/c/AclTensor.cpp
diff options
context:
space:
mode:
authorSang-Hoon Park <sang-hoon.park@arm.com>2021-03-31 15:18:16 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2021-04-19 07:35:54 +0000
commitc6fcfb4adc37a6cf09472168dc177234d4fabdfa (patch)
treeb67afd4c8d1594053395394b24406334e66e0791 /src/c/AclTensor.cpp
parentfe56edb4fd7a620fea4b6002d87a9763bdf8791a (diff)
downloadComputeLibrary-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.cpp44
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