Do not call releaseMemoryResource on ignored slot in NN VTS

For IBurst, a slot value of -1 indicates the slot should be ignored.
However, GeneratedTestHarness still attempts to call
IBurst::releaseMemoryResource on ignored slots. Instead, we should skip
releasing any ignored slots.

Bug: 230103381
Test: mma
Test: VtsHalNeuralnetworksTargetTest
Test: presubmit
Change-Id: I82e538aa0fd9e8ecc077df1c1ceece46a6166e67
Merged-In: I82e538aa0fd9e8ecc077df1c1ceece46a6166e67
This commit is contained in:
Michael Butler
2022-04-26 12:42:22 -07:00
parent 5b64e55e6e
commit 39dac4dee4

View File

@@ -659,6 +659,7 @@ void EvaluatePreparedModel(const std::shared_ptr<IDevice>& device,
ASSERT_NE(nullptr, burst.get());
// associate a unique slot with each memory pool
constexpr int64_t kIgnoreSlot = -1;
int64_t currentSlot = 0;
std::vector<int64_t> slots;
slots.reserve(request.pools.size());
@@ -667,7 +668,7 @@ void EvaluatePreparedModel(const std::shared_ptr<IDevice>& device,
slots.push_back(currentSlot++);
} else {
EXPECT_EQ(pool.getTag(), RequestMemoryPool::Tag::token);
slots.push_back(-1);
slots.push_back(kIgnoreSlot);
}
}
@@ -698,8 +699,10 @@ void EvaluatePreparedModel(const std::shared_ptr<IDevice>& device,
// Mark each slot as unused after the execution. This is unnecessary because the
// burst is freed after this scope ends, but this is here to test the functionality.
for (int64_t slot : slots) {
ret = burst->releaseMemoryResource(slot);
ASSERT_TRUE(ret.isOk()) << ret.getDescription();
if (slot != kIgnoreSlot) {
ret = burst->releaseMemoryResource(slot);
ASSERT_TRUE(ret.isOk()) << ret.getDescription();
}
}
break;