From a4983cec09a3e24bf4e99abd31aa11842e8b365f Mon Sep 17 00:00:00 2001 From: Finn Williams Date: Thu, 23 Jul 2020 12:55:12 +0100 Subject: 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 Signed-off-by: Teresa Charlin --- ArmnnPreparedModel_1_2.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'ArmnnPreparedModel_1_2.cpp') 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 ArmnnPreparedModel_1_2::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; } -- cgit v1.2.1