aboutsummaryrefslogtreecommitdiff
path: root/ArmnnPreparedModel_1_2.cpp
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2020-07-23 12:55:12 +0100
committerTeresa Charlin <teresa.charlinreyes@arm.com>2020-08-12 17:06:37 +0100
commita4983cec09a3e24bf4e99abd31aa11842e8b365f (patch)
tree0a09be7cdad7ad5c15bb24c67abf0f4cd4d6e47e /ArmnnPreparedModel_1_2.cpp
parentbf866e2dc7bd5936788fe213b5c0f74483ec1532 (diff)
downloadandroid-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.cpp11
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;
}