From 93b622f96935e4d239104f6512499a57290da07f Mon Sep 17 00:00:00 2001 From: Matthew Bentham Date: Fri, 17 Jan 2020 09:36:49 +0000 Subject: Github #320 Add logging and error checking to SimpleSample These things are frequently asked questions, so I think it makes sense to add them to the basic sample. Signed-off-by: Matthew Bentham Change-Id: I17cacb37fbe87e2a8fb14e7b7e85ebc528575386 --- samples/SimpleSample.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/samples/SimpleSample.cpp b/samples/SimpleSample.cpp index ed7c0bfb08..5276d74a4d 100644 --- a/samples/SimpleSample.cpp +++ b/samples/SimpleSample.cpp @@ -2,8 +2,12 @@ // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // +#include +#include +#include +#include + #include -#include "armnn/ArmNN.hpp" /// A simple example of using the ArmNN SDK API. In this sample, the users single input number is multiplied by 1.0f /// using a fully connected layer with a single neuron to produce an output number that is the same as the input. @@ -15,6 +19,10 @@ int main() std::cout << "Please enter a number: " << std::endl; std::cin >> number; + // Turn on logging to standard output + // This is useful in this sample so that users can learn more about what is going on + armnn::ConfigureLogging(true, false, LogSeverity::Warning); + // Construct ArmNN network armnn::NetworkId networkIdentifier; INetworkPtr myNetwork = INetwork::Create(); @@ -47,6 +55,14 @@ int main() // Optimise ArmNN network armnn::IOptimizedNetworkPtr optNet = Optimize(*myNetwork, {Compute::CpuRef}, run->GetDeviceSpec()); + if (!optNet) + { + // This shouldn't happen for this simple sample, with reference backend. + // But in general usage Optimize could fail if the hardware at runtime cannot + // support the model that has been provided. + std::cerr << "Error: Failed to optimise the input network." << std::endl; + return 1; + } // Load graph into runtime run->LoadNetwork(networkIdentifier, std::move(optNet)); -- cgit v1.2.1