#include <armnnUtils/FloatingPointConverter.hpp>
#include <BFloat16.hpp>
#include <Half.hpp>
#include <boost/test/unit_test.hpp>
Go to the source code of this file.
◆ BOOST_AUTO_TEST_CASE() [1/4]
BOOST_AUTO_TEST_CASE |
( |
TestConvertFp32ToFp16 |
| ) |
|
Definition at line 15 of file FloatingPointConverterTest.cpp.
References FloatingPointConverter::ConvertFloat32To16().
17 using namespace half_float::literal;
19 float floatArray[] = { 1.0f, 2.0f, 0.5f, 3.1f, 2.4f,
20 5.666f, 6.444f, 7.1f, 432.121f, 12.22f };
21 size_t numFloats =
sizeof(floatArray) /
sizeof(floatArray[0]);
22 std::vector<armnn::Half> convertedBuffer(numFloats, 0.0_h);
26 for (
size_t i = 0; i < numFloats; i++)
30 BOOST_CHECK_EQUAL(expected, actual);
32 float convertedHalf = actual;
33 BOOST_CHECK_CLOSE(floatArray[i], convertedHalf, 0.07);
static void ConvertFloat32To16(const float *srcFloat32Buffer, size_t numElements, void *dstFloat16Buffer)
Converts a buffer of FP32 values to FP16, and stores in the given dstFloat16Buffer.
◆ BOOST_AUTO_TEST_CASE() [2/4]
BOOST_AUTO_TEST_CASE |
( |
TestConvertFp16ToFp32 |
| ) |
|
Definition at line 37 of file FloatingPointConverterTest.cpp.
References FloatingPointConverter::ConvertFloat16To32().
39 using namespace half_float::literal;
41 armnn::Half halfArray[] = { 1.0_h, 2.0_h, 0.5_h, 3.1_h, 2.4_h,
42 5.666_h, 6.444_h, 7.1_h, 432.121_h, 12.22_h };
43 size_t numFloats =
sizeof(halfArray) /
sizeof(halfArray[0]);
44 std::vector<float> convertedBuffer(numFloats, 0.0f);
48 for (
size_t i = 0; i < numFloats; i++)
50 float expected(halfArray[i]);
51 float actual = convertedBuffer[i];
52 BOOST_CHECK_EQUAL(expected, actual);
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
◆ BOOST_AUTO_TEST_CASE() [3/4]
BOOST_AUTO_TEST_CASE |
( |
TestConvertFloat32ToBFloat16 |
| ) |
|
Definition at line 56 of file FloatingPointConverterTest.cpp.
References FloatingPointConverter::ConvertFloat32ToBFloat16(), and BFloat16::Val().
58 float floatArray[] = { 1.704735E38f,
77 uint16_t expectedResult[] = { 0x7F00,
96 size_t numFloats =
sizeof(floatArray) /
sizeof(floatArray[0]);
98 std::vector<armnn::BFloat16> convertedBuffer(numFloats);
102 for (
size_t i = 0; i < numFloats; i++)
105 BOOST_CHECK_EQUAL(expectedResult[i], actual.
Val());
static void ConvertFloat32ToBFloat16(const float *srcFloat32Buffer, size_t numElements, void *dstBFloat16Buffer)
◆ BOOST_AUTO_TEST_CASE() [4/4]
BOOST_AUTO_TEST_CASE |
( |
TestConvertBFloat16ToFloat32 |
| ) |
|
Definition at line 109 of file FloatingPointConverterTest.cpp.
References BOOST_AUTO_TEST_SUITE_END(), and FloatingPointConverter::ConvertBFloat16ToFloat32().
111 uint16_t bf16Array[] = { 16256, 16320, 38699, 16384, 49156, 32639 };
112 size_t numFloats =
sizeof(bf16Array) /
sizeof(bf16Array[0]);
113 float expectedResult[] = { 1.0f, 1.5f, -5.525308E-25f, 2.0f, -2.0625f, 3.3895314E38f };
114 std::vector<float> convertedBuffer(numFloats, 0.0f);
118 for (
size_t i = 0; i < numFloats; i++)
120 float actual = convertedBuffer[i];
121 BOOST_CHECK_EQUAL(expectedResult[i], actual);
static void ConvertBFloat16ToFloat32(const void *srcBFloat16Buffer, size_t numElements, float *dstFloat32Buffer)