diff options
Diffstat (limited to 'src/c')
-rw-r--r-- | src/c/AclTensor.cpp | 44 | ||||
-rw-r--r-- | src/c/AclTensorPack.cpp | 2 | ||||
-rw-r--r-- | src/c/cl/AclOpenClExt.cpp | 2 |
3 files changed, 45 insertions, 3 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 diff --git a/src/c/AclTensorPack.cpp b/src/c/AclTensorPack.cpp index 6700ef464c..6202524ca7 100644 --- a/src/c/AclTensorPack.cpp +++ b/src/c/AclTensorPack.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include "arm_compute/AclEntrypoints.h" -#include "src/common/ITensor.h" +#include "src/common/ITensorV2.h" #include "src/common/TensorPack.h" #include "src/common/utils/Macros.h" diff --git a/src/c/cl/AclOpenClExt.cpp b/src/c/cl/AclOpenClExt.cpp index a144f97f55..ce6d2969de 100644 --- a/src/c/cl/AclOpenClExt.cpp +++ b/src/c/cl/AclOpenClExt.cpp @@ -23,7 +23,7 @@ */ #include "arm_compute/AclOpenClExt.h" -#include "src/common/ITensor.h" +#include "src/common/ITensorV2.h" #include "src/common/Types.h" #include "src/gpu/cl/ClContext.h" |