diff options
author | Kevin May <kevin.may@arm.com> | 2022-10-05 14:42:55 +0100 |
---|---|---|
committer | Kevin May <kevin.may@arm.com> | 2022-10-11 10:53:06 +0000 |
commit | 251fd955c18434b7aa3f486374c4f1a15bbd160e (patch) | |
tree | c094dfe973f18ea16b3726b91767c3fcbf363dad /src/backends | |
parent | e497ed17463820eb33ca051254efd08c892325b5 (diff) | |
download | armnn-251fd955c18434b7aa3f486374c4f1a15bbd160e.tar.gz |
IVGCVSW-7222 Fix incorrect kernel measurements in profiling output
* Some CL kernels are not run after the first inference and this breaks
the profiler which is expecting a measurement for every kernel each run
* Add a function HasKernelMeasurements() to ascertain if the Event is
returning kernel measurements and if so insert 0.0 values for any missing
kernel measurements.
* Fix ExecuteNetwork to only print a json object after all inferences
have completed
Signed-off-by: Kevin May <kevin.may@arm.com>
Change-Id: I99f2bb0db847f5a52ab4c5705b072155c6b6f333
Diffstat (limited to 'src/backends')
-rw-r--r-- | src/backends/cl/OpenClTimer.cpp | 5 | ||||
-rw-r--r-- | src/backends/cl/OpenClTimer.hpp | 3 | ||||
-rw-r--r-- | src/backends/neon/NeonTimer.cpp | 5 | ||||
-rw-r--r-- | src/backends/neon/NeonTimer.hpp | 2 |
4 files changed, 15 insertions, 0 deletions
diff --git a/src/backends/cl/OpenClTimer.cpp b/src/backends/cl/OpenClTimer.cpp index a4958c10e0..a39377505d 100644 --- a/src/backends/cl/OpenClTimer.cpp +++ b/src/backends/cl/OpenClTimer.cpp @@ -85,6 +85,11 @@ void OpenClTimer::Stop() CLSymbols::get().clEnqueueNDRangeKernel_ptr = m_OriginalEnqueueFunction; } +bool OpenClTimer::HasKernelMeasurements() const +{ + return m_Kernels.size() > 0; +} + std::vector<Measurement> OpenClTimer::GetMeasurements() const { std::vector<Measurement> measurements; diff --git a/src/backends/cl/OpenClTimer.hpp b/src/backends/cl/OpenClTimer.hpp index 5539e885d8..e517fa4b8a 100644 --- a/src/backends/cl/OpenClTimer.hpp +++ b/src/backends/cl/OpenClTimer.hpp @@ -29,6 +29,9 @@ public: /// Stop the OpenCl timer void Stop() override; + /// Return true if this Instrument has kernels for recording measurements + bool HasKernelMeasurements() const override; + /// Get the name of the timer /// \return Name of the timer const char* GetName() const override { return "OpenClKernelTimer"; } diff --git a/src/backends/neon/NeonTimer.cpp b/src/backends/neon/NeonTimer.cpp index a7d3032b13..dbb1503d24 100644 --- a/src/backends/neon/NeonTimer.cpp +++ b/src/backends/neon/NeonTimer.cpp @@ -42,6 +42,11 @@ void NeonTimer::Stop() m_RealScheduler = nullptr; } +bool NeonTimer::HasKernelMeasurements() const +{ + return m_Kernels.size() > 0; +} + std::vector<Measurement> NeonTimer::GetMeasurements() const { std::vector<Measurement> measurements = m_Kernels; diff --git a/src/backends/neon/NeonTimer.hpp b/src/backends/neon/NeonTimer.hpp index 31d3e85a7c..f2be7dc326 100644 --- a/src/backends/neon/NeonTimer.hpp +++ b/src/backends/neon/NeonTimer.hpp @@ -30,6 +30,8 @@ public: void Stop() override; + bool HasKernelMeasurements() const override; + std::vector<Measurement> GetMeasurements() const override; const char* GetName() const override; |