diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-02-28 12:45:21 +0000 |
---|---|---|
committer | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2020-03-03 15:59:39 +0000 |
commit | c3bf6efb48a4540c8addcc02813c9381e4fceb1f (patch) | |
tree | 55fd9c3fa639ee32aa847dda2a525a7badee9e8d /src | |
parent | 490b7becb8029ead26423b0d62e631a929e55d6c (diff) | |
download | armnn-c3bf6efb48a4540c8addcc02813c9381e4fceb1f.tar.gz |
IVGCVSW-4508 Add BFloat16 data type
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Ie2fcf06d0bae9e2ef958e60ab9e8b121fdc7b590
Diffstat (limited to 'src')
-rw-r--r-- | src/armnn/ResolveType.hpp | 7 | ||||
-rw-r--r-- | src/armnn/test/UtilsTests.cpp | 19 | ||||
-rw-r--r-- | src/armnnUtils/BFloat16.hpp | 13 |
3 files changed, 39 insertions, 0 deletions
diff --git a/src/armnn/ResolveType.hpp b/src/armnn/ResolveType.hpp index 66309344db..e1bea42d3c 100644 --- a/src/armnn/ResolveType.hpp +++ b/src/armnn/ResolveType.hpp @@ -6,6 +6,7 @@ #pragma once #include "armnn/Types.hpp" +#include "BFloat16.hpp" #include "Half.hpp" namespace armnn @@ -62,6 +63,12 @@ struct ResolveTypeImpl<DataType::Boolean> using Type = uint8_t; }; +template<> +struct ResolveTypeImpl<DataType::BFloat16> +{ + using Type = BFloat16; +}; + template<DataType DT> using ResolveType = typename ResolveTypeImpl<DT>::Type; diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp index 4c371d6ed9..faf4480029 100644 --- a/src/armnn/test/UtilsTests.cpp +++ b/src/armnn/test/UtilsTests.cpp @@ -85,6 +85,25 @@ BOOST_AUTO_TEST_CASE(HalfType) BOOST_CHECK((GetDataTypeName(armnn::DataType::Float16) == std::string("Float16"))); } +BOOST_AUTO_TEST_CASE(BFloatType) +{ + armnn::BFloat16 a = 16256; + + // Test BFloat16 type + BOOST_CHECK_EQUAL(sizeof(a), 2); + + // Test utility function returns correct type. + using ResolvedType = armnn::ResolveType<armnn::DataType::BFloat16>; + constexpr bool isBFloat16Type = std::is_same<armnn::BFloat16, ResolvedType>::value; + BOOST_CHECK(isBFloat16Type); + + //Test utility functions return correct size + BOOST_CHECK(GetDataTypeSize(armnn::DataType::BFloat16) == 2); + + //Test utility functions return correct name + BOOST_CHECK((GetDataTypeName(armnn::DataType::BFloat16) == std::string("BFloat16"))); +} + BOOST_AUTO_TEST_CASE(GraphTopologicalSortSimpleTest) { std::map<int, std::vector<int>> graph; diff --git a/src/armnnUtils/BFloat16.hpp b/src/armnnUtils/BFloat16.hpp new file mode 100644 index 0000000000..bce45aa1ff --- /dev/null +++ b/src/armnnUtils/BFloat16.hpp @@ -0,0 +1,13 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <stdint.h> + +namespace armnn +{ + using BFloat16 = uint16_t; +} //namespace armnn |