aboutsummaryrefslogtreecommitdiff
path: root/ArmnnPreparedModel_1_2.cpp
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2019-07-12 16:44:21 +0100
committermike.kelly <mike.kelly@arm.com>2019-07-15 13:26:21 +0000
commit95fc0dd3aec034d6dbaa8bfac87bf590b05e9af7 (patch)
tree36678969c44d4b32b89334211eb98b0b958a1bea /ArmnnPreparedModel_1_2.cpp
parent86b36d455a41cfcf9b4938c67df143244a34b2f6 (diff)
downloadandroid-nn-driver-95fc0dd3aec034d6dbaa8bfac87bf590b05e9af7.tar.gz
IVGCVSW-3454 Fix VTS segfaults
* Replaced ArmnnBurstExecutorWithCache with call to ExecutionBurstServer. Signed-off-by: Mike Kelly <mike.kelly@arm.com> Change-Id: I87de34ade7417be78546a26f1f7946f178bfe994
Diffstat (limited to 'ArmnnPreparedModel_1_2.cpp')
-rw-r--r--ArmnnPreparedModel_1_2.cpp91
1 files changed, 1 insertions, 90 deletions
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
@@ -324,92 +324,6 @@ Return<void> ArmnnPreparedModel_1_2<HalVersion>::executeSynchronously(const Requ
}
template<typename HalVersion>
-class ArmnnBurstExecutorWithCache : public ExecutionBurstServer::IBurstExecutorWithCache
-{
-public:
- ArmnnBurstExecutorWithCache(ArmnnPreparedModel_1_2<HalVersion>* 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<ErrorStatus, hidl_vec<OutputShape>, Timing> execute(
- const Request& request, const std::vector<int>& slots,
- MeasureTiming measure) override {
- ALOGV("ArmnnPreparedModel_1_2::BurstExecutorWithCache::execute");
- TimePoint driverStart, driverEnd, deviceStart, deviceEnd;
-
- if (measure == MeasureTiming::YES)
- {
- driverStart = Now();
- }
- hidl_vec<hidl_memory> pools(slots.size());
-
- for (int slot : slots)
- {
- if (!isCacheEntryPresent(slot))
- {
- ALOGE("ArmnnPreparedModel_1_2::BurstExecutorWithCache::no cache entry present");
- return std::tuple<ErrorStatus, hidl_vec<OutputShape>, 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<OutputShape> returnedOutputShapes;
- Timing returnedTiming;
-
- auto cb = [&returnedStatus, &returnedOutputShapes, &returnedTiming](ErrorStatus status,
- const hidl_vec<OutputShape>& outputShapes,
- const Timing& timing)
- {
- returnedStatus = status;
- returnedOutputShapes = outputShapes;
- returnedTiming = timing;
- };
-
- // Execute
- ALOGV("ArmnnPreparedModel_1_2::BurstExecutorWithCache executing");
- Return<void> ret = m_PreparedModel->executeSynchronously(fullRequest, measure, cb);
-
- if (!ret.isOk() || returnedStatus != ErrorStatus::NONE)
- {
- ALOGE("ArmnnPreparedModel_1_2::BurstExecutorWithCache::error executing");
- return std::tuple<ErrorStatus, hidl_vec<OutputShape>, Timing>(returnedStatus, {}, returnedTiming);
- }
-
- return std::tuple<ErrorStatus, hidl_vec<OutputShape>, Timing>(returnedStatus,
- std::move(returnedOutputShapes),
- returnedTiming);
- }
-
-private:
- Model m_Model;
- ArmnnPreparedModel_1_2<HalVersion>* m_PreparedModel;
- std::map<int, hidl_memory> m_MemoryCache;
-};
-
-template<typename HalVersion>
Return<void> ArmnnPreparedModel_1_2<HalVersion>::configureExecutionBurst(
const sp<V1_2::IBurstCallback>& callback,
const MQDescriptorSync<V1_2::FmqRequestDatum>& requestChannel,
@@ -417,10 +331,7 @@ Return<void> ArmnnPreparedModel_1_2<HalVersion>::configureExecutionBurst(
V1_2::IPreparedModel::configureExecutionBurst_cb cb)
{
ALOGV("ArmnnPreparedModel_1_2::configureExecutionBurst");
- const std::shared_ptr<ArmnnBurstExecutorWithCache<HalVersion>> executorWithCache =
- std::make_shared<ArmnnBurstExecutorWithCache<HalVersion>>(this);
- const sp<V1_2::IBurstContext> burst = ExecutionBurstServer::create(
- callback, requestChannel, resultChannel, executorWithCache);
+ const sp<V1_2::IBurstContext> burst = ExecutionBurstServer::create(callback, requestChannel, resultChannel, this);
if (burst == nullptr)
{