16 template<
typename Workload>
17 void CheckInputOutput(std::unique_ptr<Workload> workload,
const TensorInfo& inputInfo,
const TensorInfo& outputInfo)
19 auto queueDescriptor = workload->GetData();
20 auto inputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[0]);
21 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
22 BOOST_TEST((inputHandle->GetTensorInfo() == inputInfo));
23 BOOST_TEST((outputHandle->GetTensorInfo() == outputInfo));
26 template <
typename Workload>
27 void CheckInputsOutput(std::unique_ptr<Workload> workload,
32 auto queueDescriptor = workload->GetData();
33 auto inputHandle0 = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[0]);
34 auto inputHandle1 = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[1]);
35 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
36 BOOST_TEST((inputHandle0->GetTensorInfo() == inputInfo0));
37 BOOST_TEST((inputHandle1->GetTensorInfo() == inputInfo1));
38 BOOST_TEST((outputHandle->GetTensorInfo() == outputInfo));
43 std::shared_ptr<RefMemoryManager> memoryManager = std::make_shared<RefMemoryManager>();
52 template <
typename ActivationWorkloadType, armnn::DataType DataType>
53 static void RefCreateActivationWorkloadTest()
57 auto workload = CreateActivationWorkloadTest<ActivationWorkloadType, DataType>(factory, graph);
60 CheckInputOutput(std::move(workload),
67 RefCreateActivationWorkloadTest<RefActivationWorkload, armnn::DataType::Float32>();
72 RefCreateActivationWorkloadTest<RefActivationWorkload, armnn::DataType::QAsymmU8>();
75 template <
typename WorkloadType,
76 typename DescriptorType,
79 static void RefCreateElementwiseWorkloadTest()
83 auto workload = CreateElementwiseWorkloadTest<WorkloadType, DescriptorType, LayerType, DataType>(
86 CheckInputsOutput(std::move(workload),
94 RefCreateElementwiseWorkloadTest<RefAdditionWorkload<>,
102 RefCreateElementwiseWorkloadTest<RefAdditionWorkload<>,
110 RefCreateElementwiseWorkloadTest<RefAdditionWorkload<>,
118 RefCreateElementwiseWorkloadTest<RefAdditionWorkload<int32_t>,
126 RefCreateElementwiseWorkloadTest<RefSubtractionWorkload<>,
134 RefCreateElementwiseWorkloadTest<RefSubtractionWorkload<>,
142 RefCreateElementwiseWorkloadTest<RefSubtractionWorkload<>,
150 RefCreateElementwiseWorkloadTest<RefSubtractionWorkload<>,
158 RefCreateElementwiseWorkloadTest<RefSubtractionWorkload<int32_t>,
166 RefCreateElementwiseWorkloadTest<RefMultiplicationWorkload<>,
174 RefCreateElementwiseWorkloadTest<RefMultiplicationWorkload<>,
182 RefCreateElementwiseWorkloadTest<RefMultiplicationWorkload<>,
190 RefCreateElementwiseWorkloadTest<RefMultiplicationWorkload<int32_t>,
198 RefCreateElementwiseWorkloadTest<RefDivisionWorkload<>,
206 RefCreateElementwiseWorkloadTest<RefDivisionWorkload<>,
214 RefCreateElementwiseWorkloadTest<RefDivisionWorkload<>,
222 RefCreateElementwiseWorkloadTest<RefDivisionWorkload<>,
230 RefCreateElementwiseWorkloadTest<RefDivisionWorkload<int32_t>,
236 template <
typename BatchNormalizationWorkloadType, armnn::DataType DataType>
237 static void RefCreateBatchNormalizationWorkloadTest(
DataLayout dataLayout)
241 auto workload = CreateBatchNormalizationWorkloadTest<BatchNormalizationWorkloadType, DataType>(factory,
250 case DataLayout::NHWC:
251 inputShape = { 2, 4, 4, 3 };
252 outputShape = { 2, 4, 4, 3 };
254 case DataLayout::NCHW:
256 inputShape = { 2, 3, 4, 4 };
257 outputShape = { 2, 3, 4, 4 };
267 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload,armnn::DataType::Float32>
273 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::Float32>
279 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload,armnn::DataType::Float16>
285 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::Float16>
291 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::QAsymmU8>
297 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::QAsymmU8>
303 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::QSymmS16>
309 RefCreateBatchNormalizationWorkloadTest<RefBatchNormalizationWorkload, armnn::DataType::QSymmS16>
317 auto workload = CreateConvertFp16ToFp32WorkloadTest<RefConvertFp16ToFp32Workload>(factory, graph);
321 std::move(workload),
TensorInfo({1, 3, 2, 3}, DataType::Float16),
TensorInfo({1, 3, 2, 3}, DataType::Float32));
328 auto workload = CreateConvertFp32ToFp16WorkloadTest<RefConvertFp32ToFp16Workload>(factory, graph);
332 std::move(workload),
TensorInfo({1, 3, 2, 3}, DataType::Float32),
TensorInfo({1, 3, 2, 3}, DataType::Float16));
335 static void RefCreateConvolution2dWorkloadTest(
DataLayout dataLayout = DataLayout::NCHW)
339 auto workload = CreateConvolution2dWorkloadTest<RefConvolution2dWorkload, DataType::Float32>
340 (factory, graph, dataLayout);
342 TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 3, 8, 16})
343 : std::initializer_list<unsigned int>({2, 8, 16, 3});
344 TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 2, 2, 10})
345 : std::initializer_list<unsigned int>({2, 2, 10, 2});
348 CheckInputOutput(std::move(workload),
355 RefCreateConvolution2dWorkloadTest(DataLayout::NCHW);
360 RefCreateConvolution2dWorkloadTest(DataLayout::NHWC);
363 static void RefCreateDepthwiseConvolutionWorkloadTest(
DataLayout dataLayout)
367 auto workload = CreateDepthwiseConvolution2dWorkloadTest<RefDepthwiseConvolution2dWorkload, DataType::Float32>
368 (factory, graph, dataLayout);
370 TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
371 : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
372 TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
373 : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
376 CheckInputOutput(std::move(workload),
383 RefCreateDepthwiseConvolutionWorkloadTest(DataLayout::NHWC);
386 template <
typename FullyConnectedWorkloadType, armnn::DataType DataType>
387 static void RefCreateFullyConnectedWorkloadTest()
391 auto workload = CreateFullyConnectedWorkloadTest<FullyConnectedWorkloadType, DataType>(factory, graph);
396 CheckInputOutput(std::move(workload),
403 RefCreateFullyConnectedWorkloadTest<RefFullyConnectedWorkload, armnn::DataType::Float32>();
408 RefCreateFullyConnectedWorkloadTest<RefFullyConnectedWorkload, armnn::DataType::QAsymmU8>();
413 RefCreateFullyConnectedWorkloadTest<RefFullyConnectedWorkload, armnn::DataType::QSymmS16>();
416 template <
typename NormalizationWorkloadType, armnn::DataType DataType>
417 static void RefCreateNormalizationWorkloadTest(
DataLayout dataLayout)
421 auto workload = CreateNormalizationWorkloadTest<NormalizationWorkloadType, DataType>(factory, graph, dataLayout);
428 case DataLayout::NHWC:
429 inputShape = { 3, 1, 5, 5 };
430 outputShape = { 3, 1, 5, 5 };
432 case DataLayout::NCHW:
434 inputShape = { 3, 5, 5, 1 };
435 outputShape = { 3, 5, 5, 1 };
445 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::Float32>(DataLayout::NCHW);
450 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::Float32>(DataLayout::NHWC);
455 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::QAsymmU8>(DataLayout::NCHW);
460 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::QAsymmU8>(DataLayout::NHWC);
465 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::QSymmS16>(DataLayout::NCHW);
470 RefCreateNormalizationWorkloadTest<RefNormalizationWorkload, armnn::DataType::QSymmS16>(DataLayout::NHWC);
473 template <
typename Pooling2dWorkloadType, armnn::DataType DataType>
474 static void RefCreatePooling2dWorkloadTest(
DataLayout dataLayout)
478 auto workload = CreatePooling2dWorkloadTest<Pooling2dWorkloadType, DataType>(factory, graph, dataLayout);
485 case DataLayout::NHWC:
486 inputShape = { 3, 5, 5, 2 };
487 outputShape = { 3, 2, 4, 2 };
489 case DataLayout::NCHW:
491 inputShape = { 3, 2, 5, 5 };
492 outputShape = { 3, 2, 2, 4 };
496 CheckInputOutput(std::move(workload),
503 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::Float32>(DataLayout::NCHW);
508 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::Float32>(DataLayout::NHWC);
513 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::QAsymmU8>(DataLayout::NCHW);
518 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::QAsymmU8>(DataLayout::NHWC);
523 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::QSymmS16>(DataLayout::NCHW);
528 RefCreatePooling2dWorkloadTest<RefPooling2dWorkload, armnn::DataType::QSymmS16>(DataLayout::NHWC);
531 template <
typename SoftmaxWorkloadType, armnn::DataType DataType>
532 static void RefCreateSoftmaxWorkloadTest()
536 auto workload = CreateSoftmaxWorkloadTest<SoftmaxWorkloadType, DataType>(factory, graph);
544 tensorInfo.SetQuantizationScale(1.f / 256);
548 tensorInfo.SetQuantizationOffset(-128);
549 tensorInfo.SetQuantizationScale(1.f / 256);
559 RefCreateSoftmaxWorkloadTest<RefSoftmaxWorkload, armnn::DataType::Float32>();
564 RefCreateSoftmaxWorkloadTest<RefSoftmaxWorkload, armnn::DataType::Float16>();
569 RefCreateSoftmaxWorkloadTest<RefSoftmaxWorkload, armnn::DataType::QAsymmU8>();
574 RefCreateSoftmaxWorkloadTest<RefSoftmaxWorkload, armnn::DataType::QSymmS16>();
577 template <
typename SplitterWorkloadType, armnn::DataType DataType>
578 static void RefCreateSplitterWorkloadTest()
582 auto workload = CreateSplitterWorkloadTest<SplitterWorkloadType, DataType>(factory, graph);
586 auto inputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[0]);
589 auto outputHandle0 = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
592 auto outputHandle1 = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[1]);
595 auto outputHandle2 = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[2]);
601 RefCreateSplitterWorkloadTest<RefSplitterWorkload, armnn::DataType::Float32>();
606 RefCreateSplitterWorkloadTest<RefSplitterWorkload, armnn::DataType::Float16>();
611 RefCreateSplitterWorkloadTest<RefSplitterWorkload, armnn::DataType::QAsymmU8>();
614 template <
typename SplitterWorkloadType,
typename ConcatWorkloadType, armnn::DataType DataType>
615 static void RefCreateSplitterConcatWorkloadTest()
625 auto workloads = CreateSplitterConcatWorkloadTest<SplitterWorkloadType, ConcatWorkloadType, DataType>
628 auto wlSplitter = std::move(workloads.first);
629 auto wlConcat = std::move(workloads.second);
642 bool validDataPointers = (sOut0 == mIn1) && (sOut1 == mIn0);
644 BOOST_TEST(validDataPointers);
649 RefCreateSplitterConcatWorkloadTest<RefSplitterWorkload, RefConcatWorkload, DataType::Float32>();
654 RefCreateSplitterConcatWorkloadTest<RefSplitterWorkload, RefConcatWorkload, DataType::Float16>();
659 RefCreateSplitterConcatWorkloadTest<RefSplitterWorkload, RefConcatWorkload, DataType::QAsymmU8>();
662 template <
typename SplitterWorkloadType,
typename ActivationWorkloadType, armnn::DataType DataType>
663 static void RefCreateSingleOutputMultipleInputsTest()
670 std::unique_ptr<SplitterWorkloadType> wlSplitter;
671 std::unique_ptr<ActivationWorkloadType> wlActiv0_0;
672 std::unique_ptr<ActivationWorkloadType> wlActiv0_1;
673 std::unique_ptr<ActivationWorkloadType> wlActiv1_0;
674 std::unique_ptr<ActivationWorkloadType> wlActiv1_1;
676 CreateSplitterMultipleInputsOneOutputWorkloadTest<SplitterWorkloadType,
677 ActivationWorkloadType,
DataType>(factory, graph, wlSplitter, wlActiv0_0, wlActiv0_1, wlActiv1_0, wlActiv1_1);
689 BOOST_TEST(activ0_0Im);
690 BOOST_TEST(activ0_1Im);
691 BOOST_TEST(activ1_0Im);
692 BOOST_TEST(activ1_1Im);
694 bool validDataPointers = (sOut0 == activ0_0Im) && (sOut0 == activ0_1Im) &&
695 (sOut1 == activ1_0Im) && (sOut1 == activ1_1Im);
697 BOOST_TEST(validDataPointers);
712 template <
typename ResizeBilinearWorkloadType, armnn::DataType DataType>
713 static void RefCreateResizeBilinearTest(
DataLayout dataLayout)
717 auto workload = CreateResizeBilinearWorkloadTest<ResizeBilinearWorkloadType, DataType>(factory, graph, dataLayout);
724 case DataLayout::NHWC:
725 inputShape = { 2, 4, 4, 3 };
726 outputShape = { 2, 2, 2, 3 };
728 case DataLayout::NCHW:
730 inputShape = { 2, 3, 4, 4 };
731 outputShape = { 2, 3, 2, 2 };
735 CheckInputOutput(std::move(workload),
742 RefCreateResizeBilinearTest<RefResizeWorkload, armnn::DataType::Float32>(DataLayout::NCHW);
747 RefCreateResizeBilinearTest<RefResizeWorkload, armnn::DataType::Float16>(DataLayout::NCHW);
752 RefCreateResizeBilinearTest<RefResizeWorkload, armnn::DataType::QAsymmU8>(DataLayout::NCHW);
757 RefCreateResizeBilinearTest<RefResizeWorkload, armnn::DataType::QSymmS16>(DataLayout::NCHW);
762 RefCreateResizeBilinearTest<RefResizeWorkload, armnn::DataType::Float32>(DataLayout::NHWC);
765 template <
typename BatchToSpaceNdWorkloadType, armnn::DataType DataType>
766 static void RefCreateBatchToSpaceNdTest()
771 auto workload = CreateBatchToSpaceNdWorkloadTest<BatchToSpaceNdWorkloadType, DataType>(factory, graph);
773 CheckInputOutput(std::move(workload),
780 RefCreateBatchToSpaceNdTest<RefBatchToSpaceNdWorkload, armnn::DataType::Float32>();
785 RefCreateBatchToSpaceNdTest<RefBatchToSpaceNdWorkload, armnn::DataType::Float16>();
790 RefCreateBatchToSpaceNdTest<RefBatchToSpaceNdWorkload, armnn::DataType::QAsymmU8>();
795 RefCreateBatchToSpaceNdTest<RefBatchToSpaceNdWorkload, armnn::DataType::QSymmS16>();
798 template <
typename L2NormalizationWorkloadType, armnn::DataType DataType>
799 static void RefCreateL2NormalizationTest(
DataLayout dataLayout)
804 CreateL2NormalizationWorkloadTest<L2NormalizationWorkloadType, DataType>(factory, graph, dataLayout);
811 case DataLayout::NHWC:
812 inputShape = { 5, 50, 67, 20 };
813 outputShape = { 5, 50, 67, 20 };
815 case DataLayout::NCHW:
817 inputShape = { 5, 20, 50, 67 };
818 outputShape = { 5, 20, 50, 67 };
828 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::Float32>(DataLayout::NCHW);
833 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::Float32>(DataLayout::NHWC);
838 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::QSymmS16>(DataLayout::NCHW);
843 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::QSymmS16>(DataLayout::NHWC);
848 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::QAsymmU8>(DataLayout::NCHW);
853 RefCreateL2NormalizationTest<RefL2NormalizationWorkload, armnn::DataType::QAsymmU8>(DataLayout::NHWC);
856 template <
typename ReshapeWorkloadType, armnn::DataType DataType>
857 static void RefCreateReshapeWorkloadTest()
861 auto workload = CreateReshapeWorkloadTest<ReshapeWorkloadType, DataType>(factory, graph);
872 RefCreateReshapeWorkloadTest<RefReshapeWorkload, armnn::DataType::Float32>();
877 RefCreateReshapeWorkloadTest<RefReshapeWorkload, armnn::DataType::QAsymmU8>();
882 RefCreateReshapeWorkloadTest<RefReshapeWorkload, armnn::DataType::QSymmS16>();
885 template <
typename ConcatWorkloadType, armnn::DataType DataType>
887 unsigned int concatAxis)
891 auto workload = CreateConcatWorkloadTest<ConcatWorkloadType, DataType>(factory, graph, outputShape, concatAxis);
893 CheckInputsOutput(std::move(workload),
901 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::Float32>({ 4, 3, 2, 5 }, 0);
906 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::Float16>({ 4, 3, 2, 5 }, 0);
911 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::QAsymmU8>({ 4, 3, 2, 5 }, 0);
916 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::QSymmS16>({ 4, 3, 2, 5 }, 0);
921 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::Float32>({ 2, 6, 2, 5 }, 1);
926 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::QAsymmU8>({ 2, 6, 2, 5 }, 1);
931 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::Float32>({ 2, 3, 4, 5 }, 2);
936 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::QAsymmU8>({ 2, 3, 4, 5 }, 2);
941 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::Float32>({ 2, 3, 2, 10 }, 3);
946 RefCreateConcatWorkloadTest<RefConcatWorkload, armnn::DataType::QAsymmU8>({ 2, 3, 2, 10 }, 3);
949 template <
typename ConstantWorkloadType, armnn::DataType DataType>
954 auto workload = CreateConstantWorkloadTest<ConstantWorkloadType, DataType>(factory, graph, outputShape);
957 auto queueDescriptor = workload->GetData();
958 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
964 RefCreateConstantWorkloadTest<RefConstantWorkload, armnn::DataType::QAsymmU8>({ 2, 3, 2, 10 });
969 RefCreateConstantWorkloadTest<RefConstantWorkload, armnn::DataType::QSymmS16>({ 2, 3, 2, 10 });
974 RefCreateConstantWorkloadTest<RefConstantWorkload, armnn::DataType::Float32>({ 2, 3, 2, 10 });
979 RefCreateConstantWorkloadTest<RefConstantWorkload, armnn::DataType::Signed32>({ 2, 3, 2, 10 });
989 auto workload = CreatePreluWorkloadTest<RefPreluWorkload>(factory,
997 auto queueDescriptor = workload->GetData();
998 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
999 BOOST_TEST((outputHandle->GetTensorInfo() ==
TensorInfo(outputShape, dataType)));
1004 RefCreatePreluWorkloadTest({ 1, 4, 1, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
armnn::DataType::Float32);
1009 RefCreatePreluWorkloadTest({ 1, 4, 1, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
armnn::DataType::Float16);
1014 RefCreatePreluWorkloadTest({ 1, 4, 1, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
armnn::DataType::QAsymmU8);
1019 RefCreatePreluWorkloadTest({ 1, 4, 1, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
armnn::DataType::QSymmS16);
1024 BOOST_CHECK_THROW(RefCreatePreluWorkloadTest({ 1, 4, 7, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
1031 BOOST_CHECK_THROW(RefCreatePreluWorkloadTest({ 1, 4, 7, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
1038 BOOST_CHECK_THROW(RefCreatePreluWorkloadTest({ 1, 4, 7, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
1045 BOOST_CHECK_THROW(RefCreatePreluWorkloadTest({ 1, 4, 7, 2 }, { 5, 4, 3, 1 }, { 5, 4, 3, 2 },
1050 template <
typename SpaceToDepthWorkloadType, armnn::DataType DataType>
1051 static void RefCreateSpaceToDepthWorkloadTest()
1056 auto workload = CreateSpaceToDepthWorkloadTest<SpaceToDepthWorkloadType, DataType>(factory, graph);
1058 CheckInputOutput(std::move(workload),
1065 RefCreateSpaceToDepthWorkloadTest<RefSpaceToDepthWorkload, armnn::DataType::Float32>();
1070 RefCreateSpaceToDepthWorkloadTest<RefSpaceToDepthWorkload, armnn::DataType::Float16>();
1075 RefCreateSpaceToDepthWorkloadTest<RefSpaceToDepthWorkload, armnn::DataType::QAsymmU8>();
1080 RefCreateSpaceToDepthWorkloadTest<RefSpaceToDepthWorkload, armnn::DataType::QSymmS16>();
1083 template <armnn::DataType DataType>
1087 unsigned int numInputs)
1091 auto workload = CreateStackWorkloadTest<RefStackWorkload, DataType>(factory,
1100 for (
unsigned int i = 0; i < numInputs; ++i)
1102 auto inputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[i]);
1105 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[0]);
1111 RefCreateStackWorkloadTest<armnn::DataType::Float32>({ 3, 4, 5 }, { 3, 4, 2, 5 }, 2, 2);
1116 RefCreateStackWorkloadTest<armnn::DataType::QAsymmU8>({ 3, 4, 5 }, { 3, 4, 2, 5 }, 2, 2);
1121 RefCreateStackWorkloadTest<armnn::DataType::QSymmS16>({ 3, 4, 5 }, { 3, 4, 2, 5 }, 2, 2);
1124 template <
typename QLstmWorkloadType>
1125 static void RefCreateQLstmWorkloadTest()
1130 auto workload = CreateQLstmWorkloadTest<QLstmWorkloadType>(factory, graph);
1139 auto inputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Inputs[0]);
1140 auto cellStateOutHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[1]);
1141 auto outputHandle = PolymorphicDowncast<RefTensorHandle*>(queueDescriptor.m_Outputs[2]);
1143 BOOST_TEST((inputHandle->GetTensorInfo() == inputInfo));
1144 BOOST_TEST((cellStateOutHandle->GetTensorInfo() == cellStateInfo));
1145 BOOST_TEST((outputHandle->GetTensorInfo() == outputInfo));
1150 RefCreateQLstmWorkloadTest<RefQLstmWorkload>();
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
This layer represents an addition operation.
BOOST_AUTO_TEST_SUITE_END()
This layer represents a subtraction operation.
This layer represents a division operation.
BOOST_AUTO_TEST_CASE(CreateActivationFloat32Workload)
void SetQuantizationOffset(int32_t offset)
This layer represents a multiplication operation.