blob: 70e377d19b5bcbe03e2fa631cf937f9dcb11ab59 [file] [log] [blame]
Narumol Prangnawarat7ddbbae2020-03-13 10:26:05 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include "RefConvertBf16ToFp32Workload.hpp"
7#include "RefWorkloadUtils.hpp"
8
9#include <armnnUtils/FloatingPointConverter.hpp>
10
11#include <BFloat16.hpp>
12
13namespace armnn
14{
15
16void RefConvertBf16ToFp32Workload::Execute() const
17{
Finn Williamsb8181f72021-04-07 10:23:21 +010018 Execute(m_Data.m_Inputs, m_Data.m_Outputs);
19}
20
21void RefConvertBf16ToFp32Workload::ExecuteAsync(WorkingMemDescriptor &workingMemDescriptor)
22{
23 Execute(workingMemDescriptor.m_Inputs, workingMemDescriptor.m_Outputs);
24}
25
26void RefConvertBf16ToFp32Workload::Execute(std::vector<ITensorHandle*> inputs,
27 std::vector<ITensorHandle*> outputs) const
28{
Narumol Prangnawarat7ddbbae2020-03-13 10:26:05 +000029 ARMNN_SCOPED_PROFILING_EVENT(Compute::CpuRef, "RefConvertBf16ToFp32Workload_Execute");
30
Finn Williamsb8181f72021-04-07 10:23:21 +010031 const BFloat16* const input = reinterpret_cast<const BFloat16*>(inputs[0]->Map());
32 float* const output = reinterpret_cast<float*>(outputs[0]->Map());
Narumol Prangnawarat7ddbbae2020-03-13 10:26:05 +000033
Finn Williamsb8181f72021-04-07 10:23:21 +010034 unsigned int numElements = GetTensorInfo(inputs[0]).GetNumElements();
Narumol Prangnawarat7ddbbae2020-03-13 10:26:05 +000035 armnnUtils::FloatingPointConverter::ConvertBFloat16ToFloat32(input, numElements, output);
36}
37
38} //namespace armnn