#include <armnn/backends/IBackendContext.hpp>
#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
#include <Optimizer.hpp>
#include <arm_compute/runtime/CL/CLBufferAllocator.h>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const
{
return std::make_unique<ClWorkloadFactory>(
- boost::polymorphic_pointer_downcast<ClMemoryManager>(memoryManager));
+ PolymorphicPointerDowncast<ClMemoryManager>(memoryManager));
}
IBackendInternal::IWorkloadFactoryPtr ClBackend::CreateWorkloadFactory(
registry.RegisterMemoryManager(memoryManager);
return std::make_unique<ClWorkloadFactory>(
- boost::polymorphic_pointer_downcast<ClMemoryManager>(memoryManager));
+ PolymorphicPointerDowncast<ClMemoryManager>(memoryManager));
}
std::vector<ITensorHandleFactory::FactoryId> ClBackend::GetHandleFactoryPreferences() const
#include <arm_compute/runtime/CL/CLScheduler.h>
#include <boost/format.hpp>
-#include <boost/polymorphic_cast.hpp>
namespace cl
{
#include <Half.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
#include <arm_compute/runtime/CL/CLTensor.h>
#include <arm_compute/runtime/CL/CLSubTensor.h>
#include <arm_compute/runtime/IMemoryGroup.h>
#include <arm_compute/core/TensorShape.h>
#include <arm_compute/core/Coordinates.h>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
virtual void SetMemoryGroup(const std::shared_ptr<arm_compute::IMemoryGroup>& memoryGroup) override
{
- m_MemoryGroup = boost::polymorphic_pointer_downcast<arm_compute::MemoryGroup>(memoryGroup);
+ m_MemoryGroup = PolymorphicPointerDowncast<arm_compute::MemoryGroup>(memoryGroup);
}
TensorShape GetStrides() const override
#include <armnn/backends/IBackendInternal.hpp>
#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
#include <cl/ClBackend.hpp>
#include <cl/ClWorkloadFactory.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace
{
static armnn::ClWorkloadFactory GetFactory(
const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
{
- return armnn::ClWorkloadFactory(boost::polymorphic_pointer_downcast<armnn::ClMemoryManager>(memoryManager));
+ return armnn::ClWorkloadFactory(armnn::PolymorphicPointerDowncast<armnn::ClMemoryManager>(memoryManager));
}
};
#include "ClConcatWorkload.hpp"
#include "ClWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <cl/ClTensorHandle.hpp>
#include <cl/ClLayerSupport.hpp>
#include <arm_compute/core/Types.h>
#include <arm_compute/runtime/CL/functions/CLConcatenateLayer.h>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
using namespace armcomputetensorutils;
std::vector<arm_compute::ICLTensor *> aclInputs;
for (auto input : m_Data.m_Inputs)
{
- arm_compute::ICLTensor& aclInput = boost::polymorphic_pointer_downcast<IClTensorHandle>(input)->GetTensor();
+ arm_compute::ICLTensor& aclInput = armnn::PolymorphicPointerDowncast<IClTensorHandle>(input)->GetTensor();
aclInputs.emplace_back(&aclInput);
}
- arm_compute::ICLTensor& output = boost::polymorphic_pointer_downcast<IClTensorHandle>(
- m_Data.m_Outputs[0])->GetTensor();
+
+ arm_compute::ICLTensor& output =
+ armnn::PolymorphicPointerDowncast<IClTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
// Create the layer function
auto layer = std::make_unique<arm_compute::CLConcatenateLayer>();
#include "ClWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <cl/ClTensorHandle.hpp>
#include <boost/numeric/conversion/cast.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
namespace armnn
{
arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
arm_compute::ICLTensor& input =
- boost::polymorphic_pointer_downcast<IClTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IClTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
input.info()->set_data_layout(aclDataLayout);
int32_t blockSize = boost::numeric_cast<int32_t>(desc.m_Parameters.m_BlockSize);
arm_compute::ICLTensor& output =
- boost::polymorphic_pointer_downcast<IClTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IClTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
output.info()->set_data_layout(aclDataLayout);
m_Layer.configure(&input, &output, blockSize);
#include "ClWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <arm_compute/core/Types.h>
#include <cl/ClLayerSupport.hpp>
#include <cl/ClTensorHandle.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
using namespace armcomputetensorutils;
{
m_Data.ValidateInputsOutputs("ClDequantizeWorkload", 1, 1);
- arm_compute::ICLTensor& input = boost::polymorphic_pointer_downcast<IClTensorHandle>(
+ arm_compute::ICLTensor& input = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
m_Data.m_Inputs[0])->GetTensor();
- arm_compute::ICLTensor& output = boost::polymorphic_pointer_downcast<IClTensorHandle>(
+ arm_compute::ICLTensor& output = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
m_Data.m_Outputs[0])->GetTensor();
m_Layer.reset(new arm_compute::CLDequantizationLayer());
#include <aclCommon/ArmComputeUtils.hpp>
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <cl/ClLayerSupport.hpp>
#include <cl/ClTensorHandle.hpp>
#include <cl/ClLayerSupport.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
using namespace armcomputetensorutils;
m_Data.ValidateInputsOutputs("ClSpaceToBatchNdWorkload", 1, 1);
arm_compute::ICLTensor& input =
- boost::polymorphic_pointer_downcast<IClTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
+ armnn::PolymorphicPointerDowncast<IClTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
arm_compute::ICLTensor& output =
- boost::polymorphic_pointer_downcast<IClTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
+ armnn::PolymorphicPointerDowncast<IClTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
// ArmNN blockShape is [H, W] Cl asks for W, H
int32_t blockHeight = boost::numeric_cast<int32_t>(m_Data.m_Parameters.m_BlockShape[0]);
#include <aclCommon/ArmComputeTensorUtils.hpp>
#include <aclCommon/ArmComputeUtils.hpp>
#include <arm_compute/runtime/CL/functions/CLSplit.h>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <cl/ClTensorHandle.hpp>
return;
}
- arm_compute::ICLTensor& input = boost::polymorphic_pointer_downcast<IClTensorHandle>(
+ arm_compute::ICLTensor& input = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
m_Data.m_Inputs[0])->GetTensor();
std::vector<arm_compute::ICLTensor *> aclOutputs;
for (auto output : m_Data.m_Outputs)
{
- arm_compute::ICLTensor& aclOutput = boost::polymorphic_pointer_downcast<IClTensorHandle>(output)->GetTensor();
+ arm_compute::ICLTensor& aclOutput = armnn::PolymorphicPointerDowncast<IClTensorHandle>(output)->GetTensor();
aclOutputs.emplace_back(&aclOutput);
}
#include "ClStackWorkload.hpp"
#include "ClWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <cl/ClTensorHandle.hpp>
#include <cl/ClLayerSupport.hpp>
#include <arm_compute/core/Types.h>
#include <boost/numeric/conversion/cast.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
namespace armnn
{
std::vector<arm_compute::ICLTensor*> aclInputs;
for (auto input : m_Data.m_Inputs)
{
- arm_compute::ICLTensor& aclInput = boost::polymorphic_pointer_downcast<IClTensorHandle>(input)->GetTensor();
+ arm_compute::ICLTensor& aclInput = armnn::PolymorphicPointerDowncast<IClTensorHandle>(input)->GetTensor();
aclInputs.emplace_back(&aclInput);
}
- arm_compute::ICLTensor& output = boost::polymorphic_pointer_downcast<IClTensorHandle>(
+ arm_compute::ICLTensor& output = armnn::PolymorphicPointerDowncast<IClTensorHandle>(
m_Data.m_Outputs[0])->GetTensor();
m_Layer.reset(new arm_compute::CLStackLayer());
#include <armnn/backends/IBackendContext.hpp>
#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
+
#include <Optimizer.hpp>
#include <arm_compute/runtime/Allocator.h>
#include <boost/cast.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
namespace armnn
{
const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const
{
return std::make_unique<NeonWorkloadFactory>(
- boost::polymorphic_pointer_downcast<NeonMemoryManager>(memoryManager));
+ PolymorphicPointerDowncast<NeonMemoryManager>(memoryManager));
}
IBackendInternal::IWorkloadFactoryPtr NeonBackend::CreateWorkloadFactory(
tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
return std::make_unique<NeonWorkloadFactory>(
- boost::polymorphic_pointer_downcast<NeonMemoryManager>(memoryManager));
+ PolymorphicPointerDowncast<NeonMemoryManager>(memoryManager));
}
IBackendInternal::IBackendContextPtr NeonBackend::CreateBackendContext(const IRuntime::CreationOptions&) const
#include <aclCommon/ArmComputeTensorHandle.hpp>
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <arm_compute/runtime/MemoryGroup.h>
#include <arm_compute/runtime/IMemoryGroup.h>
#include <arm_compute/core/TensorShape.h>
#include <arm_compute/core/Coordinates.h>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
virtual void SetMemoryGroup(const std::shared_ptr<arm_compute::IMemoryGroup>& memoryGroup) override
{
- m_MemoryGroup = boost::polymorphic_pointer_downcast<arm_compute::MemoryGroup>(memoryGroup);
+ m_MemoryGroup = PolymorphicPointerDowncast<arm_compute::MemoryGroup>(memoryGroup);
}
virtual const void* Map(bool /* blocking = true */) const override
#include <neon/workloads/NeonWorkloadUtils.hpp>
#include <neon/workloads/NeonWorkloads.hpp>
-#include <boost/polymorphic_cast.hpp>
-
namespace armnn
{
#include <armnn/backends/IBackendInternal.hpp>
#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/test/WorkloadFactoryHelper.hpp>
#include <neon/NeonBackend.hpp>
#include <neon/NeonWorkloadFactory.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace
{
const armnn::IBackendInternal::IMemoryManagerSharedPtr& memoryManager)
{
return armnn::NeonWorkloadFactory(
- boost::polymorphic_pointer_downcast<armnn::NeonMemoryManager>(memoryManager));
+ armnn::PolymorphicPointerDowncast<armnn::NeonMemoryManager>(memoryManager));
}
};
#include "NeonBatchToSpaceNdWorkload.hpp"
#include "NeonWorkloadUtils.hpp"
+
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <ResolveType.hpp>
namespace armnn
m_Data.ValidateInputsOutputs("NeonBatchToSpaceNdWorkload", 1, 1);
arm_compute::ITensor& input =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
+ armnn::PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
arm_compute::ITensor& output =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
+ armnn::PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
input.info()->set_data_layout(aclDataLayout);
#include "NeonComparisonWorkload.hpp"
#include <aclCommon/ArmComputeUtils.hpp>
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
namespace armnn
{
m_Data.ValidateInputsOutputs("NeonComparisonWorkload", 2, 1);
- arm_compute::ITensor& input0 = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
- arm_compute::ITensor& input1 = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Inputs[1])->GetTensor();
- arm_compute::ITensor& output = boost::polymorphic_downcast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
+ arm_compute::ITensor& input0 = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[0])->GetTensor();
+ arm_compute::ITensor& input1 = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Inputs[1])->GetTensor();
+ arm_compute::ITensor& output = PolymorphicDowncast<IAclTensorHandle*>(m_Data.m_Outputs[0])->GetTensor();
const arm_compute::ComparisonOperation comparisonOperation = ConvertComparisonOperationToAcl(m_Data.m_Parameters);
#include "NeonWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <neon/NeonTensorHandle.hpp>
-
-
namespace armnn
{
using namespace armcomputetensorutils;
std::vector<arm_compute::ITensor *> aclInputs;
for (auto input : m_Data.m_Inputs)
{
- arm_compute::ITensor& aclInput = boost::polymorphic_pointer_downcast<IAclTensorHandle>(input)->GetTensor();
+ arm_compute::ITensor& aclInput = armnn::PolymorphicPointerDowncast<IAclTensorHandle>(input)->GetTensor();
aclInputs.emplace_back(&aclInput);
}
- arm_compute::ITensor& output = boost::polymorphic_pointer_downcast<IAclTensorHandle>(
+ arm_compute::ITensor& output = armnn::PolymorphicPointerDowncast<IAclTensorHandle>(
m_Data.m_Outputs[0])->GetTensor();
// Create the layer function
#include "NeonWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <boost/numeric/conversion/cast.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
namespace armnn
{
arm_compute::DataLayout aclDataLayout = ConvertDataLayout(m_Data.m_Parameters.m_DataLayout);
arm_compute::ITensor& input =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
input.info()->set_data_layout(aclDataLayout);
int32_t blockSize = boost::numeric_cast<int32_t>(desc.m_Parameters.m_BlockSize);
arm_compute::ITensor& output =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
output.info()->set_data_layout(aclDataLayout);
m_Layer.configure(&input, &output, blockSize);
#include <neon/NeonTensorHandle.hpp>
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <arm_compute/core/Types.h>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
using namespace armcomputetensorutils;
{
m_Data.ValidateInputsOutputs("NeonQuantizeWorkload", 1, 1);
- arm_compute::ITensor& input = boost::polymorphic_pointer_downcast<IAclTensorHandle>(
+ arm_compute::ITensor& input = PolymorphicPointerDowncast<IAclTensorHandle>(
m_Data.m_Inputs[0])->GetTensor();
- arm_compute::ITensor& output = boost::polymorphic_pointer_downcast<IAclTensorHandle>(
+ arm_compute::ITensor& output = PolymorphicPointerDowncast<IAclTensorHandle>(
m_Data.m_Outputs[0])->GetTensor();
m_Layer.reset(new arm_compute::NEQuantizationLayer());
#include "NeonSpaceToBatchNdWorkload.hpp"
#include "NeonWorkloadUtils.hpp"
+
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <ResolveType.hpp>
namespace armnn
m_Data.ValidateInputsOutputs("NESpaceToBatchNdWorkload", 1, 1);
arm_compute::ITensor& input =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Inputs[0])->GetTensor();
arm_compute::ITensor& output =
- boost::polymorphic_pointer_downcast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
+ PolymorphicPointerDowncast<IAclTensorHandle>(m_Data.m_Outputs[0])->GetTensor();
// ArmNN blockShape is [H, W] Cl asks for W, H
int32_t blockHeight = boost::numeric_cast<int32_t>(m_Data.m_Parameters.m_BlockShape[0]);
std::vector<arm_compute::ITensor *> aclOutputs;
for (auto output : m_Data.m_Outputs)
{
- arm_compute::ITensor& aclOutput = boost::polymorphic_pointer_downcast<IAclTensorHandle>(output)->GetTensor();
+ arm_compute::ITensor& aclOutput = PolymorphicPointerDowncast<IAclTensorHandle>(output)->GetTensor();
aclOutputs.emplace_back(&aclOutput);
}
#include "NeonWorkloadUtils.hpp"
#include <aclCommon/ArmComputeTensorUtils.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <backendsCommon/CpuTensorHandle.hpp>
#include <neon/NeonTensorHandle.hpp>
#include <boost/numeric/conversion/cast.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
namespace armnn
{
std::vector<arm_compute::ITensor*> aclInputs;
for (auto input : m_Data.m_Inputs)
{
- arm_compute::ITensor& aclInput = boost::polymorphic_pointer_downcast<IAclTensorHandle>(input)->GetTensor();
+ arm_compute::ITensor& aclInput = PolymorphicPointerDowncast<IAclTensorHandle>(input)->GetTensor();
aclInputs.emplace_back(&aclInput);
}
- arm_compute::ITensor& output = boost::polymorphic_pointer_downcast<IAclTensorHandle>(
+ arm_compute::ITensor& output = PolymorphicPointerDowncast<IAclTensorHandle>(
m_Data.m_Outputs[0])->GetTensor();
m_Layer.reset(new arm_compute::NEStackLayer());
#include "RefTensorHandleFactory.hpp"
#include <armnn/BackendRegistry.hpp>
-
#include <armnn/backends/IBackendContext.hpp>
#include <armnn/backends/IMemoryManager.hpp>
+#include <armnn/utility/PolymorphicDowncast.hpp>
#include <Optimizer.hpp>
-#include <boost/polymorphic_pointer_cast.hpp>
-
namespace armnn
{
IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory(
const IBackendInternal::IMemoryManagerSharedPtr& memoryManager) const
{
- return std::make_unique<RefWorkloadFactory>(boost::polymorphic_pointer_downcast<RefMemoryManager>(memoryManager));
+ return std::make_unique<RefWorkloadFactory>(PolymorphicPointerDowncast<RefMemoryManager>(memoryManager));
}
IBackendInternal::IWorkloadFactoryPtr RefBackend::CreateWorkloadFactory(
tensorHandleFactoryRegistry.RegisterMemoryManager(memoryManager);
- return std::make_unique<RefWorkloadFactory>(boost::polymorphic_pointer_downcast<RefMemoryManager>(memoryManager));
+ return std::make_unique<RefWorkloadFactory>(PolymorphicPointerDowncast<RefMemoryManager>(memoryManager));
}
IBackendInternal::IBackendContextPtr RefBackend::CreateBackendContext(const IRuntime::CreationOptions&) const