aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Monahan <david.monahan@arm.com>2020-02-26 10:24:03 +0000
committerDavid Monahan <david.monahan@arm.com>2020-03-03 07:26:24 +0000
commitb015e5db20e29825caefa05d828fbeed73119b19 (patch)
tree7c5814635aeeabff69f1595de7ea663b3ef58ff6
parent03fbeaf532f2575381edc2336f834973117f6e0f (diff)
downloadarmnn-b015e5db20e29825caefa05d828fbeed73119b19.tar.gz
Modifying the IBackendProfilingContext interface to return a bool on
EnableProfiling and adding error checking to the Runtime Invocation Signed-off-by: David Monahan <david.monahan@arm.com> Change-Id: I65b8bb16c6f1c7d668de31238ce0408a48974997
-rw-r--r--include/armnn/Exceptions.hpp6
-rw-r--r--include/armnn/backends/profiling/IBackendProfilingContext.hpp2
-rw-r--r--src/armnn/Runtime.cpp12
-rw-r--r--src/backends/backendsCommon/test/MockBackend.hpp6
4 files changed, 21 insertions, 5 deletions
diff --git a/include/armnn/Exceptions.hpp b/include/armnn/Exceptions.hpp
index 066f59f792..cb62079b76 100644
--- a/include/armnn/Exceptions.hpp
+++ b/include/armnn/Exceptions.hpp
@@ -137,6 +137,12 @@ class TimeoutException : public Exception
using Exception::Exception;
};
+class BackendProfilingException : public Exception
+{
+public:
+ using Exception::Exception;
+};
+
template <typename ExceptionType>
void ConditionalThrow(bool condition, const std::string& message)
{
diff --git a/include/armnn/backends/profiling/IBackendProfilingContext.hpp b/include/armnn/backends/profiling/IBackendProfilingContext.hpp
index 3f54d31961..063ebc946d 100644
--- a/include/armnn/backends/profiling/IBackendProfilingContext.hpp
+++ b/include/armnn/backends/profiling/IBackendProfilingContext.hpp
@@ -21,7 +21,7 @@ public:
virtual uint16_t RegisterCounters(uint16_t currentMaxGlobalCounterID) = 0;
virtual Optional<std::string> ActivateCounters(uint32_t capturePeriod, const std::vector<uint16_t>& counterIds) = 0;
virtual std::vector<Timestamp> ReportCounterValues() = 0;
- virtual void EnableProfiling(bool flag) = 0;
+ virtual bool EnableProfiling(bool flag) = 0;
};
using IBackendProfilingContextUniquePtr = std::unique_ptr<IBackendProfilingContext>;
diff --git a/src/armnn/Runtime.cpp b/src/armnn/Runtime.cpp
index c1416f94d7..b1017c58ed 100644
--- a/src/armnn/Runtime.cpp
+++ b/src/armnn/Runtime.cpp
@@ -192,8 +192,16 @@ Runtime::Runtime(const CreationOptions& options)
// Backends that don't support profiling will return a null profiling context.
if (profilingContext)
{
- // Pass the context onto the profiling service.
- armnn::profiling::ProfilingService::Instance().AddBackendProfilingContext(id, profilingContext);
+ // Enable profiling on the backend and assert that it returns true
+ if(profilingContext->EnableProfiling(true))
+ {
+ // Pass the context onto the profiling service.
+ armnn::profiling::ProfilingService::Instance().AddBackendProfilingContext(id, profilingContext);
+ }
+ else
+ {
+ throw BackendProfilingException("Unable to enable profiling on Backend Id: " + id.Get());
+ }
}
}
catch (const BackendUnavailableException&)
diff --git a/src/backends/backendsCommon/test/MockBackend.hpp b/src/backends/backendsCommon/test/MockBackend.hpp
index 3227ce52fc..6e415b9b52 100644
--- a/src/backends/backendsCommon/test/MockBackend.hpp
+++ b/src/backends/backendsCommon/test/MockBackend.hpp
@@ -88,8 +88,10 @@ public:
return { profiling::Timestamp{ timestamp, counterValues } };
}
- void EnableProfiling(bool)
- {}
+ bool EnableProfiling(bool)
+ {
+ return true;
+ }
private:
IBackendInternal::IBackendProfilingPtr m_BackendProfiling;