ArmNN
 21.11
armnn::optimizations Namespace Reference

Namespaces

 pad_fold
 

Classes

class  AddBroadcastReshapeLayerImpl
 
class  AddDebugImpl
 
struct  BFloat16ToFloat32
 
class  ConvertConstants
 
class  ConvertFp32NetworkToBf16Impl
 
class  ConvertFp32NetworkToFp16Impl
 
struct  Float16ToFloat32
 
struct  Float32ToBFloat16
 
struct  Float32ToFloat16
 
class  FuseBatchNorm
 
struct  IsBFloat16Layer
 
struct  IsFloat16Layer
 
struct  IsFloat32Layer
 
class  MovePermuteUpImpl
 
class  MoveTransposeUpImpl
 
class  OptimizeConsecutiveReshapesImpl
 
class  OptimizeInverseConversionsImpl
 
class  OptimizeInversePermutesImpl
 
class  PermuteAndBatchToSpaceAsDepthToSpaceImpl
 Replaces Permute leading into BatchToSpace with a DepthToSpace in the case where the Permute swaps the batch and channels dimensions such that the replacement is valid. More...
 
class  PermuteAsReshapeImpl
 
class  RedirectMembersToConstantInputsImpl
 
class  SquashEqualSiblingsImpl
 
class  TransposeAsReshapeImpl
 

Typedefs

using AddBroadcastReshapeLayer = OptimizeForType< Layer, AddBroadcastReshapeLayerImpl >
 
using InsertDebugLayer = OptimizeForType< Layer, AddDebugImpl >
 
using ConvertConstantsBFloatToFloat = ConvertConstants< BFloat16ToFloat32, IsFloat32Layer >
 
using ConvertConstantsFloatToBFloat = ConvertConstants< Float32ToBFloat16, IsBFloat16Layer >
 
using ConvertConstantsHalfToFloat = ConvertConstants< Float16ToFloat32, IsFloat32Layer >
 
using ConvertConstantsFloatToHalf = ConvertConstants< Float32ToFloat16, IsFloat16Layer >
 
using Fp32NetworkToBf16Converter = OptimizeForType< Layer, ConvertFp32NetworkToBf16Impl >
 
using Fp32NetworkToFp16Converter = OptimizeForType< Layer, ConvertFp32NetworkToFp16Impl >
 
using FoldPadIntoConvolution2d = OptimizeForExclusiveConnection< PadLayer, Convolution2dLayer, pad_fold::FoldPadIntoConvolution2dImpl >
 
using FoldPadIntoDepthwiseConvolution2d = OptimizeForExclusiveConnection< PadLayer, DepthwiseConvolution2dLayer, pad_fold::FoldPadIntoDepthwiseConvolution2dImpl >
 
using FoldPadIntoPooling2d = OptimizeForExclusiveConnection< PadLayer, Pooling2dLayer, pad_fold::FoldPadIntoPooling2dImpl >
 
using FuseBatchNormIntoConvolution2DFloat32 = OptimizeForExclusiveConnection< Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm< Convolution2dLayer, armnn::DataType::Float32 > >
 
using FuseBatchNormIntoConvolution2DFloat16 = OptimizeForExclusiveConnection< Convolution2dLayer, BatchNormalizationLayer, FuseBatchNorm< Convolution2dLayer, armnn::DataType::Float16 > >
 
using FuseBatchNormIntoDepthwiseConvolution2DFloat32 = OptimizeForExclusiveConnection< DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm< DepthwiseConvolution2dLayer, armnn::DataType::Float32 > >
 
using FuseBatchNormIntoDepthwiseConvolution2DFloat16 = OptimizeForExclusiveConnection< DepthwiseConvolution2dLayer, BatchNormalizationLayer, FuseBatchNorm< DepthwiseConvolution2dLayer, armnn::DataType::Float16 > >
 
using MovePermuteUp = OptimizeForConnection< Layer, PermuteLayer, MovePermuteUpImpl >
 
using MoveTransposeUp = OptimizeForConnection< Layer, TransposeLayer, MoveTransposeUpImpl >
 
using OptimizeConsecutiveReshapes = OptimizeForConnection< ReshapeLayer, ReshapeLayer, OptimizeConsecutiveReshapesImpl >
 
using OptimizeInverseConversionsFp16 = OptimizeForConnection< ConvertFp16ToFp32Layer, ConvertFp32ToFp16Layer, OptimizeInverseConversionsImpl >
 
using OptimizeInverseConversionsFp32 = OptimizeForConnection< ConvertFp32ToFp16Layer, ConvertFp16ToFp32Layer, OptimizeInverseConversionsImpl >
 
using OptimizeInversePermutes = OptimizeForConnection< PermuteLayer, PermuteLayer, OptimizeInversePermutesImpl< PermuteLayer > >
 
