From 2d9956162dd002a41f7fb4fa6753195d33524c7f Mon Sep 17 00:00:00 2001 From: David Monahan Date: Mon, 1 Nov 2021 10:16:37 +0000 Subject: IVGCVSW-6359 Added support for Float16 (Half) to Execute Network * Allows the user to specify float16 as a datatype * Does not contain support for float16 on the TfLiteDelegate via ExecuteNetwork Signed-off-by: David Monahan Change-Id: Icba56feedab32662e2cf671cc46ada899cf40c6c --- .../NetworkExecutionUtils.cpp | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp') diff --git a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp index 6c74aaa6ed..00ed55caaf 100644 --- a/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp +++ b/tests/NetworkExecutionUtils/NetworkExecutionUtils.cpp @@ -33,6 +33,15 @@ auto ParseDataArray(std::istream& stream) return ParseArrayImpl(stream, [](const std::string& s) { return std::stof(s); }); } +template<> +auto ParseDataArray(std::istream& stream) +{ + return ParseArrayImpl(stream, [](const std::string& s) + { + return armnn::Half(std::stof(s)); + }); +} + template<> auto ParseDataArray(std::istream& stream) { @@ -139,6 +148,20 @@ void TensorPrinter::operator()(const std::vector& values) WriteToFile(values); } +void TensorPrinter::operator()(const std::vector& values) +{ + if (m_PrintToConsole) + { + std::cout << m_OutputBinding << ": "; + ForEachValue(values, [](armnn::Half value) + { + printf("%f ", static_cast(value)); + }); + printf("\n"); + } + WriteToFile(values); +} + void TensorPrinter::operator()(const std::vector& values) { if(m_DequantizeOutput) @@ -261,6 +284,12 @@ void PopulateTensorWithData(armnnUtils::TContainer& tensorData, GenerateDummyTensorData(numElements); } } + else if (dataTypeStr.compare("float16") == 0) + { + tensorData = readFromFile ? + ParseDataArray(inputTensorFile) : + GenerateDummyTensorData(numElements); + } else if (dataTypeStr.compare("int") == 0) { tensorData = readFromFile ? -- cgit v1.2.1