ArmNN
 23.05
FloatingPointConverter.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
8 #include "BFloat16.hpp"
9 #include "Half.hpp"
10 
11 #include <armnn/utility/Assert.hpp>
12 
13 namespace armnnUtils
14 {
15 
16 void FloatingPointConverter::ConvertFloat32To16(const float* srcFloat32Buffer,
17  size_t numElements,
18  void* dstFloat16Buffer)
19 {
20  ARMNN_ASSERT(srcFloat32Buffer != nullptr);
21  ARMNN_ASSERT(dstFloat16Buffer != nullptr);
22 
23  armnn::Half* pHalf = static_cast<armnn::Half*>(dstFloat16Buffer);
24 
25  for (size_t i = 0; i < numElements; i++)
26  {
27  pHalf[i] = armnn::Half(srcFloat32Buffer[i]);
28  }
29 }
30 
31 void FloatingPointConverter::ConvertFloat16To32(const void* srcFloat16Buffer,
32  size_t numElements,
33  float* dstFloat32Buffer)
34 {
35  ARMNN_ASSERT(srcFloat16Buffer != nullptr);
36  ARMNN_ASSERT(dstFloat32Buffer != nullptr);
37 
38  const armnn::Half* pHalf = static_cast<const armnn::Half*>(srcFloat16Buffer);
39 
40  for (size_t i = 0; i < numElements; i++)
41  {
42  dstFloat32Buffer[i] = pHalf[i];
43  }
44 }
45 
46 } //namespace armnnUtils
Assert.hpp
armnnUtils::FloatingPointConverter::ConvertFloat32To16
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.
Definition: FloatingPointConverter.cpp:16
armnnUtils
Definition: CompatibleTypes.hpp:10
armnn::Half
half_float::half Half
Definition: Half.hpp:22
Half.hpp
ARMNN_ASSERT
#define ARMNN_ASSERT(COND)
Definition: Assert.hpp:14
FloatingPointConverter.hpp
armnnUtils::FloatingPointConverter::ConvertFloat16To32
static void ConvertFloat16To32(const void *srcFloat16Buffer, size_t numElements, float *dstFloat32Buffer)
Definition: FloatingPointConverter.cpp:31
BFloat16.hpp