From: Kamil Magierski Date: Tue, 22 Sep 2020 15:14:20 +0000 (+0200) Subject: [GNA] Fix sporadic failures in IE tests (#2336) X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4ac8ac943bc1f8647936ec251bbf73e5d095e3de;p=platform%2Fupstream%2Fdldt.git [GNA] Fix sporadic failures in IE tests (#2336) * [GNA] Fix sporadic failures in IE tests review comments impl * [GNA] fix GNA1 segfault * [GNA] GNA1 build fixes --- diff --git a/inference-engine/src/gna_plugin/gna_device.cpp b/inference-engine/src/gna_plugin/gna_device.cpp index d01e84d..52fe936 100644 --- a/inference-engine/src/gna_plugin/gna_device.cpp +++ b/inference-engine/src/gna_plugin/gna_device.cpp @@ -80,6 +80,9 @@ uint32_t GNADeviceHelper::propagate(const uint32_t requestConfigId, Gna2Accelera checkGna2Status(status1); const auto status2 = Gna2RequestEnqueue(requestConfigId, &reqId); checkGna2Status(status2); + + unwaitedRequestIds.push_back(reqId); + return reqId; } @@ -276,6 +279,7 @@ bool GNADeviceHelper::wait(uint32_t reqId, int64_t millisTimeout) { return false; } checkGna2Status(status); + unwaitedRequestIds.erase(std::remove(unwaitedRequestIds.begin(), unwaitedRequestIds.end(), reqId)); #else if (isPerformanceMeasuring) { nGNAStatus = GNAWaitPerfRes(nGNAHandle, millisTimeout, reqId, &nGNAPerfResults); @@ -376,6 +380,14 @@ void GNADeviceHelper::close() { GNADeviceClose(nGNAHandle); nGNAHandle = 0; #else + auto requestsToClose = unwaitedRequestIds; + for (auto requestId : requestsToClose) { + try { + wait(requestId); + } catch (...) { + gnawarn() << "Request with Id " << requestId << " was not awaited successfully"; + } + } const auto status = Gna2DeviceClose(nGnaDeviceIndex); checkGna2Status(status); #endif diff --git a/inference-engine/src/gna_plugin/gna_device.hpp b/inference-engine/src/gna_plugin/gna_device.hpp index 8c803bb..1a42922 100644 --- a/inference-engine/src/gna_plugin/gna_device.hpp +++ b/inference-engine/src/gna_plugin/gna_device.hpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -49,7 +50,7 @@ class GNADeviceHelper { uint64_t instrumentationResults[TotalGna2InstrumentationPoints] = {}; uint64_t instrumentationTotal[TotalGna2InstrumentationPoints] = {}; uint32_t instrumentationConfigId = 0; - + std::vector unwaitedRequestIds; #define MAX_TIMEOUT 500000 #endif bool isPerformanceMeasuring = false;