From 95fc0dd3aec034d6dbaa8bfac87bf590b05e9af7 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Fri, 12 Jul 2019 16:44:21 +0100 Subject: IVGCVSW-3454 Fix VTS segfaults * Replaced ArmnnBurstExecutorWithCache with call to ExecutionBurstServer. Signed-off-by: Mike Kelly Change-Id: I87de34ade7417be78546a26f1f7946f178bfe994 --- ArmnnPreparedModel_1_2.cpp | 91 +--------------------------------------------- 1 file changed, 1 insertion(+), 90 deletions(-) (limited to 'ArmnnPreparedModel_1_2.cpp') diff --git a/ArmnnPreparedModel_1_2.cpp b/ArmnnPreparedModel_1_2.cpp index 74da4734..f6b44621 100644 --- a/ArmnnPreparedModel_1_2.cpp +++ b/ArmnnPreparedModel_1_2.cpp @@ -323,92 +323,6 @@ Return ArmnnPreparedModel_1_2::executeSynchronously(const Requ return Void(); } -template -class ArmnnBurstExecutorWithCache : public ExecutionBurstServer::IBurstExecutorWithCache -{ -public: - ArmnnBurstExecutorWithCache(ArmnnPreparedModel_1_2* preparedModel) - : m_PreparedModel(preparedModel) - {} - - bool isCacheEntryPresent(int slot) const override - { - const auto it = m_MemoryCache.find(slot); - return (it != m_MemoryCache.end()) && it->second.valid(); - } - - void addCacheEntry(const hidl_memory& memory, int slot) override - { - m_MemoryCache[slot] = memory; - } - - void removeCacheEntry(int slot) override - { - m_MemoryCache.erase(slot); - } - - std::tuple, Timing> execute( - const Request& request, const std::vector& slots, - MeasureTiming measure) override { - ALOGV("ArmnnPreparedModel_1_2::BurstExecutorWithCache::execute"); - TimePoint driverStart, driverEnd, deviceStart, deviceEnd; - - if (measure == MeasureTiming::YES) - { - driverStart = Now(); - } - hidl_vec pools(slots.size()); - - for (int slot : slots) - { - if (!isCacheEntryPresent(slot)) - { - ALOGE("ArmnnPreparedModel_1_2::BurstExecutorWithCache::no cache entry present"); - return std::tuple, Timing>(ErrorStatus::INVALID_ARGUMENT, - {}, - g_NoTiming); - } - pools[slot] = m_MemoryCache[slot]; - } - - Request fullRequest = request; - fullRequest.pools = std::move(pools); - - // Setup callback - ErrorStatus returnedStatus = ErrorStatus::GENERAL_FAILURE; - hidl_vec returnedOutputShapes; - Timing returnedTiming; - - auto cb = [&returnedStatus, &returnedOutputShapes, &returnedTiming](ErrorStatus status, - const hidl_vec& outputShapes, - const Timing& timing) - { - returnedStatus = status; - returnedOutputShapes = outputShapes; - returnedTiming = timing; - }; - - // Execute - ALOGV("ArmnnPreparedModel_1_2::BurstExecutorWithCache executing"); - Return ret = m_PreparedModel->executeSynchronously(fullRequest, measure, cb); - - if (!ret.isOk() || returnedStatus != ErrorStatus::NONE) - { - ALOGE("ArmnnPreparedModel_1_2::BurstExecutorWithCache::error executing"); - return std::tuple, Timing>(returnedStatus, {}, returnedTiming); - } - - return std::tuple, Timing>(returnedStatus, - std::move(returnedOutputShapes), - returnedTiming); - } - -private: - Model m_Model; - ArmnnPreparedModel_1_2* m_PreparedModel; - std::map m_MemoryCache; -}; - template Return ArmnnPreparedModel_1_2::configureExecutionBurst( const sp& callback, @@ -417,10 +331,7 @@ Return ArmnnPreparedModel_1_2::configureExecutionBurst( V1_2::IPreparedModel::configureExecutionBurst_cb cb) { ALOGV("ArmnnPreparedModel_1_2::configureExecutionBurst"); - const std::shared_ptr> executorWithCache = - std::make_shared>(this); - const sp burst = ExecutionBurstServer::create( - callback, requestChannel, resultChannel, executorWithCache); + const sp burst = ExecutionBurstServer::create(callback, requestChannel, resultChannel, this); if (burst == nullptr) { -- cgit v1.2.1