From 65c42dc4d68ac163b77a3139feee3e7d4530b5c5 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Mon, 22 Jul 2019 14:06:00 +0100 Subject: IVGCVSW-3463 Fix Hal 1.2 Dynamic Output Shape VTS test failures *Updating ArmnnPreparedModel_1_2 to work with output shapes and timing. Change-Id: I06c4ecaf1e2c36ef77a0731ece4885fc3997cd3b Signed-off-by: Sadik Armagan Signed-off-by: Mike Kelly --- ArmnnPreparedModel_1_2.hpp | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'ArmnnPreparedModel_1_2.hpp') diff --git a/ArmnnPreparedModel_1_2.hpp b/ArmnnPreparedModel_1_2.hpp index 4e883b6b..b97895e8 100644 --- a/ArmnnPreparedModel_1_2.hpp +++ b/ArmnnPreparedModel_1_2.hpp @@ -19,6 +19,18 @@ namespace armnn_driver { +typedef std::function outputShapes, + const ::android::hardware::neuralnetworks::V1_2::Timing& timing, + std::string callingFunction)> armnnExecuteCallback_1_2; + +struct ArmnnCallback_1_2 +{ + armnnExecuteCallback_1_2 callback; + TimePoint driverStart; + MeasureTiming measureTiming; +}; + template class ArmnnPreparedModel_1_2 : public V1_2::IPreparedModel { @@ -34,7 +46,7 @@ public: virtual ~ArmnnPreparedModel_1_2(); virtual Return execute(const Request& request, - const ::android::sp& callback) override; + const sp& callback) override; virtual Return execute_1_2(const Request& request, MeasureTiming measure, const sp& callback) override; @@ -53,28 +65,29 @@ public: void ExecuteGraph(std::shared_ptr>& pMemPools, std::shared_ptr& pInputTensors, std::shared_ptr& pOutputTensors, - const ::android::sp& callback); + ArmnnCallback_1_2 callbackDescriptor); /// Executes this model with dummy inputs (e.g. all zeroes). /// \return false on failure, otherwise true bool ExecuteWithDummyInputs(); private: - template - Return Execute(const Request &request, const sp &callback); + Return Execute(const Request& request, + MeasureTiming measureTiming, + armnnExecuteCallback_1_2 callback); template void DumpTensorsIfRequired(char const* tensorNamePrefix, const TensorBindingCollection& tensorBindings); - armnn::NetworkId m_NetworkId; - armnn::IRuntime* m_Runtime; - V1_2::Model m_Model; + armnn::NetworkId m_NetworkId; + armnn::IRuntime* m_Runtime; + V1_2::Model m_Model; // There must be a single RequestThread for all ArmnnPreparedModel objects to ensure serial execution of workloads // It is specific to this class, so it is declared as static here - static RequestThread m_RequestThread; - uint32_t m_RequestCount; - const std::string& m_RequestInputsAndOutputsDumpDir; - const bool m_GpuProfilingEnabled; + static RequestThread m_RequestThread; + uint32_t m_RequestCount; + const std::string& m_RequestInputsAndOutputsDumpDir; + const bool m_GpuProfilingEnabled; }; } -- cgit v1.2.1