11 #include <boost/test/unit_test.hpp> 19 using namespace armnn;
24 BOOST_TEST((backendObjPtr !=
nullptr));
27 if (backendIds.find(
"MockRef") == backendIds.end())
29 std::string message =
"Cannot load MockRef";
67 OptimizedNetwork* optNetObjPtr = PolymorphicDowncast<OptimizedNetwork*>(optNet.get());
68 Graph& graph = optNetObjPtr->GetGraph();
88 std::string ignoredErrorMessage;
91 runtime->LoadNetwork(netId, std::move(optNet), ignoredErrorMessage, networkProperties);
94 std::vector<float> inputData0
96 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f, 6.0f
98 std::vector<float> inputData1
100 0.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f
102 std::vector<float> inputData2
104 12.0f, 11.0f, 10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f
107 std::vector<float> outputData(12);
109 std::vector<float> expectedOutput
111 11.0f, 9.0f, 7.0f, 5.0f, 3.0f, 1.0f, -1.0f, -3.0f, -5.0f, -7.0f, -9.0f, -11.0f
122 { 0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) }
125 runtime->GetProfiler(netId)->EnableProfiling(
true);
128 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
132 std::stringstream ss;
134 std::string dump = ss.str();
137 std::size_t found = dump.find(
"ImportMemGeneric");
138 BOOST_TEST(found != std::string::npos);
141 found = dump.find(
"SyncMemGeneric");
142 BOOST_TEST(found != std::string::npos);
145 found = dump.find(
"CopyMemGeneric");
146 BOOST_TEST(found == std::string::npos);
152 BOOST_TEST(outputData == expectedOutput);
157 using namespace armnn;
162 BOOST_TEST((backendObjPtr !=
nullptr));
165 if (backendIds.find(
"MockRef") == backendIds.end())
167 std::string message =
"Cannot load MockRef";
205 OptimizedNetwork* optNetObjPtr = PolymorphicDowncast<OptimizedNetwork*>(optNet.get());
206 Graph& graph = optNetObjPtr->GetGraph();
216 BOOST_TEST(
CheckOrder(graph, layer0, layer1));
217 BOOST_TEST(
CheckOrder(graph, layer1, layer2));
218 BOOST_TEST(
CheckOrder(graph, layer2, layer3));
219 BOOST_TEST(
CheckOrder(graph, layer3, layer4));
220 BOOST_TEST(
CheckOrder(graph, layer4, layer5));
224 std::string ignoredErrorMessage;
227 runtime->LoadNetwork(netId, std::move(optNet), ignoredErrorMessage, networkProperties);
230 std::vector<float> inputData0
232 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f, 6.0f
234 std::vector<float> inputData1
236 0.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f
239 std::vector<float> outputData(2);
241 std::vector<float> expectedOutput
253 { 0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) }
256 runtime->GetProfiler(netId)->EnableProfiling(
true);
259 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
263 std::stringstream ss;
265 std::string dump = ss.str();
268 std::size_t found = dump.find(
"CopyMemGeneric");
269 BOOST_TEST(found != std::string::npos);
272 found = dump.find(
"SyncMemGeneric");
273 BOOST_TEST(found != std::string::npos);
276 found = dump.find(
"ImportMemGeneric");
277 BOOST_TEST(found == std::string::npos);
283 BOOST_TEST(outputData == expectedOutput);
288 using namespace armnn;
293 BOOST_TEST((backendObjPtr !=
nullptr));
296 if (backendIds.find(
"MockRef") == backendIds.end())
298 std::string message =
"Cannot load MockRef";
336 OptimizedNetwork* optNetObjPtr = PolymorphicDowncast<OptimizedNetwork*>(optNet.get());
337 Graph& graph = optNetObjPtr->GetGraph();
348 BOOST_TEST(
CheckOrder(graph, layer0, layer1));
349 BOOST_TEST(
CheckOrder(graph, layer1, layer2));
350 BOOST_TEST(
CheckOrder(graph, layer2, layer3));
351 BOOST_TEST(
CheckOrder(graph, layer3, layer4));
352 BOOST_TEST(
CheckOrder(graph, layer4, layer5));
353 BOOST_TEST(
CheckOrder(graph, layer5, layer6));
357 std::string ignoredErrorMessage;
360 runtime->LoadNetwork(netId, std::move(optNet), ignoredErrorMessage, networkProperties);
363 std::vector<float> inputData0
365 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f, 0.0f
367 std::vector<float> inputData1
369 0.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f
371 std::vector<float> inputData2
373 12.0f, 11.0f, 10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f
376 std::vector<float> outputData(12);
378 std::vector<float> expectedOutput
380 13.0f, 11.0f, 11.0f, 9.0f, 7.0f, 7.0f, 7.0f, 5.0f, 5.0f, 3.0f, 3.0f, -5.0f
391 { 0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) }
394 runtime->GetProfiler(netId)->EnableProfiling(
true);
397 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
401 std::stringstream ss;
403 std::string dump = ss.str();
406 std::size_t found = dump.find(
"ImportMemGeneric");
407 BOOST_TEST(found != std::string::npos);
410 found = dump.find(
"SyncMemGeneric");
411 BOOST_TEST(found != std::string::npos);
414 found = dump.find(
"CopyMemGeneric");
415 BOOST_TEST(found == std::string::npos);
421 BOOST_TEST(outputData == expectedOutput);
426 using namespace armnn;
431 BOOST_TEST((backendObjPtr !=
nullptr));
434 if (backendIds.find(
"MockRef") == backendIds.end())
436 std::string message =
"Cannot load MockRef";
474 OptimizedNetwork* optNetObjPtr = PolymorphicDowncast<OptimizedNetwork*>(optNet.get());
475 Graph& graph = optNetObjPtr->GetGraph();
485 BOOST_TEST(
CheckOrder(graph, layer0, layer1));
486 BOOST_TEST(
CheckOrder(graph, layer1, layer2));
487 BOOST_TEST(
CheckOrder(graph, layer2, layer3));
488 BOOST_TEST(
CheckOrder(graph, layer3, layer4));
489 BOOST_TEST(
CheckOrder(graph, layer4, layer5));
493 std::string ignoredErrorMessage;
496 runtime->LoadNetwork(netId, std::move(optNet), ignoredErrorMessage, networkProperties);
499 std::vector<float> inputData0
501 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f
503 std::vector<float> inputData1
508 std::vector<float> outputData(2);
510 std::vector<float> expectedOutput
522 { 0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) }
525 runtime->GetProfiler(netId)->EnableProfiling(
true);
528 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
532 std::stringstream ss;
534 std::string dump = ss.str();
537 std::size_t found = dump.find(
"CopyMemGeneric");
538 BOOST_TEST(found != std::string::npos);
541 found = dump.find(
"SyncMemGeneric");
542 BOOST_TEST(found != std::string::npos);
545 found = dump.find(
"ImportMemGeneric");
546 BOOST_TEST(found == std::string::npos);
552 BOOST_TEST(outputData == expectedOutput);
557 using namespace armnn;
562 BOOST_TEST((backendObjPtr !=
nullptr));
565 if (backendIds.find(
"MockRef") == backendIds.end())
567 std::string message =
"Cannot load MockRef";
603 OptimizedNetwork* optNetObjPtr = PolymorphicDowncast<OptimizedNetwork*>(optNet.get());
604 Graph& graph = optNetObjPtr->GetGraph();
615 BOOST_TEST(
CheckOrder(graph, layer0, layer1));
616 BOOST_TEST(
CheckOrder(graph, layer1, layer2));
617 BOOST_TEST(
CheckOrder(graph, layer2, layer3));
618 BOOST_TEST(
CheckOrder(graph, layer3, layer4));
619 BOOST_TEST(
CheckOrder(graph, layer4, layer5));
620 BOOST_TEST(
CheckOrder(graph, layer5, layer6));
624 std::string ignoredErrorMessage;
627 runtime->LoadNetwork(netId, std::move(optNet), ignoredErrorMessage, networkProperties);
630 std::vector<float> inputData0
632 1.0f, 1.0f, 2.0f, 2.0f, 2.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f, 0.0f
634 std::vector<float> inputData1
636 0.0f, 1.0f, 1.0f, 2.0f, 3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 5.0f, 5.0f, 6.0f
638 std::vector<float> inputData2
640 12.0f, 11.0f, 10.0f, 9.0f, 8.0f, 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f
643 std::vector<float> outputData(12);
645 std::vector<float> expectedOutput
647 13.0f, 11.0f, 11.0f, 9.0f, 7.0f, 7.0f, 7.0f, 5.0f, 5.0f, 3.0f, 3.0f, -5.0f
658 { 0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data()) }
661 runtime->GetProfiler(netId)->EnableProfiling(
true);
664 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
668 std::stringstream ss;
670 std::string dump = ss.str();
673 std::size_t found = dump.find(
"CopyMemGeneric");
674 BOOST_TEST(found != std::string::npos);
677 found = dump.find(
"ImportMemGeneric");
678 BOOST_TEST(found == std::string::npos);
684 BOOST_TEST(outputData == expectedOutput);
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
static IRuntimePtr Create(const CreationOptions &options)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
BackendIdSet GetBackendIds() const
std::unordered_set< BackendId > BackendIdSet
armnn::Layer * GetFirstLayerWithName(armnn::Graph &graph, const std::string &name)
static ProfilerManager & GetInstance()
bool CheckOrder(const armnn::Graph &graph, const armnn::Layer *first, const armnn::Layer *second)
Checks that first comes before second in the order.
BOOST_AUTO_TEST_CASE(FallbackImportToCpuAcc)
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
BackendRegistry & BackendRegistryInstance()
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
Copyright (c) 2020 ARM Limited.
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
constexpr const char * MockImportBackendId()
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
std::vector< armnn::BackendId > defaultBackends
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
BOOST_AUTO_TEST_SUITE_END()
CPU Execution: NEON: ArmCompute.
armnn::IBackendInternalUniquePtr CreateBackendObject(const armnn::BackendId &backendId)
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
LayerType GetType() const
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
virtual int Connect(IInputSlot &destination)=0
A Pooling2dDescriptor for the Pooling2dLayer.
void Print(std::ostream &outStream) const override
Print stats for events in JSON Format to the given output stream.
static INetworkPtr Create(NetworkOptions networkOptions={})