using OptimizeInverseTransposes = OptimizeForConnection< TransposeLayer, TransposeLayer, OptimizeInversePermutesImpl< TransposeLayer > >
 
using PermuteAndBatchToSpaceAsDepthToSpace = OptimizeForConnection< PermuteLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl< PermuteLayer > >
 
using TransposeAndBatchToSpaceAsDepthToSpace = OptimizeForConnection< TransposeLayer, BatchToSpaceNdLayer, PermuteAndBatchToSpaceAsDepthToSpaceImpl< TransposeLayer > >
 
using PermuteAsReshape = OptimizeForType< PermuteLayer, PermuteAsReshapeImpl >
 
using RedirectMembersToConstantInputs = OptimizeForType< FullyConnectedLayer, RedirectMembersToConstantInputsImpl >
 
using SquashEqualPermuteSiblings = OptimizeForConnection< Layer, PermuteLayer, SquashEqualSiblingsImpl< PermuteLayer > >
 
using SquashEqualTransposeSiblings = OptimizeForConnection< Layer, TransposeLayer, SquashEqualSiblingsImpl< TransposeLayer > >
 
using SquashEqualReshapeSiblings = OptimizeForConnection< Layer, ReshapeLayer, SquashEqualSiblingsImpl< ReshapeLayer > >
 
using TransposeAsReshape = OptimizeForType< TransposeLayer, TransposeAsReshapeImpl >
 

Functions

template<typename LayerT >
LayerT * ConvertWeight (Layer *l)
 

Typedef Documentation

◆ AddBroadcastReshapeLayer

◆ ConvertConstantsBFloatToFloat

◆ ConvertConstantsFloatToBFloat

◆ ConvertConstantsFloatToHalf

◆ ConvertConstantsHalfToFloat

◆ FoldPadIntoConvolution2d

◆ FoldPadIntoDepthwiseConvolution2d

◆ FoldPadIntoPooling2d

◆ Fp32NetworkToBf16Converter

◆ Fp32NetworkToFp16Converter

◆ FuseBatchNormIntoConvolution2DFloat16

◆ FuseBatchNormIntoConvolution2DFloat32

◆ FuseBatchNormIntoDepthwiseConvolution2DFloat16

◆ FuseBatchNormIntoDepthwiseConvolution2DFloat32

◆ InsertDebugLayer

Definition at line 34 of file AddDebug.hpp.

◆ MovePermuteUp

◆ MoveTransposeUp

◆ OptimizeConsecutiveReshapes

◆ OptimizeInverseConversionsFp16

◆ OptimizeInverseConversionsFp32

◆ OptimizeInversePermutes

◆ OptimizeInverseTransposes

◆ PermuteAndBatchToSpaceAsDepthToSpace

◆ PermuteAsReshape

◆ RedirectMembersToConstantInputs

◆ SquashEqualPermuteSiblings

◆ SquashEqualReshapeSiblings

◆ SquashEqualTransposeSiblings

◆ TransposeAndBatchToSpaceAsDepthToSpace

◆ TransposeAsReshape

Function Documentation

◆ ConvertWeight()

LayerT* armnn::optimizations::ConvertWeight ( Layer l)
inline

Definition at line 18 of file ConvertFp32NetworkToBf16.hpp.

References armnn::BFloat16, FloatingPointConverter::ConvertFloat32ToBFloat16(), armnn::Convolution2d, armnn::Float32, armnn::FullyConnected, TensorInfo::GetDataType(), TensorInfo::GetNumElements(), and armnn::info.

19 {
20  LayerT* layer = PolymorphicDowncast<LayerT*>(l);
21  if ((layer->GetType() == LayerType::Convolution2d || layer->GetType() == LayerType::FullyConnected)
22  && layer->m_Weight)
23  {
24  const TensorInfo& info = layer->m_Weight->GetTensorInfo();
25 
26  if (info.GetDataType() == DataType::Float32)
27  {
28  std::vector<BFloat16> newValues(info.GetNumElements());
29 
31  layer->m_Weight->template GetConstTensor<float>(),
32  info.GetNumElements(),
33  newValues.data());
34 
35  TensorInfo newInfo(info);
36  newInfo.SetDataType(DataType::BFloat16);
37  ConstTensor newInput(newInfo, newValues);
38  layer->m_Weight.reset(new ScopedTensorHandle(newInput));
39  }
40  }
41  return layer;
42 }
static void ConvertFloat32ToBFloat16(const float *srcFloat32Buffer, size_t numElements, void *dstBFloat16Buffer)
void FullyConnected(const TensorShape &rInputShape, Decoder< float > &rInputDecoder, const TensorShape &rOutputShape, Encoder< float > &rOutputEncoder, const TensorShape &rWeightsShape, Decoder< float > &rWeightDecoder, Decoder< float > *pBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)
Performs a matrix multiplication and optionally adds a bias.