diff options
author | Finn Williams <Finn.Williams@arm.com> | 2020-07-23 12:55:12 +0100 |
---|---|---|
committer | Teresa Charlin <teresa.charlinreyes@arm.com> | 2020-08-12 17:06:37 +0100 |
commit | a4983cec09a3e24bf4e99abd31aa11842e8b365f (patch) | |
tree | 0a09be7cdad7ad5c15bb24c67abf0f4cd4d6e47e /ArmnnPreparedModel_1_2.cpp | |
parent | bf866e2dc7bd5936788fe213b5c0f74483ec1532 (diff) | |
download | android-nn-driver-a4983cec09a3e24bf4e99abd31aa11842e8b365f.tar.gz |
IVGCVSW-4931 Update NN Driver to support dynamic tensors
* Change NN Driver m_Network to now have ShapeInferenceMethod::InferAndValidate
* Implement dynamic tensor support for:
- ArgMinMax layer
- Pooling2d layer
- Activation layer
* Skip dynamic tensor tests for any HAL other than 1.3
Change-Id: Icf66c968e49cdd4822b8c79c5f18b3f9e97dc53f
Signed-off-by: Finn Williams <Finn.Williams@Arm.com>
Signed-off-by: Teresa Charlin <teresa.charlinreyes@arm.com>
Diffstat (limited to 'ArmnnPreparedModel_1_2.cpp')
-rw-r--r-- | ArmnnPreparedModel_1_2.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ArmnnPreparedModel_1_2.cpp b/ArmnnPreparedModel_1_2.cpp index 76ef4265..dd5bdae7 100644 --- a/ArmnnPreparedModel_1_2.cpp +++ b/ArmnnPreparedModel_1_2.cpp @@ -80,7 +80,7 @@ bool ValidateRequestArgument(const RequestArgument& requestArg, const armnn::Ten for (unsigned int d = 0; d < tensorInfo.GetNumDimensions(); ++d) { - if (requestArg.dimensions[d] != tensorInfo.GetShape()[d]) + if (requestArg.dimensions[d] != 0 && requestArg.dimensions[d] != tensorInfo.GetShape()[d]) { ALOGE("Mismatched size for dimension %d (request argument: %u, expected %u)", d, requestArg.dimensions[d], tensorInfo.GetShape()[d]); @@ -259,10 +259,17 @@ Return<V1_0::ErrorStatus> ArmnnPreparedModel_1_2<HalVersion>::PrepareMemoryForOu } const size_t outputSize = outputTensorInfo.GetNumBytes(); + + if (outputArg.location.length < outputSize) + { + ALOGW("ArmnnPreparedModel_1_2::Execute failed: outputArg.location.length < outputSize"); + return V1_0::ErrorStatus::OUTPUT_INSUFFICIENT_SIZE; + } + const size_t bufferSize = memPools.at(outputArg.location.poolIndex).getHidlMemory().size(); if (bufferSize < outputSize) { - ALOGW("ArmnnPreparedModel_1_2::Execute failed"); + ALOGW("ArmnnPreparedModel_1_2::Execute failed: bufferSize < outputSize"); return V1_0::ErrorStatus::OUTPUT_INSUFFICIENT_SIZE; } |